mailjet 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,13 @@
1
+ require 'mailjet/api'
2
+
3
+ module Mailjet
4
+ class TemplateModel < OpenStruct
5
+ class << self
6
+ def all(options = {})
7
+ (options.delete(:api) || Mailjet::Api.singleton).messageTplmodels(options)["templates"].map do |result_hash|
8
+ self.new(result_hash)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module Mailjet
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,72 @@
1
+ # encoding: utf-8
2
+
3
+ require 'minitest_helper'
4
+
5
+ describe Mailjet::ApiRequest do
6
+
7
+ describe "#request_path" do
8
+ it "should return the path of the method" do
9
+ Mailjet::ApiRequest.new('method_name').send(:request_path).must_equal '/0.1/methodName?output=json'
10
+ end
11
+
12
+ it "should respect api_version" do
13
+ Mailjet.config.expects(:api_version).returns(0.2)
14
+ Mailjet::ApiRequest.new('method_name').send(:request_path).must_equal '/0.2/methodName?output=json'
15
+ end
16
+ end
17
+
18
+ describe "#request_port" do
19
+ it "should return 80 if use_https is false" do
20
+ Mailjet.config.use_https = false
21
+ Mailjet::ApiRequest.new('method_name').send(:request_port).must_equal 80
22
+ end
23
+
24
+ it "should return 443 if use_https is true" do
25
+ Mailjet.config.use_https = true
26
+ Mailjet::ApiRequest.new('method_name').send(:request_port).must_equal 443
27
+ end
28
+ end
29
+
30
+ describe "#request" do
31
+ it "should return an Http request" do
32
+ request = Mailjet::ApiRequest.new('method_name', {}, 'Post')
33
+ request.send(:request).must_be_kind_of(Net::HTTP::Post)
34
+
35
+ request = Mailjet::ApiRequest.new('method_name', {}, 'Get')
36
+ request.send(:request).must_be_kind_of(Net::HTTP::Get)
37
+ end
38
+ end
39
+
40
+ describe "#response" do
41
+ it "should raise an ApiError if authentication fails" do
42
+ request = Mailjet::ApiRequest.new('method_name', {}, 'Get')
43
+ lambda {
44
+ request.response
45
+ }.must_raise(Mailjet::ApiError)
46
+ end
47
+
48
+ it "should return a Hash with response values if request is ok" do
49
+ request = Mailjet::ApiRequest.new('user_infos', {}, 'Get')
50
+ response = request.response
51
+ response.must_be_kind_of(Hash)
52
+ response['infos']['username'].must_equal 'benoit.benezech@gmail.com'
53
+ end
54
+ end
55
+
56
+ describe "#guess_request_type" do
57
+ it "should return 'Post' if method_name contains a special verb" do
58
+ Mailjet::ApiRequest.new('lists_add_contact').send(:guess_request_type).must_equal 'Post'
59
+ Mailjet::ApiRequest.new('lists_create').send(:guess_request_type).must_equal 'Post'
60
+ Mailjet::ApiRequest.new('lists_delete').send(:guess_request_type).must_equal 'Post'
61
+ Mailjet::ApiRequest.new('lists_remove_contact').send(:guess_request_type).must_equal 'Post'
62
+ Mailjet::ApiRequest.new('lists_update').send(:guess_request_type).must_equal 'Post'
63
+ end
64
+
65
+ it "should return 'Get' if method_name does not contain a verb" do
66
+ Mailjet::ApiRequest.new('key_list').send(:guess_request_type).must_equal 'Get'
67
+ Mailjet::ApiRequest.new('contact_list').send(:guess_request_type).must_equal 'Get'
68
+ Mailjet::ApiRequest.new('lists_all').send(:guess_request_type).must_equal 'Get'
69
+ Mailjet::ApiRequest.new('lists_email').send(:guess_request_type).must_equal 'Get'
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ require 'minitest_helper'
3
+
4
+ describe Mailjet::Api do
5
+ describe "#method_missing" do
6
+ it "should create an ApiRequest" do
7
+
8
+ request = mock(:response => true)
9
+ Mailjet::ApiRequest.expects(:new).with(:user_infos ,{:param1 => 1}, 'Post', Mailjet.config.api_key, Mailjet.config.secret_key).returns(request)
10
+ Mailjet::Api.new.user_infos({:param1 => 1}, 'Post')
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,62 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Mailjet::Campaign do
4
+ it 'has an integration suite, tested directly against Mailjet service' do
5
+
6
+ # init
7
+ Mailjet::List.all.each do |list|
8
+ list.delete
9
+ end
10
+ list = Mailjet::List.create(:label => 'My Mailjet list', :name => "mymailjetlist")
11
+ list.add_contacts("c1@contacts.com", "c2@contacts.com")
12
+
13
+ # Mailjet::Campaign.create
14
+ campaign = Mailjet::Campaign.create(
15
+ :title => "My Mailjet Campaign",
16
+ :list_id => list.id,
17
+ :from => Mailjet.config.default_from, # must be valid
18
+ :from_name => "Sender Name",
19
+ :subject => "Our new product",
20
+ :template_id => Mailjet::TemplateModel.all.first.id,
21
+ :lang => "en",
22
+ :footer => "default"
23
+ )
24
+ campaign.url.must_match /^https\:\/\/www\.mailjet\.com\/campaigns\/template\/[0-9]+$/
25
+
26
+ # Mailjet::Campaign.all
27
+ campaigns = Mailjet::Campaign.all
28
+ campaigns.wont_be_empty # we can't empty the whole campaign list...
29
+ campaigns.first.must_be_instance_of Mailjet::Campaign
30
+
31
+ # Mailjet::Campaign.find
32
+ Mailjet::Campaign.find(campaign.id).must_be_instance_of Mailjet::Campaign
33
+ Mailjet::Campaign.find(0).must_be_nil
34
+
35
+ # Mailjet::Campaign#update
36
+ campaign.update(:title => "My *new* Mailjet Campaign")
37
+
38
+ # Mailjet::Campaign#duplicate
39
+ dup = campaign.duplicate(:title => "My *new* Mailjet Campaign")
40
+ dup.must_be_instance_of Mailjet::Campaign
41
+ dup.id.wont_be_same_as campaign.id
42
+
43
+ # Mailjet::Campaign#send!
44
+ campaign.send!.must_equal 'OK'
45
+ # TODO does not work, 500 server side.
46
+
47
+ # Mailjet::Campaign#test
48
+ campaign.test('benoit.benezech@gmail.com').must_equal 'OK'
49
+
50
+ # Mailjet::Campaign#html
51
+ campaign.html.must_be_nil
52
+ # TODO how to get content in the campaign template?
53
+
54
+ campaign = Mailjet::Campaign.find(campaign.id)
55
+
56
+ # Mailjet::Campaign#contacts
57
+ campaign.contacts.wont_be_empty
58
+
59
+ # Mailjet::Campaign#statistics
60
+ campaign.statistics.keys.must_include "blocked"
61
+ end
62
+ end
@@ -0,0 +1,16 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Mailjet::Configuration do
4
+ describe "accessors" do
5
+ it "should memorize values" do
6
+ Mailjet::Configuration.api_key = '1234'
7
+ Mailjet::Configuration.api_key.must_equal '1234'
8
+ end
9
+ end
10
+
11
+ describe "#use_https" do
12
+ it "should be true by default" do
13
+ Mailjet::Configuration.use_https.must_equal true
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Mailjet::Contact do
4
+ it 'has an integration suite, tested directly against Mailjet service' do
5
+ # init
6
+ Mailjet::List.all.each do |list|
7
+ list.delete
8
+ end
9
+ list = Mailjet::List.create(:label => 'My Mailjet list', :name => "mymailjetlist")
10
+ list.add_contacts("c1@contacts.com")
11
+
12
+ # Mailjet::Contact.all
13
+ contacts = Mailjet::Contact.all
14
+ contacts.wont_be_empty # we can't empty the whole contact list...
15
+ contacts.first.must_be_instance_of Mailjet::Contact
16
+
17
+ # Mailjet::Contact.all(:openers => true)
18
+ # Mailjet::Contact.all(:openers => true).must_be_empty
19
+ # TODO :openers does not work, times out
20
+
21
+ # Mailjet::Contact#infos
22
+ contacts.first.infos["click"].wont_be_nil
23
+ end
24
+ end
@@ -0,0 +1,62 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Mailjet::List do
4
+ it 'has an integration suite, tested directly against Mailjet service' do
5
+ # clean-up all existing lists:
6
+ Mailjet::List.all.each do |list|
7
+ list.delete
8
+ end
9
+
10
+ # Mailjet::List.all for no lists
11
+ Mailjet::List.all.must_be_empty
12
+
13
+ # Mailjet::List#create
14
+ list = Mailjet::List.create(:label => 'My Mailjet list', :name => "mymailjetlist")
15
+ list.must_be_instance_of Mailjet::List
16
+ list.label.must_equal 'My Mailjet list'
17
+ list.name.must_equal 'mymailjetlist'
18
+
19
+ # Mailjet::List#update.
20
+ list.update(:label => 'My updated Mailjet list', :name => "myupdatedmailjetlist").must_equal "OK"
21
+ updated_list = Mailjet::List.all.first
22
+ updated_list.label.must_equal 'My updated Mailjet list'
23
+ updated_list.name.must_equal 'myupdatedmailjetlist'
24
+ updated_list.id.must_equal list.id
25
+
26
+ # Mailjet::List.all
27
+ lists = Mailjet::List.all
28
+ lists.count.must_equal 1
29
+ lists.first.must_be_instance_of Mailjet::List
30
+ lists.first.id.must_equal updated_list.id
31
+
32
+ # Mailjet::List#add_contacts
33
+ list.add_contacts.must_equal "NotModified"
34
+ list.add_contacts("c1@contacts.com").must_equal "OK"
35
+ list.add_contacts("c1@contacts.com").must_equal "NotModified"
36
+ list.add_contacts("c2@contacts.com", "c3@contacts.com").must_equal "OK"
37
+ list.add_contacts("c4@contacts.com", "c5@contacts.com").must_equal "OK"
38
+
39
+ # Mailjet::List#contacts and validate results of add_contacts
40
+ contacts = list.contacts
41
+ contacts.first.must_be_instance_of Mailjet::Contact
42
+ contacts.map(&:email).sort.must_equal ["c1@contacts.com", "c2@contacts.com", "c3@contacts.com", "c4@contacts.com", "c5@contacts.com"]
43
+
44
+ # Mailjet::List#remove_contacts
45
+ list.remove_contacts.must_equal "NotModified"
46
+ list.remove_contacts("does-not-exist@nowhere.com").must_equal "NotModified"
47
+ list.remove_contacts("c1@contacts.com", "c2@contacts.com").must_equal "OK"
48
+ list.contacts.count.must_equal 3
49
+
50
+ # Mailjet::List#email
51
+ list.email.must_match /\@lists\.mailjet\.com$/
52
+
53
+ # Mailjet::List#statistics
54
+ list.statistics["sent"].must_equal "0"
55
+
56
+ # Mailjet::List#delete
57
+ list.delete.must_equal 'OK'
58
+ Mailjet::List.all.must_be_empty
59
+ exception = proc { list.delete }.must_raise(Mailjet::ApiError)
60
+ exception.to_s.must_match /This ID not appears to be an active list on your account/
61
+ end
62
+ end
@@ -0,0 +1,30 @@
1
+ require 'minitest_helper'
2
+ require 'rack/mock'
3
+
4
+ SAMPLE_MAILJET_PAYLOAD = "{\"event\":\"open\",\"time\":1331581827,\"email\":\"benoit.benezech+1634@gmail.com\",\"mj_campaign_id\":\"105881975\",\"mj_contact_id\":\"116408391\",\"customcampaign\":null,\"ip\":\"88.164.20.58\",\"geo\":\"FR\",\"agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit\\/535.11 (KHTML, like Gecko) Chrome\\/17.0.963.79 Safari\\/535.11\"}"
5
+ SAMPLE_MAILJET_PARAMS = {"event"=>"open", "time"=>1331581827, "email"=>"benoit.benezech+1634@gmail.com", "mj_campaign_id"=>"105881975", "mj_contact_id"=>"116408391", "customcampaign"=>nil, "ip"=>"88.164.20.58", "geo"=>"FR", "agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11"}
6
+
7
+
8
+ describe Mailjet::Rack::Endpoint do
9
+ it "should decipher Mailjet's posted events and pass them to the block" do
10
+ # mock should receive :find with "benoit.benezech+1634@gmail.com" and will return true
11
+ $user_class_mock = MiniTest::Mock.new.expect(:find, true, ["benoit.benezech+1634@gmail.com"])
12
+
13
+ app = Rack::Builder.new do
14
+ use Rack::Lint
15
+ use Mailjet::Rack::Endpoint, '/callback' do |params|
16
+ $user_class_mock.find(params['email'])#.do_smtg_with_the_user....
17
+ end
18
+ run lambda { |env|
19
+ [200, {'Content-Type' => 'text/plain'}, ['passed through your endpoint, haha']]
20
+ }
21
+ end
22
+
23
+ response = Rack::MockRequest.new(app).get('/not_callback')
24
+ response.body.must_equal('passed through your endpoint, haha')
25
+
26
+ response = Rack::MockRequest.new(app).post('/callback', :input => SAMPLE_MAILJET_PAYLOAD)
27
+ response.body.must_equal('')
28
+ $user_class_mock.verify
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Mailjet::Reporting do
4
+ it 'has an integration suite, tested directly against Mailjet service' do
5
+ # Mailjet::Reporting.clicks
6
+ Mailjet::Reporting.clicks.must_be_instance_of Array
7
+
8
+ # Mailjet::Reporting.domains
9
+ Mailjet::Reporting.domains.must_be_instance_of Array
10
+
11
+ # Mailjet::Reporting.clients
12
+ Mailjet::Reporting.clients.must_be_instance_of Array
13
+
14
+ # Mailjet::Reporting.emails
15
+ Mailjet::Reporting.emails.must_be_instance_of Array
16
+
17
+ # Mailjet::Reporting.statistics
18
+ Mailjet::Reporting.statistics["cnt_messages"].wont_be_nil
19
+
20
+ # Mailjet::Reporting.geolocation
21
+ Mailjet::Reporting.geolocation.must_be_instance_of Hash
22
+
23
+ # Mailjet::Reporting.agents
24
+ Mailjet::Reporting.agents.must_be_instance_of Array
25
+ end
26
+ end
@@ -0,0 +1,13 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Mailjet::TemplateCategory do
4
+ it 'has an integration suite, tested directly against Mailjet service' do
5
+
6
+ # Mailjet::TemplateCategory.all
7
+ models = Mailjet::TemplateCategory.all
8
+ models.wont_be_empty
9
+ model = models.find{|m| m.id == "2"} # from default Mailjet templates
10
+ model.must_be_instance_of Mailjet::TemplateCategory
11
+ model.label.must_equal "basic"
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Mailjet::TemplateModel do
4
+ it 'has an integration suite, tested directly against Mailjet service' do
5
+
6
+ # Mailjet::TemplateModel.all
7
+ models = Mailjet::TemplateModel.all
8
+ models.wont_be_empty
9
+ model = models.find{|t| t.id == '4'} # from default Mailjet templates
10
+ model.must_be_instance_of Mailjet::TemplateModel
11
+ model.name == "Text"
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Mailjet do
4
+ describe "#configure" do
5
+ it "should permit to set api keys and remember them" do
6
+ Mailjet.configure do |config|
7
+ config.api_key = "1234"
8
+ config.secret_key = "5678"
9
+ config.domain = "domain_test"
10
+ config.default_from = "default from test"
11
+ end
12
+
13
+ Mailjet.config.api_key.must_equal "1234"
14
+ Mailjet.config.secret_key.must_equal "5678"
15
+ Mailjet.config.domain.must_equal "domain_test"
16
+ Mailjet.config.default_from = "default from test"
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/matchers'
3
+ require "mocha"
4
+ require 'mailjet'
5
+ require 'turn'
6
+
7
+ test_account = YAML::load(File.new(File.expand_path("../../config.yml", __FILE__)))['mailjet']
8
+
9
+ MiniTest::Spec.before do
10
+ Mailjet.configure do |config|
11
+ config.api_key = test_account['api_key']
12
+ config.secret_key = test_account['secret_key']
13
+ config.domain = test_account['domain']
14
+ config.default_from = test_account['default_from']
15
+ end
16
+ end
17
+
18
+ MiniTest::Spec.after do
19
+ Object.send(:remove_const, 'Mailjet')
20
+ Dir["#{File.dirname(__FILE__)}/../lib/**/*.rb"].each {|f| load f}
21
+ end
22
+
23
+ Turn.config.format = :outline
metadata ADDED
@@ -0,0 +1,198 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mailjet
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - "Aur\xC3\xA9lien AMILIN"
9
+ - "Benoit B\xC3\xA9n\xC3\xA9zech"
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2012-03-26 00:00:00 +02:00
15
+ default_executable:
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: activesupport
19
+ prerelease: false
20
+ requirement: &id001 !ruby/object:Gem::Requirement
21
+ none: false
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 3.0.9
26
+ type: :runtime
27
+ version_requirements: *id001
28
+ - !ruby/object:Gem::Dependency
29
+ name: actionmailer
30
+ prerelease: false
31
+ requirement: &id002 !ruby/object:Gem::Requirement
32
+ none: false
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 3.0.9
37
+ type: :development
38
+ version_requirements: *id002
39
+ - !ruby/object:Gem::Dependency
40
+ name: minitest
41
+ prerelease: false
42
+ requirement: &id003 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ type: :development
49
+ version_requirements: *id003
50
+ - !ruby/object:Gem::Dependency
51
+ name: minitest-matchers
52
+ prerelease: false
53
+ requirement: &id004 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
59
+ type: :development
60
+ version_requirements: *id004
61
+ - !ruby/object:Gem::Dependency
62
+ name: turn
63
+ prerelease: false
64
+ requirement: &id005 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ type: :development
71
+ version_requirements: *id005
72
+ - !ruby/object:Gem::Dependency
73
+ name: rake
74
+ prerelease: false
75
+ requirement: &id006 !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: "0"
81
+ type: :development
82
+ version_requirements: *id006
83
+ - !ruby/object:Gem::Dependency
84
+ name: json
85
+ prerelease: false
86
+ requirement: &id007 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: "0"
92
+ type: :development
93
+ version_requirements: *id007
94
+ - !ruby/object:Gem::Dependency
95
+ name: rack
96
+ prerelease: false
97
+ requirement: &id008 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: "0"
103
+ type: :development
104
+ version_requirements: *id008
105
+ - !ruby/object:Gem::Dependency
106
+ name: mocha
107
+ prerelease: false
108
+ requirement: &id009 !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: "0"
114
+ type: :development
115
+ version_requirements: *id009
116
+ description: Cloud Emailing for easy delivery.
117
+ email:
118
+ - benoit.benezech@gmail.com
119
+ executables: []
120
+
121
+ extensions: []
122
+
123
+ extra_rdoc_files: []
124
+
125
+ files:
126
+ - lib/mailjet/api.rb
127
+ - lib/mailjet/api_error.rb
128
+ - lib/mailjet/api_request.rb
129
+ - lib/mailjet/campaign.rb
130
+ - lib/mailjet/click.rb
131
+ - lib/mailjet/configuration.rb
132
+ - lib/mailjet/contact.rb
133
+ - lib/mailjet/core_extensions/ostruct.rb
134
+ - lib/mailjet/email.rb
135
+ - lib/mailjet/list.rb
136
+ - lib/mailjet/mailer.rb
137
+ - lib/mailjet/rack/endpoint.rb
138
+ - lib/mailjet/reporting.rb
139
+ - lib/mailjet/template_category.rb
140
+ - lib/mailjet/template_model.rb
141
+ - lib/mailjet/version.rb
142
+ - lib/mailjet.rb
143
+ - MIT-LICENSE
144
+ - Rakefile
145
+ - README.md
146
+ - test/mailjet/api_request_test.rb
147
+ - test/mailjet/api_test.rb
148
+ - test/mailjet/campaign_test.rb
149
+ - test/mailjet/configuration_test.rb
150
+ - test/mailjet/contact_test.rb
151
+ - test/mailjet/list_test.rb
152
+ - test/mailjet/rack/endpoint_test.rb
153
+ - test/mailjet/reporting_test.rb
154
+ - test/mailjet/template_category_test.rb
155
+ - test/mailjet/template_model_test.rb
156
+ - test/mailjet_test.rb
157
+ - test/minitest_helper.rb
158
+ has_rdoc: true
159
+ homepage: http://www.mailjet.com
160
+ licenses: []
161
+
162
+ post_install_message:
163
+ rdoc_options: []
164
+
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ none: false
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: "0"
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: "0"
179
+ requirements: []
180
+
181
+ rubyforge_project:
182
+ rubygems_version: 1.6.2
183
+ signing_key:
184
+ specification_version: 3
185
+ summary: Cloud Emailing for easy delivery.
186
+ test_files:
187
+ - test/mailjet/api_request_test.rb
188
+ - test/mailjet/api_test.rb
189
+ - test/mailjet/campaign_test.rb
190
+ - test/mailjet/configuration_test.rb
191
+ - test/mailjet/contact_test.rb
192
+ - test/mailjet/list_test.rb
193
+ - test/mailjet/rack/endpoint_test.rb
194
+ - test/mailjet/reporting_test.rb
195
+ - test/mailjet/template_category_test.rb
196
+ - test/mailjet/template_model_test.rb
197
+ - test/mailjet_test.rb
198
+ - test/minitest_helper.rb