mailgun-ruby 1.4.1 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/README.md +1 -1
  4. data/Rakefile +5 -3
  5. data/docs/AnalyticsTags.md +63 -0
  6. data/lib/mailgun/address.rb +5 -5
  7. data/lib/mailgun/chains.rb +2 -3
  8. data/lib/mailgun/client.rb +47 -51
  9. data/lib/mailgun/domains/domains.rb +7 -8
  10. data/lib/mailgun/events/events.rb +4 -3
  11. data/lib/mailgun/exceptions/exceptions.rb +12 -15
  12. data/lib/mailgun/helpers/api_version_checker.rb +6 -1
  13. data/lib/mailgun/lists/opt_in_handler.rb +4 -6
  14. data/lib/mailgun/logs/logs.rb +4 -2
  15. data/lib/mailgun/messages/batch_message.rb +8 -9
  16. data/lib/mailgun/messages/message_builder.rb +36 -24
  17. data/lib/mailgun/metrics/metrics.rb +6 -4
  18. data/lib/mailgun/response.rb +11 -9
  19. data/lib/mailgun/subaccounts/subaccounts.rb +13 -8
  20. data/lib/mailgun/suppressions.rb +36 -43
  21. data/lib/mailgun/tags/analytics_tags.rb +33 -2
  22. data/lib/mailgun/tags/tags.rb +25 -17
  23. data/lib/mailgun/templates/templates.rb +40 -29
  24. data/lib/mailgun/version.rb +3 -1
  25. data/lib/mailgun/webhooks/webhooks.rb +22 -19
  26. data/lib/mailgun-ruby.rb +2 -0
  27. data/lib/mailgun.rb +4 -4
  28. data/lib/railgun/attachment.rb +9 -14
  29. data/lib/railgun/errors.rb +2 -3
  30. data/lib/railgun/mailer.rb +35 -39
  31. data/lib/railgun/railtie.rb +2 -0
  32. data/lib/railgun.rb +2 -0
  33. data/mailgun.gemspec +12 -11
  34. data/spec/integration/analytics_tags_spec.rb +54 -0
  35. data/spec/integration/bounces_spec.rb +12 -11
  36. data/spec/integration/campaign_spec.rb +20 -18
  37. data/spec/integration/complaints_spec.rb +8 -6
  38. data/spec/integration/domains_spec.rb +6 -6
  39. data/spec/integration/email_validation_spec.rb +35 -34
  40. data/spec/integration/events_spec.rb +7 -5
  41. data/spec/integration/list_members_spec.rb +27 -26
  42. data/spec/integration/list_spec.rb +22 -21
  43. data/spec/integration/logs_spec.rb +48 -46
  44. data/spec/integration/mailer_spec.rb +7 -3
  45. data/spec/integration/mailgun_spec.rb +82 -90
  46. data/spec/integration/metrics_spec.rb +130 -130
  47. data/spec/integration/routes_spec.rb +41 -40
  48. data/spec/integration/stats_spec.rb +4 -2
  49. data/spec/integration/subaccounts_spec.rb +9 -10
  50. data/spec/integration/suppressions_spec.rb +21 -20
  51. data/spec/integration/templates_spec.rb +14 -12
  52. data/spec/integration/unsubscribes_spec.rb +8 -6
  53. data/spec/integration/webhook_spec.rb +13 -12
  54. data/spec/spec_helper.rb +8 -8
  55. data/spec/unit/connection/test_client.rb +61 -55
  56. data/spec/unit/events/events_spec.rb +25 -22
  57. data/spec/unit/exceptions/exceptions_spec.rb +8 -7
  58. data/spec/unit/lists/opt_in_handler_spec.rb +8 -6
  59. data/spec/unit/mailgun_spec.rb +64 -63
  60. data/spec/unit/messages/batch_message_spec.rb +15 -15
  61. data/spec/unit/messages/message_builder_spec.rb +98 -94
  62. data/spec/unit/railgun/content_type_spec.rb +24 -23
  63. data/spec/unit/railgun/mailer_spec.rb +58 -58
  64. data/vcr_cassettes/analytics_tags.yml +187 -0
  65. metadata +49 -33
  66. data/.rubocop.yml +0 -8
  67. data/.rubocop_todo.yml +0 -22
@@ -1,26 +1,28 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'Mailgun instantiation' do
4
6
  it 'instantiates an HttpClient object' do
5
- expect {@mg_obj = Mailgun::UnitClient.new("messages")}.not_to raise_error
7
+ expect { @mg_obj = Mailgun::UnitClient.new('messages') }.not_to raise_error
6
8
  end
7
9
  end
8
10
 
9
11
  describe 'The method send_message()' do
10
12
  before(:each) do
11
- @mg_obj = Mailgun::UnitClient.new("messages")
12
- @domain = "test.com"
13
- @list_address = "mylist@test.com"
14
- @member_address = "subscribee@test.com"
13
+ @mg_obj = Mailgun::UnitClient.new('messages')
14
+ @domain = 'test.com'
15
+ @list_address = 'mylist@test.com'
16
+ @member_address = 'subscribee@test.com'
15
17
  end
16
18
 
17
19
  it 'accepts only specific data types' do
18
- @mb_obj = Mailgun::MessageBuilder.new()
20
+ @mb_obj = Mailgun::MessageBuilder.new
19
21
  @mh_obj = {}
20
22
 
21
- expect {@mg_obj.send_message("test.com", "incorrect data")}.to raise_error Mailgun::ParameterError
22
- expect {@mg_obj.send_message("test.com", @mb_obj)}.not_to raise_error
23
- expect {@mg_obj.send_message("test.com", @mh_obj)}.not_to raise_error
23
+ expect { @mg_obj.send_message('test.com', 'incorrect data') }.to raise_error Mailgun::ParameterError
24
+ expect { @mg_obj.send_message('test.com', @mb_obj) }.not_to raise_error
25
+ expect { @mg_obj.send_message('test.com', @mh_obj) }.not_to raise_error
24
26
  end
25
27
 
26
28
  it 'sends a message' do
@@ -28,12 +30,12 @@ describe 'The method send_message()' do
28
30
  'to' => 'bob@example.com',
29
31
  'subject' => 'Test',
30
32
  'text' => 'Test Data' }
31
- result = @mg_obj.send_message("testdomain.com", data)
33
+ result = @mg_obj.send_message('testdomain.com', data)
32
34
 
33
35
  result.to_h!
34
36
 
35
- expect(result.body).to include("message")
36
- expect(result.body).to include("id")
37
+ expect(result.body).to include('message')
38
+ expect(result.body).to include('id')
37
39
  end
38
40
 
39
41
  it 'opens the message MIME and sends the MIME message.' do
@@ -42,119 +44,118 @@ describe 'The method send_message()' do
42
44
  'message' => 'Sample Data/mime.txt',
43
45
  'from' => 'joe@test.com'
44
46
  }
45
- result = @mg_obj.send_message("testdomain.com", data)
47
+ result = @mg_obj.send_message('testdomain.com', data)
46
48
 
47
49
  result.to_h!
48
50
 
49
- expect(result.body).to include("message")
50
- expect(result.body).to include("id")
51
+ expect(result.body).to include('message')
52
+ expect(result.body).to include('id')
51
53
  end
52
54
 
53
55
  context 'when domain is missing' do
54
56
  it 'shows failure message' do
55
- expect(@mg_obj).to receive(:fail)
57
+ expect(@mg_obj).to receive(:raise)
56
58
  @mg_obj.send_message(nil, {})
57
59
  end
58
60
  end
59
61
 
60
62
  context 'when to is missing' do
61
63
  it 'shows failure message' do
62
- data = {
63
- 'to' => '',
64
- 'message' => 'Sample Data/mime.txt',
65
- 'from' => 'joe@test.com'
66
- }
67
- expect(@mg_obj).to receive(:fail)
68
- @mg_obj.send_message("testdomain.com", data)
64
+ data = {
65
+ 'to' => '',
66
+ 'message' => 'Sample Data/mime.txt',
67
+ 'from' => 'joe@test.com'
68
+ }
69
+ expect(@mg_obj).to receive(:raise)
70
+ @mg_obj.send_message('testdomain.com', data)
69
71
  end
70
72
  end
71
73
  end
72
74
 
73
75
  describe 'The method post()' do
74
76
  before(:each) do
75
- @mg_obj = Mailgun::UnitClient.new("messages")
76
- @domain = "test.com"
77
+ @mg_obj = Mailgun::UnitClient.new('messages')
78
+ @domain = 'test.com'
77
79
  end
78
80
  it 'in this case, sends a simple message.' do
79
- data = {'from' => 'joe@test.com',
80
- 'to' => 'bob@example.com',
81
- 'subject' => 'Test',
82
- 'text' => 'Test Data'}
81
+ data = { 'from' => 'joe@test.com',
82
+ 'to' => 'bob@example.com',
83
+ 'subject' => 'Test',
84
+ 'text' => 'Test Data' }
83
85
  result = @mg_obj.post("#{@domain}/messages", data)
84
86
 
85
87
  result.to_h!
86
88
 
87
- expect(result.body).to include("message")
88
- expect(result.body).to include("id")
89
+ expect(result.body).to include('message')
90
+ expect(result.body).to include('id')
89
91
  end
90
92
 
91
93
  context 'when Unknown API error is raised' do
92
94
  before do
93
- allow(Mailgun::Response).to receive(:new).and_raise(StandardError, "message")
95
+ allow(Mailgun::Response).to receive(:new).and_raise(StandardError, 'message')
94
96
  allow(JSON).to receive(:parse).and_raise('Unknown')
95
97
  end
96
98
 
97
99
  it 'adds Unknown API error to message' do
98
- data = {'from' => 'joe@test.com',
99
- 'to' => 'bob@example.com',
100
- 'subject' => 'Test',
101
- 'text' => 'Test Data'}
100
+ data = { 'from' => 'joe@test.com',
101
+ 'to' => 'bob@example.com',
102
+ 'subject' => 'Test',
103
+ 'text' => 'Test Data' }
102
104
  @mg_obj.post("#{@domain}/messages", data)
103
- rescue Mailgun::CommunicationError => err
104
- expect(err.message).to eq('message: Unknown API error')
105
+ rescue Mailgun::CommunicationError => e
106
+ expect(e.message).to eq('message: Unknown API error')
105
107
  else
106
- fail
108
+ raise
107
109
  end
108
110
  end
109
111
  end
110
112
 
111
113
  describe 'The method put()' do
112
114
  before(:each) do
113
- @mg_obj = Mailgun::UnitClient.new("lists")
114
- @domain = "test.com"
115
- @list_address = "mylist@test.com"
116
- @member_address = "subscribee@test.com"
115
+ @mg_obj = Mailgun::UnitClient.new('lists')
116
+ @domain = 'test.com'
117
+ @list_address = 'mylist@test.com'
118
+ @member_address = 'subscribee@test.com'
117
119
  end
118
120
 
119
121
  it 'in this case, updates a member with the attributes in data.' do
120
- data = {'subscribed' => false,
121
- 'name' => 'Foo Bar'}
122
+ data = { 'subscribed' => false,
123
+ 'name' => 'Foo Bar' }
122
124
  result = @mg_obj.put("lists/#{@list_address}/members#{@member_address}", data)
123
125
 
124
126
  result.to_h!
125
127
 
126
- expect(result.body).to include("member")
127
- expect(result.body["member"]).to include("vars")
128
- expect(result.body["member"]["vars"]).to include("age")
129
- expect(result.body["member"]).to include("name")
130
- expect(result.body["member"]).to include("subscribed")
131
- expect(result.body["member"]).to include("address")
132
- expect(result.body).to include("message")
128
+ expect(result.body).to include('member')
129
+ expect(result.body['member']).to include('vars')
130
+ expect(result.body['member']['vars']).to include('age')
131
+ expect(result.body['member']).to include('name')
132
+ expect(result.body['member']).to include('subscribed')
133
+ expect(result.body['member']).to include('address')
134
+ expect(result.body).to include('message')
133
135
  end
134
-
135
136
  end
136
137
 
137
138
  describe 'The method get()' do
138
139
  before(:each) do
139
- @mg_obj = Mailgun::UnitClient.new("bounces")
140
- @domain = "test.com"
140
+ @mg_obj = Mailgun::UnitClient.new('bounces')
141
+ @domain = 'test.com'
141
142
  end
142
143
  it 'in this case, obtains a list of bounces for the domain, limit of 5, skipping the first 10.' do
143
- query_string = {'skip' => '10',
144
- 'limit' => '5'}
144
+ query_string = { 'skip' => '10',
145
+ 'limit' => '5' }
145
146
  result = @mg_obj.get("#{@domain}/bounces", query_string)
146
147
 
147
148
  result.to_h!
148
149
 
149
- expect(result.body).to include("total_count")
150
- expect(result.body).to include("items")
150
+ expect(result.body).to include('total_count')
151
+ expect(result.body).to include('items')
151
152
  end
152
153
  end
153
154
 
154
155
  describe 'The method delete()' do
155
156
  before(:each) do
156
- @mg_obj = Mailgun::UnitClient.new("campaigns")
157
- @domain = "test.com"
157
+ @mg_obj = Mailgun::UnitClient.new('campaigns')
158
+ @domain = 'test.com'
158
159
  end
159
160
 
160
161
  it 'issues a generic delete request.' do
@@ -162,7 +163,7 @@ describe 'The method delete()' do
162
163
 
163
164
  result.to_h!
164
165
 
165
- expect(result.body).to include("message")
166
- expect(result.body).to include("id")
166
+ expect(result.body).to include('message')
167
+ expect(result.body).to include('id')
167
168
  end
168
169
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'BatchMessage attribute readers' do
4
6
  it 'should be readable' do
5
- @mb_client = Mailgun::UnitClient.new("messages")
6
- @mb_obj = Mailgun::BatchMessage.new(@mb_client, "example.com")
7
+ @mb_client = Mailgun::UnitClient.new('messages')
8
+ @mb_obj = Mailgun::BatchMessage.new(@mb_client, 'example.com')
7
9
 
8
10
  expect(@mb_obj).to respond_to(:message_ids)
9
11
  expect(@mb_obj).to respond_to(:message)
@@ -14,10 +16,9 @@ describe 'BatchMessage attribute readers' do
14
16
  end
15
17
 
16
18
  describe 'The instantiation of Batch Message' do
17
-
18
19
  before(:each) do
19
- @mb_client = Mailgun::UnitClient.new("messages")
20
- @mb_obj = Mailgun::BatchMessage.new(@mb_client, "example.com")
20
+ @mb_client = Mailgun::UnitClient.new('messages')
21
+ @mb_obj = Mailgun::BatchMessage.new(@mb_client, 'example.com')
21
22
  end
22
23
 
23
24
  it 'contains Message, which should be of type Hash and empty' do
@@ -63,14 +64,14 @@ end
63
64
 
64
65
  describe 'The method add_recipient' do
65
66
  before(:each) do
66
- @mb_client = Mailgun::UnitClient.new("messages")
67
- @mb_obj = Mailgun::BatchMessage.new(@mb_client, "example.com")
67
+ @mb_client = Mailgun::UnitClient.new('messages')
68
+ @mb_obj = Mailgun::BatchMessage.new(@mb_client, 'example.com')
68
69
  @address_1 = 'jane@example.com'
69
- @variables_1 = {'first' => 'Jane', 'last' => 'Doe', 'tracking' => 'ABC123'}
70
+ @variables_1 = { 'first' => 'Jane', 'last' => 'Doe', 'tracking' => 'ABC123' }
70
71
  @address_2 = 'bob@example.com'
71
- @variables_2 = {'first' => 'Bob', 'last' => 'Doe', 'tracking' => 'DEF123'}
72
+ @variables_2 = { 'first' => 'Bob', 'last' => 'Doe', 'tracking' => 'DEF123' }
72
73
  @address_3 = 'sam@example.com'
73
- @variables_3 = {'first' => 'Sam', 'last' => 'Doe', 'tracking' => 'GHI123'}
74
+ @variables_3 = { 'first' => 'Sam', 'last' => 'Doe', 'tracking' => 'GHI123' }
74
75
  end
75
76
  context 'when from is present' do
76
77
  before(:each) do
@@ -84,9 +85,9 @@ describe 'The method add_recipient' do
84
85
  end
85
86
 
86
87
  expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1000)
87
-
88
+
88
89
  @mb_obj.add_recipient(recipient_type, @address_1, @variables_1)
89
-
90
+
90
91
  expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1)
91
92
  end
92
93
 
@@ -127,7 +128,7 @@ describe 'The method add_recipient' do
127
128
  @mb_obj.add_recipient(recipient_type, @address_1, @variables_1)
128
129
  @mb_obj.add_recipient(recipient_type, @address_2, @variables_2)
129
130
  @mb_obj.add_recipient(recipient_type, @address_3, @variables_3)
130
-
131
+
131
132
  expect(@mb_obj.recipient_variables[@address_1]).to eq(@variables_1)
132
133
  expect(@mb_obj.recipient_variables[@address_2]).to eq(@variables_2)
133
134
  expect(@mb_obj.recipient_variables[@address_3]).to eq(@variables_3)
@@ -139,9 +140,8 @@ describe 'The method add_recipient' do
139
140
  recipient_type = :to
140
141
  @mb_obj.add_recipient(recipient_type, @address_1, @variables_1)
141
142
  @mb_obj.add_recipient(recipient_type, @address_2, @variables_2)
142
- expect(@mb_client).to receive(:fail)
143
+ expect(@mb_client).to receive(:raise)
143
144
  @mb_obj.finalize
144
145
  end
145
146
  end
146
-
147
147
  end