def test_get_nonexistent_member(self): with responses.RequestsMock() as rsps: rsps.add(responses.GET, 'https://us1.api.mailchimp.com/3.0/lists/57afe96172/' 'members/852aaa9532cb36adfb5e9fef7a4206a9', json={'error': 'non existent list'}, status=404, content_type='application/json') with self.assertRaises(MCMemberNotFound): MCMember.get('57afe96172', '852aaa9532cb36adfb5e9fef7a4206a9')
def test_to_dict_with_id(self): member = MCMember(self.get_member_1()) self.assertEqual({ 'email_type': member.email_type, 'status': member.status, 'merge_fields': member.merge_fields, 'interests': member.interests, 'language': member.language, 'vip': member.vip, 'location': member.location.to_dict(), 'id': member.id }, member.to_dict())
def test_to_dict_without_id(self): member = MCMember(self.get_member_1()) member.id = None self.assertEqual({ 'email_type': member.email_type, 'status': member.status, 'merge_fields': member.merge_fields, 'interests': member.interests, 'language': member.language, 'vip': member.vip, 'location': member.location.to_dict(), 'email_address': member.email_address, 'status_if_new': member.status_if_new }, member.to_dict())
def test_delete(self): with responses.RequestsMock() as rsps: rsps.add(responses.DELETE, 'https://us1.api.mailchimp.com/3.0/lists/57afe96172/' 'members/852aaa9532cb36adfb5e9fef7a4206a9', json={}, status=204, content_type='application/json') mc_member = MCMember(self.get_member_1()) mc_member.delete() self.assertEqual(1, len(rsps.calls)) self.assertEqual('https://us1.api.mailchimp.com/3.0/lists/57afe96172/' 'members/852aaa9532cb36adfb5e9fef7a4206a9', rsps.calls[0].request.url) self.assertEqual('DELETE', rsps.calls[0].request.method) self.assertEqual("application/json", rsps.calls[0].request.headers['Accept']) self.assertEqual("application/json", rsps.calls[0].request.headers['Content-Type']) self.assertEqual("Basic dXNlcm5hbWU6YTY1YTY1YTY1YTY1YTY1YTU2YTVhNi11czE=", rsps.calls[0].request.headers['Authorization'])
def test_empty_init(self): member = MCMember() for prop in ['id', 'email_address', 'unique_email_id', 'email_type', 'status', 'status_if_new', 'merge_fields', 'interests', 'stats', 'ip_signup', 'timestamp_signup', 'ip_opt', 'timestamp_opt', 'member_rating', 'last_changed', 'language', 'vip', 'email_client', 'list_id']: self.assertIsNone(getattr(member, prop)) self.assertTrue(isinstance(member.location, MCLocation)) self.assertEqual(member.links, [])
def test_list(self): with responses.RequestsMock() as rsps: rsps.add(responses.GET, 'https://us1.api.mailchimp.com/3.0/lists/57afe96172/members', json={ 'members': [self.get_member_1(), self.get_member_2()], "list_id": "57afe96172", "_links": [ { "rel": "self", "href": "https://usX.api.mailchimp.com/3.0/lists/57afe96172/members", "method": "GET", "targetSchema": "https://api.mailchimp.com/schema/3.0/Lists/Members/Collection.json", "schema": "https://api.mailchimp.com/schema/3.0/CollectionLinks/Lists/Members.json" }, { "rel": "parent", "href": "https://usX.api.mailchimp.com/3.0/lists/57afe96172", "method": "GET", "targetSchema": "https://api.mailchimp.com/schema/3.0/Lists/Instance.json" }, { "rel": "create", "href": "https://usX.api.mailchimp.com/3.0/lists/57afe96172/members", "method": "POST", "schema": "https://api.mailchimp.com/schema/3.0/Lists/Members/Instance.json" } ], "total_items": 2 }, status=200, content_type='application/json') mc_members = MCMember.list('57afe96172') self.assertEqual(1, len(rsps.calls)) self.assertEqual('https://us1.api.mailchimp.com/3.0/lists/57afe96172/members', rsps.calls[0].request.url) self.assertEqual('GET', rsps.calls[0].request.method) self.assertEqual("application/json", rsps.calls[0].request.headers['Accept']) self.assertEqual("application/json", rsps.calls[0].request.headers['Content-Type']) self.assertEqual("Basic dXNlcm5hbWU6YTY1YTY1YTY1YTY1YTY1YTU2YTVhNi11czE=", rsps.calls[0].request.headers['Authorization']) self.check_member_1(mc_members[0]) self.check_member_2(mc_members[1])
def test_save(self): with responses.RequestsMock() as rsps: rsps.add(responses.PUT, 'https://us1.api.mailchimp.com/3.0/lists/57afe96172/' 'members/852aaa9532cb36adfb5e9fef7a4206a9', json=self.get_updated_member_1(), status=200, content_type='application/json') mc_member = MCMember(self.get_member_1()) mc_member.status = 'unsubscribed' mc_member.merge_fields = { "FNAME": "Firstname", "LNAME": "Surname" } mc_member.save() self.assertEqual(1, len(rsps.calls)) self.assertEqual('https://us1.api.mailchimp.com/3.0/lists/57afe96172/' 'members/852aaa9532cb36adfb5e9fef7a4206a9', rsps.calls[0].request.url) self.assertEqual('PUT', rsps.calls[0].request.method) self.assertEqual("application/json", rsps.calls[0].request.headers['Accept']) self.assertEqual("application/json", rsps.calls[0].request.headers['Content-Type']) self.assertEqual("Basic dXNlcm5hbWU6YTY1YTY1YTY1YTY1YTY1YTU2YTVhNi11czE=", rsps.calls[0].request.headers['Authorization']) self.assertEqual(mc_member.last_changed, datetime.datetime(2016, 9, 15, 17, 27, 16).replace(tzinfo=tzutc()))
def test_repr(self): member = MCMember(self.get_member_1()) self.assertEqual('<MCMember: 852aaa9532cb36adfb5e9fef7a4206a9>', str(repr(member)))
def test_to_str(self): member = MCMember(self.get_member_1()) self.assertEqual('852aaa9532cb36adfb5e9fef7a4206a9', str(member))
def test_init(self): member = MCMember(self.get_member_1()) self.check_member_1(member)
def test_valid_search_params(self): member = MCMember() self.assertEqual(['offset', 'count', 'fields', 'exclude_fields'], member.valid_search_params)
def test_get_list_url(self): self.assertEqual('/lists/57afe96172/members', MCMember.get_list_url('57afe96172'))
def test_item_url(self): member = MCMember() self.assertEqual('/lists/{list_id}/members', member.item_url)