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.
@@ -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