mailchimp_api_v3 0.2.15 → 0.2.17
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/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
|