mailchimp_api_v3 0.2.15 → 0.2.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +31 -0
- data/lib/mailchimp_api_v3.rb +5 -0
- data/lib/mailchimp_api_v3/exception.rb +2 -2
- data/lib/mailchimp_api_v3/instance.rb +7 -4
- data/lib/mailchimp_api_v3/member.rb +2 -1
- data/lib/mailchimp_api_v3/version.rb +1 -1
- data/spec/fixtures/cassettes/lists.yml +96 -0
- data/spec/fixtures/cassettes/members_with_interest_categories.yml +902 -0
- data/spec/mailchimp_api_v3/lists_spec.rb +8 -0
- data/spec/mailchimp_api_v3/member_spec.rb +14 -0
- data/spec/mailchimp_api_v3/members_spec.rb +40 -0
- metadata +4 -2
@@ -10,4 +10,12 @@ describe Mailchimp::Lists, vcr: { cassette_name: 'lists' } do
|
|
10
10
|
it 'has a count' do
|
11
11
|
expect(lists.count).to eq 4
|
12
12
|
end
|
13
|
+
|
14
|
+
it 'returns a list by id' do
|
15
|
+
expect(Mailchimp.connect.lists('aa923b0da6')).to be_a Mailchimp::List
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'handles a non-existent id' do
|
19
|
+
expect(Mailchimp.connect.lists('beef')).to be_nil
|
20
|
+
end
|
13
21
|
end
|
@@ -18,6 +18,20 @@ describe Mailchimp::List::Member, vcr: { cassette_name: 'member' } do
|
|
18
18
|
expect(member.to_s).to eq 'Ann Example <ann@sayers.cc>'
|
19
19
|
end
|
20
20
|
|
21
|
+
it 'handles unexpected data' do
|
22
|
+
expect { list.members.create(0) }.to raise_error(
|
23
|
+
Mailchimp::Exception::BadRequest, 'Expecting a Hash, received a Integer: 0'
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'matches supplied comparison data' do
|
28
|
+
expect(member.matches?(name: name, email_address: 'ann@sayers.cc')).to be_truthy
|
29
|
+
end
|
30
|
+
|
31
|
+
it "doesn't match mismatched comparison data" do
|
32
|
+
expect(member.matches?(name: name, vip: true)).to be_falsey
|
33
|
+
end
|
34
|
+
|
21
35
|
context 'updates name fields correctly' do
|
22
36
|
it 'uses friendly name fields' do
|
23
37
|
updated_member = member.update name: 'Billy Bonkers'
|
@@ -66,6 +66,46 @@ describe Mailchimp::List::Members do
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
+
context '#first_or_create with interest categories', vcr: { cassette_name: 'members_with_interest_categories' } do
|
70
|
+
let(:list) { Mailchimp.connect.lists 'My first list' }
|
71
|
+
let(:members) { list.members }
|
72
|
+
let(:interest_categories) { list.interest_categories }
|
73
|
+
|
74
|
+
before do
|
75
|
+
data = { 'title' => 'Days', 'type' => 'checkboxes' }
|
76
|
+
interest_categories.create data
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'can add and delete a new instance' do
|
80
|
+
name = 'Cat Sayers'
|
81
|
+
interests = { interest_categories.first.id => true }
|
82
|
+
data = { name: name, email_address: 'cat@sayers.cc', status: 'subscribed', interests: interests }
|
83
|
+
|
84
|
+
# #create
|
85
|
+
expect { members.create data }.to change { list.members.count }.by(1)
|
86
|
+
expect { members.create data }.to raise_error Mailchimp::Exception::Duplicate
|
87
|
+
|
88
|
+
# #find_by
|
89
|
+
member = list.members.find_by name: name
|
90
|
+
expect(member).to be_a Mailchimp::List::Member
|
91
|
+
expect(member.name).to eq name
|
92
|
+
|
93
|
+
# #first_or_create finds the same instance
|
94
|
+
member2 = list.members.first_or_create data
|
95
|
+
expect(member.id).to eq(member2.id)
|
96
|
+
|
97
|
+
# #delete
|
98
|
+
expect { member.delete }.to change { list.members.count }.by(-1)
|
99
|
+
|
100
|
+
# #first_or_create creates a new instance
|
101
|
+
name = 'Dan Sayers'
|
102
|
+
data = { name: name, email_address: 'dan@sayers.cc', status: 'subscribed' }
|
103
|
+
member = members.first_or_create data
|
104
|
+
expect(member.name).to eq name
|
105
|
+
member.delete # Tidy up
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
69
109
|
context '#create_or_update', vcr: { cassette_name: 'members_create_or_update' } do
|
70
110
|
let(:list) { Mailchimp.connect.lists 'My first list' }
|
71
111
|
let(:members) { list.members }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailchimp_api_v3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominic Sayers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -71,6 +71,7 @@ files:
|
|
71
71
|
- spec/fixtures/cassettes/members.yml
|
72
72
|
- spec/fixtures/cassettes/members_create_or_update.yml
|
73
73
|
- spec/fixtures/cassettes/members_paging.yml
|
74
|
+
- spec/fixtures/cassettes/members_with_interest_categories.yml
|
74
75
|
- spec/mailchimp_api_v3/account_spec.rb
|
75
76
|
- spec/mailchimp_api_v3/client_spec.rb
|
76
77
|
- spec/mailchimp_api_v3/exception_spec.rb
|
@@ -125,6 +126,7 @@ test_files:
|
|
125
126
|
- spec/fixtures/cassettes/members.yml
|
126
127
|
- spec/fixtures/cassettes/members_create_or_update.yml
|
127
128
|
- spec/fixtures/cassettes/members_paging.yml
|
129
|
+
- spec/fixtures/cassettes/members_with_interest_categories.yml
|
128
130
|
- spec/mailchimp_api_v3/account_spec.rb
|
129
131
|
- spec/mailchimp_api_v3/client_spec.rb
|
130
132
|
- spec/mailchimp_api_v3/exception_spec.rb
|