createsend 6.0.0 → 6.1.1
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.
- checksums.yaml +4 -4
- data/HISTORY.md +18 -0
- data/README.md +1 -1
- data/createsend.gemspec +2 -1
- data/lib/createsend/createsend.rb +4 -0
- 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 +53 -52
- 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 +14 -8
- 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: 6f3f52a5b4e7e7f22990a722f419a720a832de253aa12e7df6bc0f108f9bd90c
|
4
|
+
data.tar.gz: 0e6977d50918dc9ecac114644fb30842603644c745eea1fe93ddb9237fe202d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb9f82623a9e5c3cea4ee80891e6bb4ab158c303a59c025eee8d8f349919ed420def2b98884ba59e17b33668119f5d642cfdf99039ea9fa4eba4e4ef79140c5c
|
7
|
+
data.tar.gz: d397f0724a5e5b6428482e717eb225738c6bc03bb9a987ddd58dc9c4ad58cefff95274c42ac12ff682433d8aefdee1bfecdad9d53c5dbc3f4f380421be3573d8
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# createsend-ruby history
|
2
2
|
|
3
|
+
## v6.1.1 - 20 Aug 2024
|
4
|
+
* Merged support for error code 429 (rate limiting on subscribers update)
|
5
|
+
* Merged gemspec required ruby version to `>= 2.0`
|
6
|
+
* Merged `hashie` dependency to `>= 3`, `< 6`
|
7
|
+
|
8
|
+
## v6.1.0 - 27 Oct 2023
|
9
|
+
* Added support for add/update subscribers specifying mobile_number and/or consent_to_send_sms (optional parameters)
|
10
|
+
* Subscriber.Add
|
11
|
+
* Subscriber.Update()
|
12
|
+
* Added support for lists endpoints to be able to return the ConsentToSendSms (keyword parameter, is optional)
|
13
|
+
* List.Active(include_sms_preference:true)
|
14
|
+
* List.Bounced(include_sms_preference:true)
|
15
|
+
* List.Unsubscribed(include_sms_preference:true)
|
16
|
+
* List.Unconfirmed(include_sms_preference:true)
|
17
|
+
* List.Deleted(include_sms_preference:true)
|
18
|
+
* Clean-up various warnings associated with this package (excluding dependency package warning)
|
19
|
+
* Add more samples
|
20
|
+
|
3
21
|
## v6.0.0 - 10 Feb, 2022
|
4
22
|
* Upgrades to Createsend API v3.3 which includes new breaking changes
|
5
23
|
* 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/createsend.gemspec
CHANGED
@@ -5,7 +5,7 @@ require File.expand_path('lib/createsend/version')
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.add_runtime_dependency 'json', '>= 1.0'
|
8
|
-
s.add_runtime_dependency 'hashie', '
|
8
|
+
s.add_runtime_dependency 'hashie', '>= 3.0', '< 6'
|
9
9
|
s.add_runtime_dependency 'httparty', '~> 0.14'
|
10
10
|
s.add_development_dependency 'rake', '~> 12.3.3'
|
11
11
|
s.add_development_dependency 'fakeweb', '~> 1.3'
|
@@ -27,5 +27,6 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.version = CreateSend::VERSION
|
28
28
|
s.platform = Gem::Platform::RUBY
|
29
29
|
s.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if s.respond_to? :required_rubygems_version=
|
30
|
+
s.required_ruby_version = ">=2.0"
|
30
31
|
s.licenses = ['MIT']
|
31
32
|
end
|
@@ -30,6 +30,8 @@ module CreateSend
|
|
30
30
|
class Unauthorized < CreateSendError; end
|
31
31
|
# Raised for HTTP response code of 404
|
32
32
|
class NotFound < ClientError; end
|
33
|
+
# Raised for HTTP response code of 429
|
34
|
+
class TooManyRequests < ClientError; end
|
33
35
|
|
34
36
|
# Raised for HTTP response code of 401, specifically when an OAuth token
|
35
37
|
# in invalid (Code: 120, Message: 'Invalid OAuth Token')
|
@@ -279,6 +281,8 @@ module CreateSend
|
|
279
281
|
end
|
280
282
|
when 404
|
281
283
|
raise NotFound.new
|
284
|
+
when 429
|
285
|
+
raise TooManyRequests.new
|
282
286
|
when 400...500
|
283
287
|
raise ClientError.new
|
284
288
|
when 500...600
|
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
|