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))
Esempio n. 10
0
    def test_init(self):
        member = MCMember(self.get_member_1())

        self.check_member_1(member)
Esempio n. 11
0
 def test_valid_search_params(self):
     member = MCMember()
     self.assertEqual(['offset', 'count', 'fields', 'exclude_fields'],
                      member.valid_search_params)
Esempio n. 12
0
 def test_get_list_url(self):
     self.assertEqual('/lists/57afe96172/members', MCMember.get_list_url('57afe96172'))
Esempio n. 13
0
 def test_item_url(self):
     member = MCMember()
     self.assertEqual('/lists/{list_id}/members', member.item_url)