def test_can_save_a_member4(self): mbr = Member( self.member.account, { 'member_id': 200, 'email':"*****@*****.**", 'first_name':"Emma", 'member_status_id': MemberStatus.Active }) MockAdapter.expected = False with self.assertRaises(ex.MemberUpdateError): mbr.save() self.assertEqual(mbr.account.adapter.called, 1) self.assertEqual(mbr.account.adapter.call, ( 'PUT', '/members/200', { 'member_id': 200, 'email':"*****@*****.**", 'fields': {'first_name': "Emma"}, 'status_to': mbr['member_status_id'] } ))
def test_can_save_a_member4(self): mbr = Member( self.member.account, { 'member_id': 200, 'email':u"*****@*****.**", 'first_name':u"Emma", 'member_status_id': MemberStatus.Active }) MockAdapter.expected = False with self.assertRaises(ex.MemberUpdateError): mbr.save() self.assertEquals(mbr.account.adapter.called, 1) self.assertEquals(mbr.account.adapter.call, ( 'PUT', '/members/200', { 'member_id': 200, 'email':u"*****@*****.**", 'fields': {'first_name': u"Emma"}, 'status_to': mbr['member_status_id'] } ))
def test_can_save_a_member6(self): mbr = Member( self.member.account, { 'email':u"*****@*****.**", 'fields': {'first_name':u"Emma"} }) MockAdapter.expected = { 'status': u"a", 'added': True, 'member_id': 1024 } result = mbr.save(group_ids=[1025]) self.assertIsNone(result) self.assertEquals(mbr.account.adapter.called, 1) self.assertEquals(mbr.account.adapter.call, ( 'POST', '/members/add', { 'email':u"*****@*****.**", 'fields': {'first_name': u"Emma"}, 'group_ids': [1025] } ))
def test_can_save_a_member6(self): mbr = Member( self.member.account, { 'email':"*****@*****.**", 'fields': {'first_name':"Emma"} }) MockAdapter.expected = { 'status': "a", 'added': True, 'member_id': 1024 } result = mbr.save(group_ids=[1025]) self.assertIsNone(result) self.assertEqual(mbr.account.adapter.called, 1) self.assertEqual(mbr.account.adapter.call, ( 'POST', '/members/add', { 'email':"*****@*****.**", 'fields': {'first_name': "Emma"}, 'group_ids': [1025] } ))
def test_can_save_a_member(self): mbr = Member(self.member.account, {'email':u"*****@*****.**"}) MockAdapter.expected = { 'status': u"a", 'added': True, 'member_id': 1024 } result = mbr.save() self.assertIsNone(result) self.assertEquals(mbr.account.adapter.called, 1) self.assertEquals( mbr.account.adapter.call, ('POST', '/members/add', {'email':u"*****@*****.**"})) self.assertEquals(1024, mbr['member_id']) self.assertEquals(MemberStatus.Active, mbr['member_status_id'])
def test_can_save_a_member(self): mbr = Member(self.member.account, {'email':"*****@*****.**"}) MockAdapter.expected = { 'status': "a", 'added': True, 'member_id': 1024 } result = mbr.save() self.assertIsNone(result) self.assertEqual(mbr.account.adapter.called, 1) self.assertEqual( mbr.account.adapter.call, ('POST', '/members/add', {'email':"*****@*****.**"})) self.assertEqual(1024, mbr['member_id']) self.assertEqual(MemberStatus.Active, mbr['member_status_id'])
def test_can_save_a_member3(self): mbr = Member( self.member.account, {'email':u"*****@*****.**", 'first_name':u"Emma"}) MockAdapter.expected = { 'status': u"a", 'added': True, 'member_id': 1024 } result = mbr.save(signup_form_id=u"http://example.com/signup") self.assertIsNone(result) self.assertEquals(mbr.account.adapter.called, 1) self.assertEquals( mbr.account.adapter.call, ('POST', '/members/add', { 'email':u"*****@*****.**", 'fields': {'first_name': u"Emma"}, 'signup_form_id': u"http://example.com/signup"} )) self.assertEquals(1024, mbr['member_id']) self.assertEquals(MemberStatus.Active, mbr['member_status_id'])
def test_can_save_a_member3(self): mbr = Member( self.member.account, {'email':"*****@*****.**", 'first_name':"Emma"}) MockAdapter.expected = { 'status': "a", 'added': True, 'member_id': 1024 } result = mbr.save(signup_form_id="http://example.com/signup") self.assertIsNone(result) self.assertEqual(mbr.account.adapter.called, 1) self.assertEqual( mbr.account.adapter.call, ('POST', '/members/add', { 'email':"*****@*****.**", 'fields': {'first_name': "Emma"}, 'signup_form_id': "http://example.com/signup"} )) self.assertEqual(1024, mbr['member_id']) self.assertEqual(MemberStatus.Active, mbr['member_status_id'])
def test_can_save_a_member5(self): mbr = Member( self.member.account, { 'member_id': 200, 'email': u"*****@*****.**", 'fields': { 'first_name': u"Emma" }, 'member_status_id': MemberStatus.Active }) MockAdapter.expected = True result = mbr.save() self.assertIsNone(result) self.assertEquals(mbr.account.adapter.called, 1) self.assertEquals(mbr.account.adapter.call, ('PUT', '/members/200', { 'member_id': 200, 'email': u"*****@*****.**", 'fields': { 'first_name': u"Emma" }, 'status_to': mbr['member_status_id'] }))
def test_can_save_a_member5(self): mbr = Member( self.member.account, { 'member_id': 200, 'email':u"*****@*****.**", 'fields': {'first_name':u"Emma"}, 'member_status_id': MemberStatus.Active }) MockAdapter.expected = True result = mbr.save() self.assertIsNone(result) self.assertEquals(mbr.account.adapter.called, 1) self.assertEquals(mbr.account.adapter.call, ( 'PUT', '/members/200', { 'member_id': 200, 'email':u"*****@*****.**", 'fields': {'first_name': u"Emma"}, 'status_to': mbr['member_status_id'] } ))
class MemberGroupCollectionTest(unittest.TestCase): def setUp(self): Account.default_adapter = MockAdapter self.groups = Member( Account(account_id="100", public_key="xxx", private_key="yyy"), { 'member_id': 1000, 'email': u"*****@*****.**", 'status': u"opt-out" }).groups def test_fetch_all_returns_a_dictionary(self): groups = MemberGroupCollection(Member(self.groups.member.account)) with self.assertRaises(ex.NoMemberIdError): groups.fetch_all() self.assertEquals(groups.member.account.adapter.called, 0) def test_fetch_all_returns_a_dictionary2(self): MockAdapter.expected = [{'member_group_id': 200}] self.assertIsInstance(self.groups.fetch_all(), dict) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('GET', '/members/1000/groups', {})) def test_fetch_all_populates_collection(self): MockAdapter.expected = [{'member_group_id': 200}] self.assertEquals(0, len(self.groups)) self.groups.fetch_all() self.assertEquals(1, len(self.groups)) def test_fetch_all_caches_results(self): MockAdapter.expected = [{'member_group_id': 200}] self.groups.fetch_all() self.groups.fetch_all() self.assertEquals(self.groups.member.account.adapter.called, 1) def test_collection_can_be_accessed_like_a_dictionary(self): MockAdapter.expected = [{'member_group_id': 200}] self.groups.fetch_all() self.assertIsInstance(self.groups, MemberGroupCollection) self.assertEquals(1, len(self.groups)) self.assertIsInstance(self.groups[200], Group) def test_factory_produces_a_group(self): grp = self.groups.factory() self.assertIsInstance(grp, Group) self.assertEquals(0, len(grp)) def test_factory_produces_a_group2(self): grp = self.groups.factory({'member_group_id': 1024}) self.assertIsInstance(grp, Group) self.assertEquals(1, len(grp)) self.assertEquals(1024, grp['member_group_id']) def test_can_add_groups_to_a_member(self): mbr = Member(self.groups.member.account) with self.assertRaises(ex.NoMemberIdError): mbr.groups.save([mbr.groups.factory({'member_group_id': 1024})]) self.assertEquals(self.groups.member.account.adapter.called, 0) def test_can_add_groups_to_a_member2(self): MockAdapter.expected = [] self.groups.save([]) self.assertEquals(self.groups.member.account.adapter.called, 0) def test_can_add_groups_to_a_member3(self): MockAdapter.expected = [300, 301] self.groups.save([ self.groups.factory({'member_group_id': 300}), self.groups.factory({'member_group_id': 301}) ]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('PUT', '/members/1000/groups', { 'group_ids': [300, 301] })) def test_can_add_groups_to_a_member4(self): MockAdapter.expected = [300, 301] self.groups.member.add_groups([300, 301]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('PUT', '/members/1000/groups', { 'group_ids': [300, 301] })) def test_can_drop_groups_from_a_member(self): mbr = Member(self.groups.member.account) with self.assertRaises(ex.NoMemberIdError): mbr.groups.delete([300, 301]) self.assertEquals(self.groups.member.account.adapter.called, 0) def test_can_drop_groups_from_a_member2(self): self.groups.delete() self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('DELETE', '/members/1000/groups', {})) self.assertEquals(0, len(self.groups)) def test_can_drop_groups_from_a_member3(self): MockAdapter.expected = [300, 301] self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}), 302: self.groups.factory({'member_group_id': 302}) } self.groups.delete([300, 301]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('PUT', '/members/1000/groups/remove', { 'group_ids': [300, 301] })) self.assertEquals(1, len(self.groups)) self.assertIsInstance(self.groups[302], Group) def test_can_drop_groups_from_a_member4(self): MockAdapter.expected = [300, 301] self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}), 302: self.groups.factory({'member_group_id': 302}) } self.groups.member.drop_groups([300, 301]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('PUT', '/members/1000/groups/remove', { 'group_ids': [300, 301] })) self.assertEquals(1, len(self.groups)) self.assertIsInstance(self.groups[302], Group) def test_can_drop_groups_from_a_member5(self): self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}), 302: self.groups.factory({'member_group_id': 302}) } self.groups.delete() self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('DELETE', '/members/1000/groups', {})) self.assertEquals(0, len(self.groups)) def test_can_drop_groups_from_a_member6(self): self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}), 302: self.groups.factory({'member_group_id': 302}) } self.groups.member.drop_groups() self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('DELETE', '/members/1000/groups', {})) self.assertEquals(0, len(self.groups)) def test_can_drop_a_single_group_with_del(self): # Setup MockAdapter.expected = True self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}) } del (self.groups[300]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals(self.groups.member.account.adapter.call, ('PUT', '/members/1000/groups/remove', { 'group_ids': [300] })) self.assertEquals(1, len(self.groups)) self.assertIn(301, self.groups)
class MemberGroupCollectionTest(unittest.TestCase): def setUp(self): Account.default_adapter = MockAdapter self.groups = Member( Account(account_id="100", public_key="xxx", private_key="yyy"), { 'member_id':1000, 'email':u"*****@*****.**", 'status':u"opt-out" } ).groups def test_fetch_all_returns_a_dictionary(self): groups = MemberGroupCollection(Member(self.groups.member.account)) with self.assertRaises(ex.NoMemberIdError): groups.fetch_all() self.assertEquals(groups.member.account.adapter.called, 0) def test_fetch_all_returns_a_dictionary2(self): MockAdapter.expected = [{'member_group_id': 200}] self.assertIsInstance(self.groups.fetch_all(), dict) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ('GET', '/members/1000/groups', {})) def test_fetch_all_populates_collection(self): MockAdapter.expected = [{'member_group_id': 200}] self.assertEquals(0, len(self.groups)) self.groups.fetch_all() self.assertEquals(1, len(self.groups)) def test_fetch_all_caches_results(self): MockAdapter.expected = [{'member_group_id': 200}] self.groups.fetch_all() self.groups.fetch_all() self.assertEquals(self.groups.member.account.adapter.called, 1) def test_collection_can_be_accessed_like_a_dictionary(self): MockAdapter.expected = [{'member_group_id': 200}] self.groups.fetch_all() self.assertIsInstance(self.groups, MemberGroupCollection) self.assertEquals(1, len(self.groups)) self.assertIsInstance(self.groups[200], Group) def test_factory_produces_a_group(self): grp = self.groups.factory() self.assertIsInstance(grp, Group) self.assertEquals(0, len(grp)) def test_factory_produces_a_group2(self): grp = self.groups.factory({'member_group_id':1024}) self.assertIsInstance(grp, Group) self.assertEquals(1, len(grp)) self.assertEquals(1024, grp['member_group_id']) def test_can_add_groups_to_a_member(self): mbr = Member(self.groups.member.account) with self.assertRaises(ex.NoMemberIdError): mbr.groups.save([ mbr.groups.factory({'member_group_id':1024}) ]) self.assertEquals(self.groups.member.account.adapter.called, 0) def test_can_add_groups_to_a_member2(self): MockAdapter.expected = [] self.groups.save([]) self.assertEquals(self.groups.member.account.adapter.called, 0) def test_can_add_groups_to_a_member3(self): MockAdapter.expected = [300, 301] self.groups.save([ self.groups.factory({'member_group_id': 300}), self.groups.factory({'member_group_id': 301}) ]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ('PUT', '/members/1000/groups', {'group_ids': [300, 301]})) def test_can_add_groups_to_a_member4(self): MockAdapter.expected = [300, 301] self.groups.member.add_groups([300, 301]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ('PUT', '/members/1000/groups', {'group_ids': [300, 301]})) def test_can_drop_groups_from_a_member(self): mbr = Member(self.groups.member.account) with self.assertRaises(ex.NoMemberIdError): mbr.groups.delete([300, 301]) self.assertEquals(self.groups.member.account.adapter.called, 0) def test_can_drop_groups_from_a_member2(self): self.groups.delete() self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ('DELETE', '/members/1000/groups', {}) ) self.assertEquals(0, len(self.groups)) def test_can_drop_groups_from_a_member3(self): MockAdapter.expected = [300, 301] self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}), 302: self.groups.factory({'member_group_id': 302}) } self.groups.delete([300, 301]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ( 'PUT', '/members/1000/groups/remove', {'group_ids': [300, 301]})) self.assertEquals(1, len(self.groups)) self.assertIsInstance(self.groups[302], Group) def test_can_drop_groups_from_a_member4(self): MockAdapter.expected = [300, 301] self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}), 302: self.groups.factory({'member_group_id': 302}) } self.groups.member.drop_groups([300, 301]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ( 'PUT', '/members/1000/groups/remove', {'group_ids': [300, 301]})) self.assertEquals(1, len(self.groups)) self.assertIsInstance(self.groups[302], Group) def test_can_drop_groups_from_a_member5(self): self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}), 302: self.groups.factory({'member_group_id': 302}) } self.groups.delete() self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ('DELETE', '/members/1000/groups', {}) ) self.assertEquals(0, len(self.groups)) def test_can_drop_groups_from_a_member6(self): self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}), 302: self.groups.factory({'member_group_id': 302}) } self.groups.member.drop_groups() self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ('DELETE', '/members/1000/groups', {}) ) self.assertEquals(0, len(self.groups)) def test_can_drop_a_single_group_with_del(self): # Setup MockAdapter.expected = True self.groups._dict = { 300: self.groups.factory({'member_group_id': 300}), 301: self.groups.factory({'member_group_id': 301}) } del(self.groups[300]) self.assertEquals(self.groups.member.account.adapter.called, 1) self.assertEquals( self.groups.member.account.adapter.call, ( 'PUT', '/members/1000/groups/remove', {'group_ids': [300]})) self.assertEquals(1, len(self.groups)) self.assertIn(301, self.groups)