streamsend 0.2.3 → 1.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -5
- data/.rspec +1 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +25 -17
- data/README.md +76 -0
- data/Rakefile +1 -2
- data/lib/streamsend/api/account.rb +6 -48
- data/lib/streamsend/api/audience.rb +14 -0
- data/lib/streamsend/api/base/base_call.rb +60 -0
- data/lib/streamsend/api/base/create.rb +41 -0
- data/lib/streamsend/api/base/destroy.rb +43 -0
- data/lib/streamsend/api/base/index.rb +51 -0
- data/lib/streamsend/api/base/show.rb +42 -0
- data/lib/streamsend/api/base/update.rb +43 -0
- data/lib/streamsend/api/blast.rb +51 -0
- data/lib/streamsend/api/bounce.rb +20 -0
- data/lib/streamsend/api/click.rb +18 -0
- data/lib/streamsend/api/configuration.rb +26 -0
- data/lib/streamsend/api/email.rb +20 -0
- data/lib/streamsend/api/exception.rb +4 -4
- data/lib/streamsend/api/field.rb +20 -0
- data/lib/streamsend/api/field_option.rb +60 -0
- data/lib/streamsend/api/filter.rb +20 -0
- data/lib/streamsend/api/from_email_address.rb +24 -0
- data/lib/streamsend/api/import.rb +11 -0
- data/lib/streamsend/api/link.rb +11 -0
- data/lib/streamsend/api/list.rb +13 -39
- data/lib/streamsend/api/membership.rb +28 -0
- data/lib/streamsend/api/person.rb +66 -0
- data/lib/streamsend/api/result.rb +13 -0
- data/lib/streamsend/api/session.rb +73 -0
- data/lib/streamsend/api/unsubscribe.rb +20 -0
- data/lib/streamsend/api/upload.rb +13 -0
- data/lib/streamsend/api/user.rb +67 -38
- data/lib/streamsend/api/view.rb +8 -0
- data/lib/streamsend/version.rb +3 -0
- data/lib/streamsend.rb +35 -16
- data/spec/lib/streamsend/api/integration/account_spec.rb +50 -0
- data/spec/lib/streamsend/api/integration/audience_spec.rb +56 -0
- data/spec/lib/streamsend/api/integration/blast_spec.rb +110 -0
- data/spec/lib/streamsend/api/integration/bounce_spec.rb +43 -0
- data/spec/lib/streamsend/api/integration/click_spec.rb +37 -0
- data/spec/lib/streamsend/api/integration/email_spec.rb +76 -0
- data/spec/lib/streamsend/api/integration/field_option_spec.rb +87 -0
- data/spec/lib/streamsend/api/integration/field_spec.rb +75 -0
- data/spec/lib/streamsend/api/integration/filter_spec.rb +101 -0
- data/spec/lib/streamsend/api/integration/from_email_address_spec.rb +46 -0
- data/spec/lib/streamsend/api/integration/helpers.rb +16 -0
- data/spec/lib/streamsend/api/integration/import_spec.rb +35 -0
- data/spec/lib/streamsend/api/integration/link_spec.rb +39 -0
- data/spec/lib/streamsend/api/integration/list_spec.rb +83 -0
- data/spec/lib/streamsend/api/integration/membership_spec.rb +69 -0
- data/spec/lib/streamsend/api/integration/person_spec.rb +119 -0
- data/spec/lib/streamsend/api/integration/unsubscribe_spec.rb +47 -0
- data/spec/lib/streamsend/api/integration/upload_spec.rb +29 -0
- data/spec/lib/streamsend/api/integration/user_spec.rb +99 -0
- data/spec/lib/streamsend/api/integration/view_spec.rb +27 -0
- data/spec/lib/streamsend/api/unit/base/base_call_spec.rb +66 -0
- data/spec/lib/streamsend/api/unit/base/create_spec.rb +67 -0
- data/spec/lib/streamsend/api/unit/base/destroy_spec.rb +59 -0
- data/spec/lib/streamsend/api/unit/base/index_spec.rb +85 -0
- data/spec/lib/streamsend/api/unit/base/show_spec.rb +68 -0
- data/spec/lib/streamsend/api/unit/base/update_spec.rb +76 -0
- data/spec/lib/streamsend/api/unit/blast_spec.rb +79 -0
- data/spec/lib/streamsend/api/unit/bounce_spec.rb +36 -0
- data/spec/lib/streamsend/api/unit/click_spec.rb +34 -0
- data/spec/lib/streamsend/api/unit/field_option_spec.rb +71 -0
- data/spec/lib/streamsend/api/unit/from_email_address_spec.rb +20 -0
- data/spec/lib/streamsend/api/unit/link_spec.rb +33 -0
- data/spec/lib/streamsend/api/unit/list_spec.rb +33 -0
- data/spec/lib/streamsend/api/unit/membership_spec.rb +46 -0
- data/spec/lib/streamsend/api/unit/person_spec.rb +102 -0
- data/spec/lib/streamsend/api/unit/result_spec.rb +13 -0
- data/spec/lib/streamsend/api/unit/session_spec.rb +62 -0
- data/spec/lib/streamsend/api/unit/unsubscribe_spec.rb +33 -0
- data/spec/lib/streamsend/api/unit/user_spec.rb +102 -0
- data/spec/spec_helper.rb +8 -11
- data/streamsend.gemspec +22 -23
- metadata +250 -178
- checksums.yaml +0 -7
- data/.pair +0 -10
- data/README.rdoc +0 -1
- data/lib/streamsend/api/resource.rb +0 -41
- data/lib/streamsend/api/subscriber.rb +0 -113
- data/spec/integration/account_spec.rb +0 -69
- data/spec/integration/fixtures/vcr_cassettes/streamsend.yml +0 -6831
- data/spec/integration/integration.yml +0 -5
- data/spec/integration/list_spec.rb +0 -68
- data/spec/integration/spec_helper.rb +0 -16
- data/spec/integration/subscriber_spec.rb +0 -24
- data/spec/integration/user_spec.rb +0 -58
- data/spec/lib/streamsend/api/list_spec.rb +0 -179
- data/spec/lib/streamsend/api/resource_spec.rb +0 -24
- data/spec/lib/streamsend/api/subscriber_spec.rb +0 -345
- data/spec/lib/streamsend/api/user_spec.rb +0 -149
- data/spec/lib/streamsend/api_spec.rb +0 -31
- data/watcher_config.rb +0 -2
@@ -0,0 +1,50 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Account
|
6
|
+
describe "Account calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:first_user){ StreamSend::Api::User::Index.new(session).execute.first }
|
9
|
+
let(:randomish){ DateTime.now.to_i.to_s }
|
10
|
+
let(:owner_email){ "me+#{randomish}@testing.this" }
|
11
|
+
let(:owner_hash){ { :email_address => owner_email, :password => "passwordyo", :first_name => "Test", :last_name => "User", :administrator => true} }
|
12
|
+
let(:company_hash){ {:first_name => "first", :last_name => "last", :company_name => "company",
|
13
|
+
:email => "company@email.cocococo", :address_1 => "123 Fourth Street",
|
14
|
+
:city => "This one", :state => "CA", :postal_code => "55555", :country => "USA",
|
15
|
+
:phone => 5555555555, :industry => "industry", :how_heard => "cow herd"} }
|
16
|
+
let(:account_hash) { {:account => { :plan_id => 125, :quota => 100, :owner => owner_hash, :company_information => company_hash } } }
|
17
|
+
|
18
|
+
|
19
|
+
before do
|
20
|
+
WebMock.disable!
|
21
|
+
end
|
22
|
+
|
23
|
+
after do
|
24
|
+
WebMock.enable!
|
25
|
+
end
|
26
|
+
|
27
|
+
describe Index do
|
28
|
+
it "returns the accounts" do
|
29
|
+
accounts = StreamSend::Api::Account::Index.new(session).execute
|
30
|
+
expect(accounts.count).to be > 0
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe Show do
|
35
|
+
it "should show a account by id" do
|
36
|
+
pending "Billing service could not be setup."
|
37
|
+
creator = StreamSend::Api::Account::Create.new(session)
|
38
|
+
account_id = creator.execute(account_hash)
|
39
|
+
shower = StreamSend::Api::Acocunt.Show(session)
|
40
|
+
account = shower.execute(account_id)
|
41
|
+
expect(account.id).to eq(account_id)
|
42
|
+
expect(account.quota).to eq(account_hash.quota)
|
43
|
+
expect(account.owner.email_address).to eq(account_hash.owner.email_address)
|
44
|
+
#destroy account
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
class Audience
|
6
|
+
describe "Audience calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:shower){ Show.new(session) }
|
9
|
+
before do
|
10
|
+
WebMock.disable!
|
11
|
+
@audience_id = 1
|
12
|
+
@audience_hash = { :audience => { :name => "new name #{DateTime.now.to_i.to_s}" } }
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
WebMock.enable!
|
17
|
+
end
|
18
|
+
|
19
|
+
describe Index do
|
20
|
+
let(:indexer){ Index.new(session) }
|
21
|
+
|
22
|
+
describe "#execute" do
|
23
|
+
it "returns an array of audiences" do
|
24
|
+
audiences = indexer.execute
|
25
|
+
expect(audiences.count).to be == 1
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
describe Show do
|
32
|
+
|
33
|
+
describe "#execute" do
|
34
|
+
it "returns an audience by id" do
|
35
|
+
audience = shower.execute(@audience_id)
|
36
|
+
expect(audience.id).to eq(@audience_id)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
describe Update do
|
43
|
+
let(:updater){ StreamSend::Api::Audience::Update.new(session) }
|
44
|
+
describe "#execute" do
|
45
|
+
it "updates the name of the audience" do
|
46
|
+
updated = updater.execute(@audience_id, @audience_hash)
|
47
|
+
expect(updated).to eq(true)
|
48
|
+
audience = shower.execute(@audience_id)
|
49
|
+
expect(audience.name).to eq(@audience_hash[:audience][:name])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Blast
|
6
|
+
describe "Blast calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:list_hash){ { :list => { :name => "New list #{DateTime.now.to_i.to_s}" } } }
|
9
|
+
let(:list_id){ StreamSend::Api::List::Create.new(session).execute(list_hash) }
|
10
|
+
let(:future_date){ DateTime.now + 1.day }
|
11
|
+
|
12
|
+
before do
|
13
|
+
WebMock.disable!
|
14
|
+
from_addresses = StreamSend::Api::FromEmailAddress::Index.new(session).execute
|
15
|
+
from_addy = from_addresses.select{ |address| address.activated == true }.first
|
16
|
+
from = {:name => "Mister Tester", :email_address => from_addy.email_address}
|
17
|
+
@blast_obj = { :blast => { :subject => "Tesing yo.", :body => { :text_part => "test email" }, :to => { :include_lists => list_id.to_s, :audience_id => 1 }, :scheduled_for => future_date, :from => from } }
|
18
|
+
@test_obj = { :blast => { :subject => "Tesing yo.", :body => { :text_part => "test email" }, :to => "testy@testy.mctest" , :scheduled_for => future_date, :from => from } }
|
19
|
+
end
|
20
|
+
|
21
|
+
after do
|
22
|
+
WebMock.enable!
|
23
|
+
end
|
24
|
+
|
25
|
+
describe Index do
|
26
|
+
it "returns an index of blasts" do
|
27
|
+
index = Index.new(session)
|
28
|
+
blasts = index.execute
|
29
|
+
expect(blasts.count).to be > 0
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe Scheduled do
|
34
|
+
it "returns scheduled blasts if there are any" do
|
35
|
+
scheduler = Scheduled.new(session)
|
36
|
+
scheduled = scheduler.execute
|
37
|
+
if scheduled.count > 0
|
38
|
+
scheduled_values = ["scheduled", "preparing"]
|
39
|
+
expect(scheduled_values).to include(scheduled[0].status)
|
40
|
+
else
|
41
|
+
pending "No scheduled blasts at this time to inspect or something went wrong."
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe Sent do
|
47
|
+
it "returns sent blasts" do
|
48
|
+
senter = Sent.new(session)
|
49
|
+
sent = senter.execute
|
50
|
+
expect(sent.count).to be > 0
|
51
|
+
expect(sent[0].status).to eq("sent")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe Show do
|
56
|
+
it "returns a blast by id" do
|
57
|
+
creator = Create.new(session)
|
58
|
+
id = creator.execute(@blast_obj)
|
59
|
+
shower = Show.new(session)
|
60
|
+
show = shower.execute(id)
|
61
|
+
expect(show.subject).to eq(@blast_obj[:blast][:subject])
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe Update do
|
66
|
+
it "updates a blast" do
|
67
|
+
pending "fails intermittently due to locked blast."
|
68
|
+
creator = Create.new(session)
|
69
|
+
id = creator.execute(@blast_obj)
|
70
|
+
shower = Show.new(session)
|
71
|
+
show = shower.execute(id)
|
72
|
+
show.scheduled_for = DateTime.now + 10.days
|
73
|
+
|
74
|
+
updater = Update.new(session)
|
75
|
+
updater.execute(id, {:blast => show.to_hash})
|
76
|
+
|
77
|
+
new_show = shower.execute(id)
|
78
|
+
expect(DateTime.parse new_show.scheduled_for).to be > future_date
|
79
|
+
|
80
|
+
destroyer = Destroy.new(session)
|
81
|
+
destroyer.execute(id)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe Destroy do
|
86
|
+
it "destroys a blast" do
|
87
|
+
pending "fails intermittently due to locked blast."
|
88
|
+
creator = Create.new(session)
|
89
|
+
id = creator.execute(@blast_obj)
|
90
|
+
|
91
|
+
destroyer = Destroy.new(session)
|
92
|
+
destroyer.execute(id)
|
93
|
+
|
94
|
+
expect do
|
95
|
+
shower = Show.new(session)
|
96
|
+
blast = shower.execute(id)
|
97
|
+
end.to raise_exception(StreamSend::Api::Exception, "Could not find any blasts with the specified id. (404)")
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe Test do
|
102
|
+
it "sends a test blast" do
|
103
|
+
tester = Test.new(session)
|
104
|
+
expect(tester.execute(@test_obj)).to eq(200)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Bounce
|
6
|
+
describe "Bounce calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
before do
|
9
|
+
WebMock.disable!
|
10
|
+
@blast_id = 70011
|
11
|
+
end
|
12
|
+
|
13
|
+
after do
|
14
|
+
WebMock.enable!
|
15
|
+
end
|
16
|
+
|
17
|
+
describe Index do
|
18
|
+
let(:indexer){ Index.new(session) }
|
19
|
+
let(:softer){ Soft.new(session) }
|
20
|
+
let(:harder){ Hard.new(session) }
|
21
|
+
|
22
|
+
describe "#execute" do
|
23
|
+
it "returns an array of bounces" do
|
24
|
+
bounces = indexer.execute(@blast_id)
|
25
|
+
expect(bounces.count).to be <= 1
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns an array of hard bounces" do
|
29
|
+
bounces = harder.execute(@blast_id)
|
30
|
+
expect(bounces.count).to eq(0) #can't create a hard bounce :/
|
31
|
+
end
|
32
|
+
|
33
|
+
it "returns an array of soft bounces" do
|
34
|
+
bounces = softer.execute(@blast_id)
|
35
|
+
expect(bounces.count).to eq(1)
|
36
|
+
expect(bounces[0].bounce_type).to eq("soft")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Click
|
6
|
+
describe "Click calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:blast_id) { 70361 }
|
9
|
+
let(:link_id) { 27581 }
|
10
|
+
|
11
|
+
before do
|
12
|
+
WebMock.disable!
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
WebMock.enable!
|
17
|
+
end
|
18
|
+
|
19
|
+
describe Index do
|
20
|
+
let(:indexer){ Index.new(session) }
|
21
|
+
|
22
|
+
describe "#execute" do
|
23
|
+
it "returns an array of clicks" do
|
24
|
+
bounces = indexer.execute(blast_id)
|
25
|
+
expect(bounces.count).to be > 0
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns an array of clicks by link_id" do
|
29
|
+
bounces = indexer.execute(blast_id, link_id)
|
30
|
+
expect(bounces.count).to be > 0
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Email
|
6
|
+
describe "Email calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:email_hash){ { :email => { :name => "New Email #{DateTime.now.to_i.to_s}", :text_part => "test part!" } } }
|
9
|
+
|
10
|
+
before do
|
11
|
+
WebMock.disable!
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
WebMock.enable!
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Index do
|
19
|
+
it "returns an array of emails" do
|
20
|
+
pending "This is a resource hog right now -- returns everything"
|
21
|
+
indexer = Index.new(session)
|
22
|
+
emails = indexer.execute
|
23
|
+
expect(emails.count).to be > 0
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe Show do
|
28
|
+
it "returns a email by id" do
|
29
|
+
creator = Create.new(session)
|
30
|
+
id = creator.execute(email_hash)
|
31
|
+
shower = Show.new(session)
|
32
|
+
email = shower.execute(id)
|
33
|
+
expect(email.name).to eq(email_hash[:email][:name])
|
34
|
+
expect(email.id).to eq(id)
|
35
|
+
|
36
|
+
destroyer = Destroy.new(session)
|
37
|
+
destroyer.execute(id)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe Update do
|
42
|
+
it "updates an email" do
|
43
|
+
creator = Create.new(session)
|
44
|
+
id = creator.execute(email_hash)
|
45
|
+
shower = Show.new(session)
|
46
|
+
email = shower.execute(id)
|
47
|
+
email.text_part = "Da new text parts!"
|
48
|
+
updater = Update.new(session)
|
49
|
+
updater.execute(id, email.marshal_dump)
|
50
|
+
email_updated = shower.execute(id)
|
51
|
+
expect(email_updated.name).to eq(email_hash[:email][:name])
|
52
|
+
expect(email_updated.id).to eq(id)
|
53
|
+
|
54
|
+
destroyer = Destroy.new(session)
|
55
|
+
destroyer.execute(id)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe Destroy do
|
60
|
+
it "destroys a email" do
|
61
|
+
creator = Create.new(session)
|
62
|
+
id = creator.execute(email_hash)
|
63
|
+
|
64
|
+
destroyer = Destroy.new(session)
|
65
|
+
destroyer.execute(id)
|
66
|
+
|
67
|
+
expect do
|
68
|
+
shower = Show.new(session)
|
69
|
+
email = shower.execute(id)
|
70
|
+
end.to raise_exception(StreamSend::Api::Exception, "Could not find any emails with the specified id. (404)")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Option
|
6
|
+
describe "Option calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:field_hash){ { :field => { :name => "New field #{DateTime.now.to_i.to_s}", :data_type => "Select" } } }
|
9
|
+
let(:option_hash){ { :option => { :name => "New field #{DateTime.now.to_i.to_s}" } } }
|
10
|
+
|
11
|
+
before do
|
12
|
+
WebMock.disable!
|
13
|
+
field_creator = StreamSend::Api::Field::Create.new(session)
|
14
|
+
@field_id = field_creator.execute(field_hash)
|
15
|
+
end
|
16
|
+
|
17
|
+
after do
|
18
|
+
WebMock.enable!
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
describe Index do
|
23
|
+
it "returns an array of options" do
|
24
|
+
creator = Create.new(session)
|
25
|
+
id = creator.execute(@field_id, option_hash)
|
26
|
+
|
27
|
+
indexer = Index.new(session)
|
28
|
+
options = indexer.execute(@field_id)
|
29
|
+
expect(options.count).to be > 0
|
30
|
+
|
31
|
+
destroyer = Destroy.new(session)
|
32
|
+
destroyer.execute(@field_id, id)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe Show do
|
37
|
+
it "returns a options by id" do
|
38
|
+
creator = Create.new(session)
|
39
|
+
id = creator.execute(@field_id, option_hash)
|
40
|
+
|
41
|
+
shower = Show.new(session)
|
42
|
+
option = shower.execute(@field_id, id)
|
43
|
+
expect(option.name).to eq(option_hash[:option][:name])
|
44
|
+
expect(option.id).to eq(id)
|
45
|
+
|
46
|
+
destroyer = Destroy.new(session)
|
47
|
+
destroyer.execute(@field_id, id)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe Update do
|
52
|
+
it "updates an field" do
|
53
|
+
creator = Create.new(session)
|
54
|
+
id = creator.execute(@field_id, option_hash)
|
55
|
+
|
56
|
+
shower = Show.new(session)
|
57
|
+
option = shower.execute(@field_id, id)
|
58
|
+
option.name = "new options."
|
59
|
+
updater = Update.new(session)
|
60
|
+
updater.execute(@field_id, id, option.marshal_dump)
|
61
|
+
option_updated = shower.execute(@field_id, id)
|
62
|
+
expect(option_updated.name).to eq(option_hash[:option][:name])
|
63
|
+
expect(option_updated.id).to eq(id)
|
64
|
+
|
65
|
+
destroyer = Destroy.new(session)
|
66
|
+
destroyer.execute(@field_id, id)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe Destroy do
|
71
|
+
it "destroys a field option" do
|
72
|
+
creator = Create.new(session)
|
73
|
+
id = creator.execute(@field_id, option_hash)
|
74
|
+
|
75
|
+
destroyer = Destroy.new(session)
|
76
|
+
destroyer.execute(@field_id, id)
|
77
|
+
|
78
|
+
expect do
|
79
|
+
shower = Show.new(session)
|
80
|
+
option_hash = shower.execute(@field_id, id)
|
81
|
+
end.to raise_exception(StreamSend::Api::Exception, "Could not find any options with the specified id. (404)")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Field
|
6
|
+
describe "Field calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:field_hash){ { :field => { :name => "New field #{DateTime.now.to_i.to_s}", :data_type => "Text Area" } } }
|
9
|
+
|
10
|
+
before do
|
11
|
+
WebMock.disable!
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
WebMock.enable!
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Index do
|
19
|
+
it "returns an array of fields" do
|
20
|
+
indexer = Index.new(session)
|
21
|
+
fields = indexer.execute
|
22
|
+
expect(fields.count).to be > 0
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe Show do
|
27
|
+
it "returns a field by id" do
|
28
|
+
creator = Create.new(session)
|
29
|
+
id = creator.execute(field_hash)
|
30
|
+
shower = Show.new(session)
|
31
|
+
field = shower.execute(id)
|
32
|
+
expect(field.name).to eq(field_hash[:field][:name])
|
33
|
+
expect(field.id).to eq(id)
|
34
|
+
|
35
|
+
destroyer = Destroy.new(session)
|
36
|
+
destroyer.execute(id)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe Update do
|
41
|
+
it "updates an field" do
|
42
|
+
creator = Create.new(session)
|
43
|
+
id = creator.execute(field_hash)
|
44
|
+
shower = Show.new(session)
|
45
|
+
field = shower.execute(id)
|
46
|
+
field.name = "newer namers!"
|
47
|
+
updater = Update.new(session)
|
48
|
+
updater.execute(id, field.marshal_dump)
|
49
|
+
field_updated = shower.execute(id)
|
50
|
+
expect(field_updated.name).to eq(field_hash[:field][:name])
|
51
|
+
expect(field_updated.id).to eq(id)
|
52
|
+
|
53
|
+
destroyer = Destroy.new(session)
|
54
|
+
destroyer.execute(id)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe Destroy do
|
59
|
+
it "destroys a field" do
|
60
|
+
creator = Create.new(session)
|
61
|
+
id = creator.execute(field_hash)
|
62
|
+
|
63
|
+
destroyer = Destroy.new(session)
|
64
|
+
destroyer.execute(id)
|
65
|
+
|
66
|
+
expect do
|
67
|
+
shower = Show.new(session)
|
68
|
+
field = shower.execute(id)
|
69
|
+
end.to raise_exception(StreamSend::Api::Exception, "Could not find any fields with the specified id. (404)")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Filter
|
6
|
+
describe "Filter calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:randomish){ DateTime.now.to_i.to_s }
|
9
|
+
let(:filter_hash){ { :filter => { :name => "Test Filter #{randomish}", :description => "Filter for testing" } } }
|
10
|
+
let(:field_hash){ { :field => { :name => "New field #{randomish}", :data_type => "Text Area" } } }
|
11
|
+
let(:field_id){ StreamSend::Api::Field::Create.new(session).execute(field_hash) }
|
12
|
+
let(:option_hash){ { :option => { :name => "New field #{randomish}" } } }
|
13
|
+
let(:option_id){ StreamSend::Api::Option::Create(session).execute(field_id, option_hash) }
|
14
|
+
let(:rule){ { :operator => "==", :field_option_id => option_id } }
|
15
|
+
let(:block){ { :field_id => field_id, :rules => :rule } }
|
16
|
+
let(:complex_filter_hash){ { :filter => { :name => "Test Filter #{randomish}", :description => "Filter for testing", :blocks => block } } }
|
17
|
+
|
18
|
+
before do
|
19
|
+
WebMock.disable!
|
20
|
+
end
|
21
|
+
|
22
|
+
after do
|
23
|
+
WebMock.enable!
|
24
|
+
end
|
25
|
+
|
26
|
+
describe Index do
|
27
|
+
it "returns an array of filters" do
|
28
|
+
creator = Create.new(session)
|
29
|
+
id = creator.execute(filter_hash)
|
30
|
+
|
31
|
+
indexer = Index.new(session)
|
32
|
+
filter = indexer.execute
|
33
|
+
expect(filter.count).to be > 0
|
34
|
+
|
35
|
+
destroyer = Destroy.new(session)
|
36
|
+
destroyer.execute(id)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe Show do
|
41
|
+
it "returns a filter by id" do
|
42
|
+
creator = Create.new(session)
|
43
|
+
id = creator.execute(filter_hash)
|
44
|
+
shower = Show.new(session)
|
45
|
+
filter = shower.execute(id)
|
46
|
+
expect(filter.name).to eq(filter_hash[:filter][:name])
|
47
|
+
expect(filter.id).to eq(id)
|
48
|
+
|
49
|
+
destroyer = Destroy.new(session)
|
50
|
+
destroyer.execute(id)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "returns a complex filter by id" do
|
54
|
+
creator = Create.new(session)
|
55
|
+
id = creator.execute(complex_filter_hash)
|
56
|
+
shower = Show.new(session)
|
57
|
+
filter = shower.execute(id)
|
58
|
+
expect(filter.name).to eq(filter_hash[:filter][:name])
|
59
|
+
expect(filter.id).to eq(id)
|
60
|
+
|
61
|
+
destroyer = Destroy.new(session)
|
62
|
+
destroyer.execute(id)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe Update do
|
67
|
+
it "updates an filter" do
|
68
|
+
creator = Create.new(session)
|
69
|
+
id = creator.execute(filter_hash)
|
70
|
+
shower = Show.new(session)
|
71
|
+
filter = shower.execute(id)
|
72
|
+
filter.name = "newer namers!"
|
73
|
+
updater = Update.new(session)
|
74
|
+
updater.execute(id, filter.marshal_dump)
|
75
|
+
filter_updated = shower.execute(id)
|
76
|
+
expect(filter_updated.name).to eq(filter_hash[:filter][:name])
|
77
|
+
expect(filter_updated.id).to eq(id)
|
78
|
+
|
79
|
+
destroyer = Destroy.new(session)
|
80
|
+
destroyer.execute(id)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe Destroy do
|
85
|
+
it "destroys a filter" do
|
86
|
+
creator = Create.new(session)
|
87
|
+
id = creator.execute(filter_hash)
|
88
|
+
|
89
|
+
destroyer = Destroy.new(session)
|
90
|
+
destroyer.execute(id)
|
91
|
+
|
92
|
+
expect do
|
93
|
+
shower = Show.new(session)
|
94
|
+
filter = shower.execute(id)
|
95
|
+
end.to raise_exception(StreamSend::Api::Exception, "Could not find any filters with the specified id. (404)")
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module FromEmailAddress
|
6
|
+
describe "FromEmailAddress calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:email_hash){ { :from_email_address => { :email_address => "testing+#{DateTime.now.to_i.to_s}@badd.address" } } }
|
9
|
+
|
10
|
+
before do
|
11
|
+
WebMock.disable!
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
WebMock.enable!
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Index do
|
19
|
+
it "returns an index of from email addresses" do
|
20
|
+
indexer = Index.new(session)
|
21
|
+
expect(indexer.execute.count).to be > 0
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe Show do
|
26
|
+
it "shows a from email address by id" do
|
27
|
+
creator = Create.new(session)
|
28
|
+
address_id = creator.execute(email_hash)
|
29
|
+
shower = Show.new(session)
|
30
|
+
address = shower.execute(address_id)
|
31
|
+
expect(address.email_address).to eq(email_hash[:from_email_address][:email_address])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe ResendActivationEmail do
|
36
|
+
it "resends the actiation email" do
|
37
|
+
creator = Create.new(session)
|
38
|
+
address_id = creator.execute(email_hash)
|
39
|
+
response = ResendActivationEmail.new(session).execute(address_id)
|
40
|
+
expect(response.code).to eq(200)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|