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.
@@ -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.15
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-06 00:00:00.000000000 Z
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