createsend 5.1.1 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +30 -0
- data/README.md +2 -2
- data/createsend.gemspec +1 -1
- data/lib/createsend/client.rb +19 -3
- data/lib/createsend/createsend.rb +1 -1
- data/lib/createsend/list.rb +13 -12
- data/lib/createsend/subscriber.rb +8 -4
- data/lib/createsend/version.rb +1 -1
- data/samples/authentication_sample.rb +64 -0
- data/samples/clients_sample.rb +79 -0
- data/samples/journey_sample.rb +3 -2
- data/samples/lists_sample.rb +51 -0
- data/samples/segments_sample.rb +21 -0
- data/samples/subscribers_sample.rb +51 -0
- data/test/administrator_test.rb +5 -5
- data/test/campaign_test.rb +114 -113
- data/test/client_test.rb +121 -98
- data/test/createsend_test.rb +47 -47
- data/test/fixtures/active_subscribers.json +5 -0
- data/test/fixtures/bounced_subscribers.json +1 -0
- data/test/fixtures/campaign_summary.json +2 -1
- data/test/fixtures/campaigns.json +37 -26
- data/test/fixtures/deleted_subscribers.json +5 -0
- data/test/fixtures/drafts.json +4 -2
- data/test/fixtures/scheduled_campaigns.json +4 -2
- data/test/fixtures/segment_subscribers.json +2 -0
- data/test/fixtures/subscriber_details.json +2 -0
- data/test/fixtures/{subscriber_details_with_track_pref.json → subscriber_details_with_track_and_sms_pref.json} +4 -1
- data/test/fixtures/tags.json +10 -0
- data/test/fixtures/unconfirmed_subscribers.json +6 -2
- data/test/fixtures/unsubscribed_subscribers.json +6 -1
- data/test/helper.rb +1 -1
- data/test/journey_test.rb +86 -86
- data/test/list_test.rb +130 -123
- data/test/person_test.rb +6 -6
- data/test/segment_test.rb +23 -22
- data/test/subscriber_test.rb +55 -51
- data/test/template_test.rb +5 -5
- data/test/transactional_classic_email_test.rb +6 -6
- data/test/transactional_smart_email_test.rb +19 -19
- data/test/transactional_timeline_test.rb +25 -25
- metadata +16 -113
data/test/campaign_test.rb
CHANGED
@@ -13,8 +13,8 @@ class CampaignTest < Test::Unit::TestCase
|
|
13
13
|
"http://example.com/campaign.html", "http://example.com/campaign.txt", [ '7y12989e82ue98u2e', 'dh9w89q8w98wudwd989' ],
|
14
14
|
[ 'y78q9w8d9w8ud9q8uw', 'djw98quw9duqw98uwd98' ]
|
15
15
|
request = FakeWeb.last_request.body
|
16
|
-
request.include?("\"TextUrl\":\"http://example.com/campaign.txt\"").should == true
|
17
|
-
campaign_id.should == "787y87y87y87y87y87y87"
|
16
|
+
request.include?("\"TextUrl\":\"http://example.com/campaign.txt\"").should be == true
|
17
|
+
campaign_id.should be == "787y87y87y87y87y87y87"
|
18
18
|
end
|
19
19
|
|
20
20
|
should "create a campaign with a nil text_url param" do
|
@@ -24,8 +24,8 @@ class CampaignTest < Test::Unit::TestCase
|
|
24
24
|
"http://example.com/campaign.html", nil, [ '7y12989e82ue98u2e', 'dh9w89q8w98wudwd989' ],
|
25
25
|
[ 'y78q9w8d9w8ud9q8uw', 'djw98quw9duqw98uwd98' ]
|
26
26
|
request = FakeWeb.last_request.body
|
27
|
-
request.include?("\"TextUrl\":null").should == true
|
28
|
-
campaign_id.should == "787y87y87y87y87y87y87"
|
27
|
+
request.include?("\"TextUrl\":null").should be == true
|
28
|
+
campaign_id.should be == "787y87y87y87y87y87y87"
|
29
29
|
end
|
30
30
|
|
31
31
|
should "create a campaign from a template" do
|
@@ -106,7 +106,7 @@ class CampaignTest < Test::Unit::TestCase
|
|
106
106
|
campaign_id = CreateSend::Campaign.create_from_template @auth, client_id, "subject", "name", "g'day", "good.day@example.com", "good.day@example.com",
|
107
107
|
[ '7y12989e82ue98u2e', 'dh9w89q8w98wudwd989' ], [ 'y78q9w8d9w8ud9q8uw', 'djw98quw9duqw98uwd98' ],
|
108
108
|
"7j8uw98udowy12989e8298u2e", template_content
|
109
|
-
campaign_id.should == "787y87y87y87y87y87y87"
|
109
|
+
campaign_id.should be == "787y87y87y87y87y87y87"
|
110
110
|
end
|
111
111
|
|
112
112
|
should "send a preview of a draft campaign to a single recipient" do
|
@@ -137,159 +137,160 @@ class CampaignTest < Test::Unit::TestCase
|
|
137
137
|
should "get the summary for a campaign" do
|
138
138
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/summary.json", "campaign_summary.json")
|
139
139
|
summary = @campaign.summary
|
140
|
-
summary.
|
141
|
-
summary.
|
142
|
-
summary.
|
143
|
-
summary.
|
144
|
-
summary.
|
145
|
-
summary.
|
146
|
-
summary.
|
147
|
-
summary.
|
148
|
-
summary.
|
149
|
-
summary.
|
150
|
-
summary.
|
151
|
-
summary.
|
152
|
-
summary.
|
140
|
+
summary.Name.should be == "Campaign Name"
|
141
|
+
summary.Recipients.should be == 5
|
142
|
+
summary.TotalOpened.should be == 10
|
143
|
+
summary.Clicks.should be == 0
|
144
|
+
summary.Unsubscribed.should be == 0
|
145
|
+
summary.Bounced.should be == 0
|
146
|
+
summary.UniqueOpened.should be == 5
|
147
|
+
summary.Mentions.should be == 23
|
148
|
+
summary.Forwards.should be == 11
|
149
|
+
summary.Likes.should be == 32
|
150
|
+
summary.WebVersionURL.should be == "http://createsend.com/t/r-3A433FC72FFE3B8B"
|
151
|
+
summary.WebVersionTextURL.should be == "http://createsend.com/t/r-3A433FC72FFE3B8B/t"
|
152
|
+
summary.WorldviewURL.should be == "http://client.createsend.com/reports/wv/r/3A433FC72FFE3B8B"
|
153
|
+
summary.SpamComplaints.should be == 23
|
153
154
|
end
|
154
155
|
|
155
156
|
should "get the email client usage for a campaign" do
|
156
157
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/emailclientusage.json", "email_client_usage.json")
|
157
158
|
ecu = @campaign.email_client_usage
|
158
|
-
ecu.size.should == 6
|
159
|
-
ecu.first.Client.should == "iOS Devices"
|
160
|
-
ecu.first.Version.should == "iPhone"
|
161
|
-
ecu.first.Percentage.should == 19.83
|
162
|
-
ecu.first.Subscribers.should == 7056
|
159
|
+
ecu.size.should be == 6
|
160
|
+
ecu.first.Client.should be == "iOS Devices"
|
161
|
+
ecu.first.Version.should be == "iPhone"
|
162
|
+
ecu.first.Percentage.should be == 19.83
|
163
|
+
ecu.first.Subscribers.should be == 7056
|
163
164
|
end
|
164
165
|
|
165
166
|
should "get the lists and segments for a campaign" do
|
166
167
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/listsandsegments.json", "campaign_listsandsegments.json")
|
167
168
|
ls = @campaign.lists_and_segments
|
168
|
-
ls.Lists.size.should == 1
|
169
|
-
ls.Segments.size.should == 1
|
170
|
-
ls.Lists.first.Name.should == "List One"
|
171
|
-
ls.Lists.first.ListID.should == "a58ee1d3039b8bec838e6d1482a8a965"
|
172
|
-
ls.Segments.first.Title.should == "Segment for campaign"
|
173
|
-
ls.Segments.first.ListID.should == "2bea949d0bf96148c3e6a209d2e82060"
|
174
|
-
ls.Segments.first.SegmentID.should == "dba84a225d5ce3d19105d7257baac46f"
|
169
|
+
ls.Lists.size.should be == 1
|
170
|
+
ls.Segments.size.should be == 1
|
171
|
+
ls.Lists.first.Name.should be == "List One"
|
172
|
+
ls.Lists.first.ListID.should be == "a58ee1d3039b8bec838e6d1482a8a965"
|
173
|
+
ls.Segments.first.Title.should be == "Segment for campaign"
|
174
|
+
ls.Segments.first.ListID.should be == "2bea949d0bf96148c3e6a209d2e82060"
|
175
|
+
ls.Segments.first.SegmentID.should be == "dba84a225d5ce3d19105d7257baac46f"
|
175
176
|
end
|
176
177
|
|
177
178
|
should "get the recipients for a campaign" do
|
178
179
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/recipients.json?pagesize=20&orderfield=email&page=1&orderdirection=asc", "campaign_recipients.json")
|
179
180
|
res = @campaign.recipients page=1, page_size=20
|
180
|
-
res.ResultsOrderedBy.should == "email"
|
181
|
-
res.OrderDirection.should == "asc"
|
182
|
-
res.PageNumber.should == 1
|
183
|
-
res.PageSize.should == 20
|
184
|
-
res.RecordsOnThisPage.should == 20
|
185
|
-
res.TotalNumberOfRecords.should == 2200
|
186
|
-
res.NumberOfPages.should == 110
|
187
|
-
res.Results.size.should == 20
|
188
|
-
res.Results.first.EmailAddress.should == "subs+6g76t7t0@example.com"
|
189
|
-
res.Results.first.ListID.should == "a994a3caf1328a16af9a69a730eaa706"
|
181
|
+
res.ResultsOrderedBy.should be == "email"
|
182
|
+
res.OrderDirection.should be == "asc"
|
183
|
+
res.PageNumber.should be == 1
|
184
|
+
res.PageSize.should be == 20
|
185
|
+
res.RecordsOnThisPage.should be == 20
|
186
|
+
res.TotalNumberOfRecords.should be == 2200
|
187
|
+
res.NumberOfPages.should be == 110
|
188
|
+
res.Results.size.should be == 20
|
189
|
+
res.Results.first.EmailAddress.should be == "subs+6g76t7t0@example.com"
|
190
|
+
res.Results.first.ListID.should be == "a994a3caf1328a16af9a69a730eaa706"
|
190
191
|
end
|
191
192
|
|
192
193
|
should "get the opens for a campaign" do
|
193
194
|
min_date = "2010-01-01"
|
194
195
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/opens.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc&date=#{ERB::Util.url_encode(min_date)}", "campaign_opens.json")
|
195
196
|
opens = @campaign.opens min_date
|
196
|
-
opens.Results.size.should == 5
|
197
|
-
opens.Results.first.EmailAddress.should == "subs+6576576576@example.com"
|
198
|
-
opens.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
|
199
|
-
opens.Results.first.Date.should == "2010-10-11 08:29:00"
|
200
|
-
opens.Results.first.IPAddress.should == "192.168.126.87"
|
201
|
-
opens.Results.first.Latitude.should == -33.8683
|
202
|
-
opens.Results.first.Longitude.should == 151.2086
|
203
|
-
opens.Results.first.City.should == "Sydney"
|
204
|
-
opens.Results.first.Region.should == "New South Wales"
|
205
|
-
opens.Results.first.CountryCode.should == "AU"
|
206
|
-
opens.Results.first.CountryName.should == "Australia"
|
207
|
-
opens.ResultsOrderedBy.should == "date"
|
208
|
-
opens.OrderDirection.should == "asc"
|
209
|
-
opens.PageNumber.should == 1
|
210
|
-
opens.PageSize.should == 1000
|
211
|
-
opens.RecordsOnThisPage.should == 5
|
212
|
-
opens.TotalNumberOfRecords.should == 5
|
213
|
-
opens.NumberOfPages.should == 1
|
197
|
+
opens.Results.size.should be == 5
|
198
|
+
opens.Results.first.EmailAddress.should be == "subs+6576576576@example.com"
|
199
|
+
opens.Results.first.ListID.should be == "512a3bc577a58fdf689c654329b50fa0"
|
200
|
+
opens.Results.first.Date.should be == "2010-10-11 08:29:00"
|
201
|
+
opens.Results.first.IPAddress.should be == "192.168.126.87"
|
202
|
+
opens.Results.first.Latitude.should be == -33.8683
|
203
|
+
opens.Results.first.Longitude.should be == 151.2086
|
204
|
+
opens.Results.first.City.should be == "Sydney"
|
205
|
+
opens.Results.first.Region.should be == "New South Wales"
|
206
|
+
opens.Results.first.CountryCode.should be == "AU"
|
207
|
+
opens.Results.first.CountryName.should be == "Australia"
|
208
|
+
opens.ResultsOrderedBy.should be == "date"
|
209
|
+
opens.OrderDirection.should be == "asc"
|
210
|
+
opens.PageNumber.should be == 1
|
211
|
+
opens.PageSize.should be == 1000
|
212
|
+
opens.RecordsOnThisPage.should be == 5
|
213
|
+
opens.TotalNumberOfRecords.should be == 5
|
214
|
+
opens.NumberOfPages.should be == 1
|
214
215
|
end
|
215
216
|
|
216
217
|
should "get the subscriber clicks for a campaign" do
|
217
218
|
min_date = "2010-01-01"
|
218
219
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/clicks.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc&date=#{ERB::Util.url_encode(min_date)}", "campaign_clicks.json")
|
219
220
|
clicks = @campaign.clicks min_date
|
220
|
-
clicks.Results.size.should == 3
|
221
|
-
clicks.Results.first.EmailAddress.should == "subs+6576576576@example.com"
|
222
|
-
clicks.Results.first.URL.should == "http://video.google.com.au/?hl=en&tab=wv"
|
223
|
-
clicks.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
|
224
|
-
clicks.Results.first.Date.should == "2010-10-11 08:29:00"
|
225
|
-
clicks.Results.first.IPAddress.should == "192.168.126.87"
|
226
|
-
clicks.Results.first.Latitude.should == -33.8683
|
227
|
-
clicks.Results.first.Longitude.should == 151.2086
|
228
|
-
clicks.Results.first.City.should == "Sydney"
|
229
|
-
clicks.Results.first.Region.should == "New South Wales"
|
230
|
-
clicks.Results.first.CountryCode.should == "AU"
|
231
|
-
clicks.Results.first.CountryName.should == "Australia"
|
232
|
-
clicks.ResultsOrderedBy.should == "date"
|
233
|
-
clicks.OrderDirection.should == "asc"
|
234
|
-
clicks.PageNumber.should == 1
|
235
|
-
clicks.PageSize.should == 1000
|
236
|
-
clicks.RecordsOnThisPage.should == 3
|
237
|
-
clicks.TotalNumberOfRecords.should == 3
|
238
|
-
clicks.NumberOfPages.should == 1
|
221
|
+
clicks.Results.size.should be == 3
|
222
|
+
clicks.Results.first.EmailAddress.should be == "subs+6576576576@example.com"
|
223
|
+
clicks.Results.first.URL.should be == "http://video.google.com.au/?hl=en&tab=wv"
|
224
|
+
clicks.Results.first.ListID.should be == "512a3bc577a58fdf689c654329b50fa0"
|
225
|
+
clicks.Results.first.Date.should be == "2010-10-11 08:29:00"
|
226
|
+
clicks.Results.first.IPAddress.should be == "192.168.126.87"
|
227
|
+
clicks.Results.first.Latitude.should be == -33.8683
|
228
|
+
clicks.Results.first.Longitude.should be == 151.2086
|
229
|
+
clicks.Results.first.City.should be == "Sydney"
|
230
|
+
clicks.Results.first.Region.should be == "New South Wales"
|
231
|
+
clicks.Results.first.CountryCode.should be == "AU"
|
232
|
+
clicks.Results.first.CountryName.should be == "Australia"
|
233
|
+
clicks.ResultsOrderedBy.should be == "date"
|
234
|
+
clicks.OrderDirection.should be == "asc"
|
235
|
+
clicks.PageNumber.should be == 1
|
236
|
+
clicks.PageSize.should be == 1000
|
237
|
+
clicks.RecordsOnThisPage.should be == 3
|
238
|
+
clicks.TotalNumberOfRecords.should be == 3
|
239
|
+
clicks.NumberOfPages.should be == 1
|
239
240
|
end
|
240
241
|
|
241
242
|
should "get the unsubscribes for a campaign" do
|
242
243
|
min_date = "2010-01-01"
|
243
244
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/unsubscribes.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc&date=#{ERB::Util.url_encode(min_date)}", "campaign_unsubscribes.json")
|
244
245
|
unsubscribes = @campaign.unsubscribes min_date
|
245
|
-
unsubscribes.Results.size.should == 1
|
246
|
-
unsubscribes.Results.first.EmailAddress.should == "subs+6576576576@example.com"
|
247
|
-
unsubscribes.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
|
248
|
-
unsubscribes.Results.first.Date.should == "2010-10-11 08:29:00"
|
249
|
-
unsubscribes.Results.first.IPAddress.should == "192.168.126.87"
|
250
|
-
unsubscribes.ResultsOrderedBy.should == "date"
|
251
|
-
unsubscribes.OrderDirection.should == "asc"
|
252
|
-
unsubscribes.PageNumber.should == 1
|
253
|
-
unsubscribes.PageSize.should == 1000
|
254
|
-
unsubscribes.RecordsOnThisPage.should == 1
|
255
|
-
unsubscribes.TotalNumberOfRecords.should == 1
|
256
|
-
unsubscribes.NumberOfPages.should == 1
|
246
|
+
unsubscribes.Results.size.should be == 1
|
247
|
+
unsubscribes.Results.first.EmailAddress.should be == "subs+6576576576@example.com"
|
248
|
+
unsubscribes.Results.first.ListID.should be == "512a3bc577a58fdf689c654329b50fa0"
|
249
|
+
unsubscribes.Results.first.Date.should be == "2010-10-11 08:29:00"
|
250
|
+
unsubscribes.Results.first.IPAddress.should be == "192.168.126.87"
|
251
|
+
unsubscribes.ResultsOrderedBy.should be == "date"
|
252
|
+
unsubscribes.OrderDirection.should be == "asc"
|
253
|
+
unsubscribes.PageNumber.should be == 1
|
254
|
+
unsubscribes.PageSize.should be == 1000
|
255
|
+
unsubscribes.RecordsOnThisPage.should be == 1
|
256
|
+
unsubscribes.TotalNumberOfRecords.should be == 1
|
257
|
+
unsubscribes.NumberOfPages.should be == 1
|
257
258
|
end
|
258
259
|
|
259
260
|
should "get the spam complaints for a campaign" do
|
260
261
|
min_date = "2010-01-01"
|
261
262
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/spam.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc&date=#{ERB::Util.url_encode(min_date)}", "campaign_spam.json")
|
262
263
|
spam = @campaign.spam min_date
|
263
|
-
spam.Results.size.should == 1
|
264
|
-
spam.Results.first.EmailAddress.should == "subs+6576576576@example.com"
|
265
|
-
spam.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
|
266
|
-
spam.Results.first.Date.should == "2010-10-11 08:29:00"
|
267
|
-
spam.ResultsOrderedBy.should == "date"
|
268
|
-
spam.OrderDirection.should == "asc"
|
269
|
-
spam.PageNumber.should == 1
|
270
|
-
spam.PageSize.should == 1000
|
271
|
-
spam.RecordsOnThisPage.should == 1
|
272
|
-
spam.TotalNumberOfRecords.should == 1
|
273
|
-
spam.NumberOfPages.should == 1
|
264
|
+
spam.Results.size.should be == 1
|
265
|
+
spam.Results.first.EmailAddress.should be == "subs+6576576576@example.com"
|
266
|
+
spam.Results.first.ListID.should be == "512a3bc577a58fdf689c654329b50fa0"
|
267
|
+
spam.Results.first.Date.should be == "2010-10-11 08:29:00"
|
268
|
+
spam.ResultsOrderedBy.should be == "date"
|
269
|
+
spam.OrderDirection.should be == "asc"
|
270
|
+
spam.PageNumber.should be == 1
|
271
|
+
spam.PageSize.should be == 1000
|
272
|
+
spam.RecordsOnThisPage.should be == 1
|
273
|
+
spam.TotalNumberOfRecords.should be == 1
|
274
|
+
spam.NumberOfPages.should be == 1
|
274
275
|
end
|
275
276
|
|
276
277
|
should "get the bounces for a campaign" do
|
277
278
|
min_date = "2010-01-01"
|
278
279
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/bounces.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc&date=#{ERB::Util.url_encode(min_date)}", "campaign_bounces.json")
|
279
280
|
bounces = @campaign.bounces min_date
|
280
|
-
bounces.Results.size.should == 2
|
281
|
-
bounces.Results.first.EmailAddress.should == "asdf@softbouncemyemail.com"
|
282
|
-
bounces.Results.first.ListID.should == "654523a5855b4a440bae3fb295641546"
|
283
|
-
bounces.Results.first.BounceType.should == "Soft"
|
284
|
-
bounces.Results.first.Date.should == "2010-07-02 16:46:00"
|
285
|
-
bounces.Results.first.Reason.should == "Bounce - But No Email Address Returned "
|
286
|
-
bounces.ResultsOrderedBy.should == "date"
|
287
|
-
bounces.OrderDirection.should == "asc"
|
288
|
-
bounces.PageNumber.should == 1
|
289
|
-
bounces.PageSize.should == 1000
|
290
|
-
bounces.RecordsOnThisPage.should == 2
|
291
|
-
bounces.TotalNumberOfRecords.should == 2
|
292
|
-
bounces.NumberOfPages.should == 1
|
281
|
+
bounces.Results.size.should be == 2
|
282
|
+
bounces.Results.first.EmailAddress.should be == "asdf@softbouncemyemail.com"
|
283
|
+
bounces.Results.first.ListID.should be == "654523a5855b4a440bae3fb295641546"
|
284
|
+
bounces.Results.first.BounceType.should be == "Soft"
|
285
|
+
bounces.Results.first.Date.should be == "2010-07-02 16:46:00"
|
286
|
+
bounces.Results.first.Reason.should be == "Bounce - But No Email Address Returned "
|
287
|
+
bounces.ResultsOrderedBy.should be == "date"
|
288
|
+
bounces.OrderDirection.should be == "asc"
|
289
|
+
bounces.PageNumber.should be == 1
|
290
|
+
bounces.PageSize.should be == 1000
|
291
|
+
bounces.RecordsOnThisPage.should be == 2
|
292
|
+
bounces.TotalNumberOfRecords.should be == 2
|
293
|
+
bounces.NumberOfPages.should be == 1
|
293
294
|
end
|
294
295
|
end
|
295
296
|
end
|