createsend 6.0.0 → 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 +13 -0
- data/README.md +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/lists_sample.rb +12 -2
- data/samples/subscribers_sample.rb +51 -0
- data/test/administrator_test.rb +5 -5
- data/test/campaign_test.rb +114 -114
- data/test/client_test.rb +110 -110
- data/test/createsend_test.rb +47 -47
- data/test/fixtures/subscriber_details.json +1 -0
- data/test/fixtures/{subscriber_details_with_track_pref.json → subscriber_details_with_track_and_sms_pref.json} +3 -1
- data/test/fixtures/unconfirmed_subscribers.json +4 -2
- data/test/journey_test.rb +86 -86
- data/test/list_test.rb +130 -129
- data/test/person_test.rb +6 -6
- data/test/segment_test.rb +23 -23
- data/test/subscriber_test.rb +55 -52
- 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 +5 -5
- data/samples/subscribes_sample.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aacabbc393f38cd9a35d6c304c9cc0c1381173d0b13ec6133e477524cd126225
|
4
|
+
data.tar.gz: cec43502b0d8c4e71d0ec34ba441d7c04e10ff64ed28ae6cc85b4f3b37c7a31b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db70e62fafe46cdae685f167076de7cf6d85c222933cd4c2110e8348f29a0b318d3be1d7ccb2c85d78837829c896f030e1dec45fc87318dd136e66b05f74e15a
|
7
|
+
data.tar.gz: 8a51368024b9db927b734d09c7f4473c79ecb6c2a71cddcc17ceafca5a07ad243f680d7dc24739667e1887aee75535ee307b61a30eb8fd9920f7f5b506e4a8ca
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
# createsend-ruby history
|
2
2
|
|
3
|
+
## v6.1.0 - 27 Oct 2023
|
4
|
+
* Added support for add/update subscribers specifying mobile_number and/or consent_to_send_sms (optional parameters)
|
5
|
+
* Subscriber.Add
|
6
|
+
* Subscriber.Update()
|
7
|
+
* Added support for lists endpoints to be able to return the ConsentToSendSms (keyword parameter, is optional)
|
8
|
+
* List.Active(include_sms_preference:true)
|
9
|
+
* List.Bounced(include_sms_preference:true)
|
10
|
+
* List.Unsubscribed(include_sms_preference:true)
|
11
|
+
* List.Unconfirmed(include_sms_preference:true)
|
12
|
+
* List.Deleted(include_sms_preference:true)
|
13
|
+
* Clean-up various warnings associated with this package (excluding dependency package warning)
|
14
|
+
* Add more samples
|
15
|
+
|
3
16
|
## v6.0.0 - 10 Feb, 2022
|
4
17
|
* Upgrades to Createsend API v3.3 which includes new breaking changes
|
5
18
|
* Breaking: 'client.campaigns' now returned an object to support pagination (use .Results to ge the array of campaigns)
|
data/README.md
CHANGED
@@ -194,7 +194,7 @@ should "add a subscriber with custom fields" do
|
|
194
194
|
stub_post(@auth, "subscribers/#{@list_id}.json", "add_subscriber.json")
|
195
195
|
custom_fields = [ { :Key => 'website', :Value => 'http://example.com/' } ]
|
196
196
|
email_address = CreateSend::Subscriber.add @auth, @list_id, "subscriber@example.com", "Subscriber", custom_fields, true, "Yes"
|
197
|
-
email_address.should == "subscriber@example.com"
|
197
|
+
email_address.should be == "subscriber@example.com"
|
198
198
|
end
|
199
199
|
```
|
200
200
|
|
data/lib/createsend/list.rb
CHANGED
@@ -116,37 +116,37 @@ module CreateSend
|
|
116
116
|
|
117
117
|
# Gets the active subscribers for this list.
|
118
118
|
def active(date="", page=1, page_size=1000, order_field="email",
|
119
|
-
order_direction="asc", include_tracking_preference=false)
|
119
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
120
120
|
paged_result_by_date("active", date, page, page_size, order_field,
|
121
|
-
order_direction, include_tracking_preference)
|
121
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
122
122
|
end
|
123
123
|
|
124
124
|
# Gets the unconfirmed subscribers for this list.
|
125
125
|
def unconfirmed(date="", page=1, page_size=1000, order_field="email",
|
126
|
-
order_direction="asc", include_tracking_preference=false)
|
126
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
127
127
|
paged_result_by_date("unconfirmed", date, page, page_size, order_field,
|
128
|
-
order_direction, include_tracking_preference)
|
128
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
129
129
|
end
|
130
130
|
|
131
131
|
# Gets the bounced subscribers for this list.
|
132
132
|
def bounced(date="", page=1, page_size=1000, order_field="email",
|
133
|
-
order_direction="asc", include_tracking_preference=false)
|
133
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
134
134
|
paged_result_by_date("bounced", date, page, page_size, order_field,
|
135
|
-
order_direction, include_tracking_preference)
|
135
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
136
136
|
end
|
137
137
|
|
138
138
|
# Gets the unsubscribed subscribers for this list.
|
139
139
|
def unsubscribed(date="", page=1, page_size=1000, order_field="email",
|
140
|
-
order_direction="asc", include_tracking_preference=false)
|
140
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
141
141
|
paged_result_by_date("unsubscribed", date, page, page_size, order_field,
|
142
|
-
order_direction, include_tracking_preference)
|
142
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
143
143
|
end
|
144
144
|
|
145
145
|
# Gets the deleted subscribers for this list.
|
146
146
|
def deleted(date="", page=1, page_size=1000, order_field="email",
|
147
|
-
order_direction="asc", include_tracking_preference=false)
|
147
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
148
148
|
paged_result_by_date("deleted", date, page, page_size, order_field,
|
149
|
-
order_direction, include_tracking_preference)
|
149
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
150
150
|
end
|
151
151
|
|
152
152
|
# Updates this list.
|
@@ -225,14 +225,15 @@ module CreateSend
|
|
225
225
|
private
|
226
226
|
|
227
227
|
def paged_result_by_date(resource, date, page, page_size, order_field,
|
228
|
-
order_direction, include_tracking_preference)
|
228
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
229
229
|
options = { :query => {
|
230
230
|
:date => date,
|
231
231
|
:page => page,
|
232
232
|
:pagesize => page_size,
|
233
233
|
:orderfield => order_field,
|
234
234
|
:orderdirection => order_direction,
|
235
|
-
:includetrackingpreference => include_tracking_preference
|
235
|
+
:includetrackingpreference => include_tracking_preference,
|
236
|
+
:includesmspreference => include_sms_preference} }
|
236
237
|
response = get resource, options
|
237
238
|
Hashie::Mash.new(response)
|
238
239
|
end
|
@@ -23,15 +23,17 @@ module CreateSend
|
|
23
23
|
|
24
24
|
# Adds a subscriber to a subscriber list.
|
25
25
|
def self.add(auth, list_id, email_address, name, custom_fields, resubscribe,
|
26
|
-
consent_to_track, restart_subscription_based_autoresponders=false)
|
26
|
+
consent_to_track, restart_subscription_based_autoresponders=false, mobile_number=nil, consent_to_send_sms=nil)
|
27
27
|
options = { :body => {
|
28
28
|
:EmailAddress => email_address,
|
29
29
|
:Name => name,
|
30
|
+
:MobileNumber => mobile_number,
|
30
31
|
:CustomFields => custom_fields,
|
31
32
|
:Resubscribe => resubscribe,
|
32
33
|
:RestartSubscriptionBasedAutoresponders =>
|
33
34
|
restart_subscription_based_autoresponders,
|
34
|
-
:ConsentToTrack => consent_to_track
|
35
|
+
:ConsentToTrack => consent_to_track,
|
36
|
+
:ConsentToSendSms => consent_to_send_sms }.to_json }
|
35
37
|
cs = CreateSend.new auth
|
36
38
|
response = cs.post "/subscribers/#{list_id}.json", options
|
37
39
|
response.parsed_response
|
@@ -70,17 +72,19 @@ module CreateSend
|
|
70
72
|
# Updates any aspect of a subscriber, including email address, name, and
|
71
73
|
# custom field data if supplied.
|
72
74
|
def update(new_email_address, name, custom_fields, resubscribe,
|
73
|
-
consent_to_track, restart_subscription_based_autoresponders=false)
|
75
|
+
consent_to_track, restart_subscription_based_autoresponders=false, mobile_number=nil, consent_to_send_sms=nil)
|
74
76
|
options = {
|
75
77
|
:query => { :email => @email_address },
|
76
78
|
:body => {
|
77
79
|
:EmailAddress => new_email_address,
|
78
80
|
:Name => name,
|
81
|
+
:MobileNumber => mobile_number,
|
79
82
|
:CustomFields => custom_fields,
|
80
83
|
:Resubscribe => resubscribe,
|
81
84
|
:RestartSubscriptionBasedAutoresponders =>
|
82
85
|
restart_subscription_based_autoresponders,
|
83
|
-
:ConsentToTrack => consent_to_track
|
86
|
+
:ConsentToTrack => consent_to_track,
|
87
|
+
:ConsentToSendSms => consent_to_send_sms }.to_json }
|
84
88
|
put "/subscribers/#{@list_id}.json", options
|
85
89
|
# Update @email_address, so this object can continue to be used reliably
|
86
90
|
@email_address = new_email_address
|
data/lib/createsend/version.rb
CHANGED
data/samples/lists_sample.rb
CHANGED
@@ -12,7 +12,11 @@ class ListsSample
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def get_active_subscribers
|
15
|
-
@list.active
|
15
|
+
@list.active()
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_active_with_sms_preference_subscribers
|
19
|
+
@list.active(include_sms_preference:true)
|
16
20
|
end
|
17
21
|
|
18
22
|
def get_bounced_subscribers
|
@@ -23,6 +27,10 @@ class ListsSample
|
|
23
27
|
@list.unsubscribed
|
24
28
|
end
|
25
29
|
|
30
|
+
def get_unsubscribed_with_sms_preference_subscribers
|
31
|
+
@list.unsubscribed(include_sms_preference:true)
|
32
|
+
end
|
33
|
+
|
26
34
|
def get_unconfirmed_subscribers
|
27
35
|
@list.unconfirmed
|
28
36
|
end
|
@@ -35,7 +43,9 @@ end
|
|
35
43
|
sample = ListsSample.new
|
36
44
|
|
37
45
|
puts "All active subscribers: #{sample.get_active_subscribers.to_json}\n\n"
|
46
|
+
puts "All active subscribers with sms preference: #{sample.get_active_with_sms_preference_subscribers.to_json}\n\n"
|
38
47
|
puts "All bounced subscribers: #{sample.get_bounced_subscribers.to_json}\n\n"
|
39
|
-
puts "All unsubscribed subscribers: #{sample.get_unsubscribed_subscribers.to_json}\n\n"
|
40
48
|
puts "All unconfirmed subscribers: #{sample.get_unconfirmed_subscribers.to_json}\n\n"
|
49
|
+
puts "All unsubscribed subscribers: #{sample.get_unsubscribed_subscribers.to_json}\n\n"
|
50
|
+
puts "All unsubscribed subscribers with sms preference: #{sample.get_unsubscribed_with_sms_preference_subscribers.to_json}\n\n"
|
41
51
|
puts "All deleted subscribers: #{sample.get_deleted_subscribers.to_json}\n\n"
|
@@ -0,0 +1,51 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'createsend'
|
3
|
+
|
4
|
+
class SubscribersSample
|
5
|
+
def initialize
|
6
|
+
raise 'CREATESEND_ACCESS_TOKEN env var missing' if ENV['CREATESEND_ACCESS_TOKEN'].nil?
|
7
|
+
raise 'CREATESEND_REFRESH_TOKEN env var missing' if ENV['CREATESEND_REFRESH_TOKEN'].nil?
|
8
|
+
raise 'CREATESEND_LIST_ID env var missing' if ENV['CREATESEND_LIST_ID'].nil?
|
9
|
+
|
10
|
+
@auth = {:access_token => ENV['CREATESEND_ACCESS_TOKEN'], :refresh_token => ENV['CREATESEND_REFRESH_TOKEN']}
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_subscriber_without_mobile
|
14
|
+
@subscriberAdded = CreateSend::Subscriber.add @auth, ENV['CREATESEND_LIST_ID'], "subscriberNoMobile@example.com", "Subscriber", [], true, "Yes", false
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_subscriber_with_mobile
|
18
|
+
@subscriberAdded = CreateSend::Subscriber.add @auth, ENV['CREATESEND_LIST_ID'], "subscriberWithMobile@example.com", "SubscriberWithMobile", [], true, "Yes", false, "+61423152523"
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_subscriber_with_mobile_and_consent
|
22
|
+
@subscriberAdded = CreateSend::Subscriber.add @auth, ENV['CREATESEND_LIST_ID'], "subscriberWithMobileAndConsent@example.com", "SubscriberWithMobileAndConsent", [], true, "Yes", false, "+61423152523", "Yes"
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_subscriber
|
26
|
+
@subscriber = CreateSend::Subscriber.get @auth, ENV['CREATESEND_LIST_ID'], "subscriberNoMobile@example.com"
|
27
|
+
end
|
28
|
+
|
29
|
+
def import_subscribers
|
30
|
+
subscribers = [
|
31
|
+
{"EmailAddress":"subscriberImport11@example.com","Name":"subscriberImport11", "ConsentToTrack":"Yes"},
|
32
|
+
{"EmailAddress":"subscriberImport12@example.com","Name":"subscriberImport12", "ConsentToTrack":"No", "MobileNumber":"+1612105111", "ConsentToSendSms":"Yes"},
|
33
|
+
{"EmailAddress":"subscriberImport13@example.com","Name":"subscriberImport13", "ConsentToTrack":"Yes", "MobileNumber":"+1612105112"}
|
34
|
+
]
|
35
|
+
@subscribersImported = CreateSend::Subscriber.import(@auth, ENV['CREATESEND_LIST_ID'], subscribers, true, false, false)
|
36
|
+
end
|
37
|
+
|
38
|
+
def update_subscribers
|
39
|
+
@subscriber = CreateSend::Subscriber.new(@auth, ENV['CREATESEND_LIST_ID'], 'subscriberWithMobileAndConsent@example.com')
|
40
|
+
@subscriberUpdated = @subscriber.update("subscriberWithMobileAndConsent@example.com", "Subscriber With Mobile And Consent", [], true, "Yes", false, "+16175551218")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
sample = SubscribersSample.new
|
45
|
+
|
46
|
+
puts "add_subscriber_without_mobile: #{sample.add_subscriber_without_mobile.to_json}\n\n"
|
47
|
+
puts "add_subscriber_with_mobile: #{sample.add_subscriber_with_mobile.to_json}\n\n"
|
48
|
+
puts "add_subscriber_with_mobile_and_consent: #{sample.add_subscriber_with_mobile_and_consent.to_json}\n\n"
|
49
|
+
puts "get subscribers: #{sample.get_subscriber.to_json}\n\n"
|
50
|
+
puts "import_subscribers: #{sample.import_subscribers.to_json}\n\n"
|
51
|
+
puts "update_subscribers: #{sample.update_subscribers.to_json}\n\n"
|
data/test/administrator_test.rb
CHANGED
@@ -10,15 +10,15 @@ class AdministratorTest < Test::Unit::TestCase
|
|
10
10
|
email = "admin@example.com"
|
11
11
|
stub_get(@auth, "admins.json?email=#{ERB::Util.url_encode(email)}", "admin_details.json")
|
12
12
|
admin = CreateSend::Administrator.get @auth, email
|
13
|
-
admin.EmailAddress.should == email
|
14
|
-
admin.Name.should == "Admin One"
|
15
|
-
admin.Status.should == "Active"
|
13
|
+
admin.EmailAddress.should be == email
|
14
|
+
admin.Name.should be == "Admin One"
|
15
|
+
admin.Status.should be == "Active"
|
16
16
|
end
|
17
17
|
|
18
18
|
should "add an administrator" do
|
19
19
|
stub_post(@auth, "admins.json", "add_admin.json")
|
20
20
|
result = CreateSend::Administrator.add @auth, "admin@example.com", "Admin"
|
21
|
-
result.EmailAddress.should == "admin@example.com"
|
21
|
+
result.EmailAddress.should be == "admin@example.com"
|
22
22
|
end
|
23
23
|
|
24
24
|
should "update an administrator" do
|
@@ -26,7 +26,7 @@ class AdministratorTest < Test::Unit::TestCase
|
|
26
26
|
new_email = "new_email_address@example.com"
|
27
27
|
stub_put(@auth, "admins.json?email=#{ERB::Util.url_encode(email)}", nil)
|
28
28
|
@admin.update new_email, "Admin Name"
|
29
|
-
@admin.email_address.should == new_email
|
29
|
+
@admin.email_address.should be == new_email
|
30
30
|
end
|
31
31
|
|
32
32
|
should "delete an admin" do
|
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,160 +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.Name.should == "Campaign Name"
|
141
|
-
summary.Recipients.should == 5
|
142
|
-
summary.TotalOpened.should == 10
|
143
|
-
summary.Clicks.should == 0
|
144
|
-
summary.Unsubscribed.should == 0
|
145
|
-
summary.Bounced.should == 0
|
146
|
-
summary.UniqueOpened.should == 5
|
147
|
-
summary.Mentions.should == 23
|
148
|
-
summary.Forwards.should == 11
|
149
|
-
summary.Likes.should == 32
|
150
|
-
summary.WebVersionURL.should == "http://createsend.com/t/r-3A433FC72FFE3B8B"
|
151
|
-
summary.WebVersionTextURL.should == "http://createsend.com/t/r-3A433FC72FFE3B8B/t"
|
152
|
-
summary.WorldviewURL.should == "http://client.createsend.com/reports/wv/r/3A433FC72FFE3B8B"
|
153
|
-
summary.SpamComplaints.should == 23
|
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
|
154
154
|
end
|
155
155
|
|
156
156
|
should "get the email client usage for a campaign" do
|
157
157
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/emailclientusage.json", "email_client_usage.json")
|
158
158
|
ecu = @campaign.email_client_usage
|
159
|
-
ecu.size.should == 6
|
160
|
-
ecu.first.Client.should == "iOS Devices"
|
161
|
-
ecu.first.Version.should == "iPhone"
|
162
|
-
ecu.first.Percentage.should == 19.83
|
163
|
-
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
|
164
164
|
end
|
165
165
|
|
166
166
|
should "get the lists and segments for a campaign" do
|
167
167
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/listsandsegments.json", "campaign_listsandsegments.json")
|
168
168
|
ls = @campaign.lists_and_segments
|
169
|
-
ls.Lists.size.should == 1
|
170
|
-
ls.Segments.size.should == 1
|
171
|
-
ls.Lists.first.Name.should == "List One"
|
172
|
-
ls.Lists.first.ListID.should == "a58ee1d3039b8bec838e6d1482a8a965"
|
173
|
-
ls.Segments.first.Title.should == "Segment for campaign"
|
174
|
-
ls.Segments.first.ListID.should == "2bea949d0bf96148c3e6a209d2e82060"
|
175
|
-
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"
|
176
176
|
end
|
177
177
|
|
178
178
|
should "get the recipients for a campaign" do
|
179
179
|
stub_get(@auth, "campaigns/#{@campaign.campaign_id}/recipients.json?pagesize=20&orderfield=email&page=1&orderdirection=asc", "campaign_recipients.json")
|
180
180
|
res = @campaign.recipients page=1, page_size=20
|
181
|
-
res.ResultsOrderedBy.should == "email"
|
182
|
-
res.OrderDirection.should == "asc"
|
183
|
-
res.PageNumber.should == 1
|
184
|
-
res.PageSize.should == 20
|
185
|
-
res.RecordsOnThisPage.should == 20
|
186
|
-
res.TotalNumberOfRecords.should == 2200
|
187
|
-
res.NumberOfPages.should == 110
|
188
|
-
res.Results.size.should == 20
|
189
|
-
res.Results.first.EmailAddress.should == "subs+6g76t7t0@example.com"
|
190
|
-
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"
|
191
191
|
end
|
192
192
|
|
193
193
|
should "get the opens for a campaign" do
|
194
194
|
min_date = "2010-01-01"
|
195
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")
|
196
196
|
opens = @campaign.opens min_date
|
197
|
-
opens.Results.size.should == 5
|
198
|
-
opens.Results.first.EmailAddress.should == "subs+6576576576@example.com"
|
199
|
-
opens.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
|
200
|
-
opens.Results.first.Date.should == "2010-10-11 08:29:00"
|
201
|
-
opens.Results.first.IPAddress.should == "192.168.126.87"
|
202
|
-
opens.Results.first.Latitude.should == -33.8683
|
203
|
-
opens.Results.first.Longitude.should == 151.2086
|
204
|
-
opens.Results.first.City.should == "Sydney"
|
205
|
-
opens.Results.first.Region.should == "New South Wales"
|
206
|
-
opens.Results.first.CountryCode.should == "AU"
|
207
|
-
opens.Results.first.CountryName.should == "Australia"
|
208
|
-
opens.ResultsOrderedBy.should == "date"
|
209
|
-
opens.OrderDirection.should == "asc"
|
210
|
-
opens.PageNumber.should == 1
|
211
|
-
opens.PageSize.should == 1000
|
212
|
-
opens.RecordsOnThisPage.should == 5
|
213
|
-
opens.TotalNumberOfRecords.should == 5
|
214
|
-
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
|
215
215
|
end
|
216
216
|
|
217
217
|
should "get the subscriber clicks for a campaign" do
|
218
218
|
min_date = "2010-01-01"
|
219
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")
|
220
220
|
clicks = @campaign.clicks min_date
|
221
|
-
clicks.Results.size.should == 3
|
222
|
-
clicks.Results.first.EmailAddress.should == "subs+6576576576@example.com"
|
223
|
-
clicks.Results.first.URL.should == "http://video.google.com.au/?hl=en&tab=wv"
|
224
|
-
clicks.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
|
225
|
-
clicks.Results.first.Date.should == "2010-10-11 08:29:00"
|
226
|
-
clicks.Results.first.IPAddress.should == "192.168.126.87"
|
227
|
-
clicks.Results.first.Latitude.should == -33.8683
|
228
|
-
clicks.Results.first.Longitude.should == 151.2086
|
229
|
-
clicks.Results.first.City.should == "Sydney"
|
230
|
-
clicks.Results.first.Region.should == "New South Wales"
|
231
|
-
clicks.Results.first.CountryCode.should == "AU"
|
232
|
-
clicks.Results.first.CountryName.should == "Australia"
|
233
|
-
clicks.ResultsOrderedBy.should == "date"
|
234
|
-
clicks.OrderDirection.should == "asc"
|
235
|
-
clicks.PageNumber.should == 1
|
236
|
-
clicks.PageSize.should == 1000
|
237
|
-
clicks.RecordsOnThisPage.should == 3
|
238
|
-
clicks.TotalNumberOfRecords.should == 3
|
239
|
-
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
|
240
240
|
end
|
241
241
|
|
242
242
|
should "get the unsubscribes for a campaign" do
|
243
243
|
min_date = "2010-01-01"
|
244
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")
|
245
245
|
unsubscribes = @campaign.unsubscribes min_date
|
246
|
-
unsubscribes.Results.size.should == 1
|
247
|
-
unsubscribes.Results.first.EmailAddress.should == "subs+6576576576@example.com"
|
248
|
-
unsubscribes.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
|
249
|
-
unsubscribes.Results.first.Date.should == "2010-10-11 08:29:00"
|
250
|
-
unsubscribes.Results.first.IPAddress.should == "192.168.126.87"
|
251
|
-
unsubscribes.ResultsOrderedBy.should == "date"
|
252
|
-
unsubscribes.OrderDirection.should == "asc"
|
253
|
-
unsubscribes.PageNumber.should == 1
|
254
|
-
unsubscribes.PageSize.should == 1000
|
255
|
-
unsubscribes.RecordsOnThisPage.should == 1
|
256
|
-
unsubscribes.TotalNumberOfRecords.should == 1
|
257
|
-
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
|
258
258
|
end
|
259
259
|
|
260
260
|
should "get the spam complaints for a campaign" do
|
261
261
|
min_date = "2010-01-01"
|
262
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")
|
263
263
|
spam = @campaign.spam min_date
|
264
|
-
spam.Results.size.should == 1
|
265
|
-
spam.Results.first.EmailAddress.should == "subs+6576576576@example.com"
|
266
|
-
spam.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
|
267
|
-
spam.Results.first.Date.should == "2010-10-11 08:29:00"
|
268
|
-
spam.ResultsOrderedBy.should == "date"
|
269
|
-
spam.OrderDirection.should == "asc"
|
270
|
-
spam.PageNumber.should == 1
|
271
|
-
spam.PageSize.should == 1000
|
272
|
-
spam.RecordsOnThisPage.should == 1
|
273
|
-
spam.TotalNumberOfRecords.should == 1
|
274
|
-
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
|
275
275
|
end
|
276
276
|
|
277
277
|
should "get the bounces for a campaign" do
|
278
278
|
min_date = "2010-01-01"
|
279
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")
|
280
280
|
bounces = @campaign.bounces min_date
|
281
|
-
bounces.Results.size.should == 2
|
282
|
-
bounces.Results.first.EmailAddress.should == "asdf@softbouncemyemail.com"
|
283
|
-
bounces.Results.first.ListID.should == "654523a5855b4a440bae3fb295641546"
|
284
|
-
bounces.Results.first.BounceType.should == "Soft"
|
285
|
-
bounces.Results.first.Date.should == "2010-07-02 16:46:00"
|
286
|
-
bounces.Results.first.Reason.should == "Bounce - But No Email Address Returned "
|
287
|
-
bounces.ResultsOrderedBy.should == "date"
|
288
|
-
bounces.OrderDirection.should == "asc"
|
289
|
-
bounces.PageNumber.should == 1
|
290
|
-
bounces.PageSize.should == 1000
|
291
|
-
bounces.RecordsOnThisPage.should == 2
|
292
|
-
bounces.TotalNumberOfRecords.should == 2
|
293
|
-
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
|
294
294
|
end
|
295
295
|
end
|
296
296
|
end
|