class TestEmmaFields(unittest.TestCase): def setUp(self): self.em = Em(account_id, public_key, private_key) def test100_create_field(self): # Need to test with randomly generated field names because Emma does not like to use recreated names for fields. # The result with recreated field names: HTTP Error 400: Bad Request name = random_field_name(12) result = self.em.create_field( {"display_name": "f" + name, "shortcut_name": name, "field_type": "text", "column_order": 4} ) if is_int(result) is False: print ("Field creation error: %s" % result) else: TestEmmaFields.field_id = result time.sleep(3) def test200_get_field(self): result = self.em.get_field(TestEmmaFields.field_id) self.assertTrue(isinstance(result, dict), "Field with field_id %s was not found" % TestEmmaFields.field_id) def test300_update_field(self): result = self.em.update_field(TestEmmaFields.field_id, {"display_name": random_field_name(12)}) print ("update_field: %s" % result) self.assertEqual( TestEmmaFields.field_id, result, "Field with field_id %s was not updated" % TestEmmaFields.field_id ) time.sleep(3) def test400_get_field_list(self): result = self.em.get_field_list() print ("get_field_list: %s" % result) self.assertTrue(isinstance(result, list), "No fields were returned") def test500_clear_member_field_data(self): result = self.em.clear_member_field_data(TestEmmaFields.field_id) self.assertTrue(result, "Member field was not cleared") time.sleep(3) def test600_delete_field(self): result = self.em.delete_field(TestEmmaFields.field_id) self.assertTrue(result, "Field with field_id %s was not deleted" % TestEmmaFields.field_id)
def setUp(self): self.em = Em(account_id, public_key, private_key)
class TestEmmaMailings(unittest.TestCase): # Note: this test requires that you first set up at least one test mailing campaign in your Emma account def setUp(self): self.em = Em(account_id, public_key, private_key) def test100_get_mailing_list(self): result = self.em.get_mailing_list() print ("get_mailing_list: %s" % result) self.assertTrue(isinstance(result, list), "No mailings found") mailing_dict = result[0] TestEmmaMailings.mailing_id = mailing_dict["mailing_id"] print ("mailing_id: %s" % TestEmmaMailings.mailing_id) def test200_get_mailing_detail(self): TestEmmaMailings.mailing_id = ( 2594963 ) # Add the mailing_id here for your test mailing, which should include at least one member result = self.em.get_mailing_detail(TestEmmaMailings.mailing_id) self.assertTrue( isinstance(result, dict), "No mailing with mailing_id %s was found" % TestEmmaMailings.mailing_id ) def test300_get_mailing_members(self): result = self.em.get_mailing_members(TestEmmaMailings.mailing_id) print ("get_mailing_members: %s" % result) self.assertTrue(isinstance(result, list), "No mailing members found") member_dict = result[0] TestEmmaMailings.member_id = member_dict["member_id"] print ("Mailing member_id: %s" % TestEmmaMailings.member_id) def test400_get_mailing_groups(self): result = self.em.get_mailing_groups(TestEmmaMailings.mailing_id) self.assertTrue(isinstance(result, list), "No mailing groups found") def test500_get_mailing_message(self): result = self.em.get_mailing_message( TestEmmaMailings.mailing_id, TestEmmaMailings.member_id, {"type": "plaintext"} ) self.assertTrue(isinstance(result, dict), "No mailing message found") print ("Mailing message: %s" % result) def test600_append_to_mailing(self): result = self.em.append_to_mailing( TestEmmaMailings.mailing_id, {"heads_up_emails": ["*****@*****.**"]} ) self.assertTrue(isinstance(result, dict), "a new mailing was not created") print ("append_to_mailing: %s" % result) TestEmmaMailings.new_mailing_id = result["mailing_id"] def test700_get_heads_up_emails(self): result = self.em.get_heads_up_emails(TestEmmaMailings.new_mailing_id) self.assertTrue(isinstance(result, list), "No heads up email addresses found") print ("get_heads_up_emails: %s" % result) def test800_update_mailing_status(self): result = self.em.update_mailing_status(TestEmmaMailings.mailing_id, {"status": "paused"}) print ("update_mailing_status: %s" % result) self.assertTrue(isinstance(result, dict), "mailing status not updated") def test900_archive_mailing(self): result = self.em.archive_mailing(TestEmmaMailings.mailing_id) print ("archive_mailing: %s" % result) self.assertTrue(result, "mailing was not successfully archived") def test950_cancel_mailing(self): result = self.em.cancel_mailing(TestEmmaMailings.mailing_id) print ("cancel_mailing: %s" % result) self.assertTrue(result, "mailing was not successfully cancelled")
class TestEmmaMembersGroups(unittest.TestCase): def setUp(self): self.em = Em(account_id, public_key, private_key) def test100_create_groups(self): result = self.em.create_groups({"groups": [{"group_name": "Test Group Start1"}, {"group_name": "Test Group2"}]}) self.assertEqual(len(result), 2, "Wrong number of groups added") self.assertEqual(result[0]["group_name"], "Test Group Start1", "Incorrect group_name") self.assertEqual(result[1]["group_name"], "Test Group2", "Incorrect group_name") TestEmmaMembersGroups.member_group_id1 = result[0]["member_group_id"] TestEmmaMembersGroups.member_group_id2 = result[1]["member_group_id"] def test150_list_groups(self): result = self.em.list_groups() self.assertTrue(isinstance(result, list), "No groups listed") def test200_update_group(self): time.sleep(3) result = self.em.update_group(TestEmmaMembersGroups.member_group_id1, {"group_name": "Test Group1"}) self.assertTrue(result, "Group not updated") time.sleep(3) result = self.em.get_group_detail(TestEmmaMembersGroups.member_group_id1) self.assertTrue(isinstance(result, dict), "Group detail returned None") self.assertEqual(result["group_name"], "Test Group1", "Updated group has incorrect name") def test300_single_member(self): print "--------------- %s" % sys._getframe().f_code.co_name email = random_email(8) # Need to use a random email address because this problem: # When adding a member using import_single_member(), and then doing a delete, Emma doesn't appear to # completely remove the member. If I again attempt to add the member with same email address, I get this result: # result: {u'status': u'o', u'added': False, u'member_id': 241661075} # However, when I check my account info online, do not even see this member. print ("email: %s" % email) member = {"fields": {"first_name": "Firstname", "last_name": "Lastname"}, "email": email} result = self.em.import_single_member(member) print ("import_single_member: %s" % result) TestEmmaMembersGroups.member_id1 = result["member_id"] self.assertEqual(result["added"], True, "Member not added") print ("TestEmmaMembersGroups.member_id1: %s" % TestEmmaMembersGroups.member_id1) result = self.em.update_member( TestEmmaMembersGroups.member_id1, {"fields": {"first_name": "John", "last_name": "Smith"}} ) self.assertTrue(result, "Member not updated") time.sleep(3) result = self.em.get_member_detail(TestEmmaMembersGroups.member_id1) print ("get_member_detail: %s" % result) self.assertTrue(isinstance(result, dict), "Member detail not returned") print ("result['member_id']: %s" % result["member_id"]) self.assertEqual(result["member_id"], TestEmmaMembersGroups.member_id1, "Member_id is incorrect") # Note: Emma converts email addresses to lowercase result = self.em.get_member_detail_by_email(email) print ("get_member_detail_by_email(%s): %s" % (email, result)) self.assertTrue(isinstance(result, dict), "Member detail by email not returned") self.assertEqual(result["email"], email, "Member email is incorrect") result = self.em.update_members_status({"member_ids": [TestEmmaMembersGroups.member_id1], "status_to": "o"}) self.assertTrue(result, "Member status not changed") result = self.em.get_member_optout_detail(TestEmmaMembersGroups.member_id1) def test400_delete_member(self): print "--------------- %s" % sys._getframe().f_code.co_name if TestEmmaMembersGroups.member_id1 is not None: result = self.em.delete_member(TestEmmaMembersGroups.member_id1) print ("delete_member: %s" % result) self.assertTrue(result, "Member not deleted") def test500_add_members(self): members = {"members": [{"email": "*****@*****.**"}, {"email": "*****@*****.**"}]} result = self.em.import_member_list(members) self.assertTrue(isinstance(result, dict), "Members not added") def test600_list_members(self): print "--------------- %s" % sys._getframe().f_code.co_name time.sleep(5) result = self.em.list_members() print ("list_members: %s" % result) self.assertNotEqual(len(result), 0, "Members not found") TestEmmaMembersGroups.members_list = result def test700_add_members_to_group(self): if len(TestEmmaMembersGroups.members_list) > 0: member_ids_list = [] for mem in TestEmmaMembersGroups.members_list: member_ids_list.append(mem["member_id"]) result = self.em.add_members_to_group( TestEmmaMembersGroups.member_group_id1, {"member_ids": member_ids_list} ) self.assertTrue(isinstance(result, list), "No members added to group") def test750_list_group_members(self): result = self.em.list_group_members(TestEmmaMembersGroups.member_group_id1) self.assertTrue(isinstance(result, list), "No members found in group") def test800_list_member_groups(self): print "--------------- %s" % sys._getframe().f_code.co_name if len(TestEmmaMembersGroups.members_list) > 0: mem = TestEmmaMembersGroups.members_list[0] member_id = mem["member_id"] print ("member_id: %s" % member_id) result = self.em.list_member_groups(member_id) self.assertTrue(isinstance(result, list), "no groups found for member") def test900_add__member_to_groups(self): print "--------------- %s" % sys._getframe().f_code.co_name if len(TestEmmaMembersGroups.members_list) > 0: mem = TestEmmaMembersGroups.members_list[0] member_id = mem["member_id"] print ("member_id: %s" % member_id) result = self.em.add_member_to_groups(member_id, {"group_ids": [TestEmmaMembersGroups.member_group_id2]}) self.assertTrue(isinstance(result, list), "member not added to any group") def test910_delete_members(self): if len(TestEmmaMembersGroups.members_list) > 0: member_ids_list = [] for mem in TestEmmaMembersGroups.members_list: member_ids_list.append(mem["member_id"]) result = self.em.delete_members({"member_ids": member_ids_list}) self.assertTrue(result, "Members not deleted") def test915_delete_all_members(self): members = {"members": [{"email": "*****@*****.**"}, {"email": "*****@*****.**"}]} result = self.em.import_member_list(members) self.assertTrue(isinstance(result, dict), "New members not added") result = self.em.remove_all_members() self.assertTrue(result, "Not all nembers deleted") def test920_delete_group(self): result = self.em.delete_group(TestEmmaMembersGroups.member_group_id1) self.assertTrue(result, "Group not deleted") result = self.em.delete_group(TestEmmaMembersGroups.member_group_id2) self.assertTrue(result, "Group not deleted") def test930_removing_members_from_groups(self): print "--------------- %s" % sys._getframe().f_code.co_name group_list = self.em.create_groups( {"groups": [{"group_name": "Test Group1"}, {"group_name": "Test Group2"}, {"group_name": "Test Group3"}]} ) self.assertEqual(len(group_list), 3, "Three groups not created") gl = [] for group in group_list: gl.append(group["member_group_id"]) time.sleep(3) # Add 4 new members to all 3 groups that we just created members = { "members": [ {"email": "*****@*****.**"}, {"email": "*****@*****.**"}, {"email": "*****@*****.**"}, {"email": "*****@*****.**"}, ], "group_ids": gl, } result = self.em.import_member_list(members) time.sleep(3) member_list = self.em.list_members() self.assertEqual(len(member_list), 4, "Four members not created") ml = [] for mem in member_list: ml.append(mem["member_id"]) result = self.em.remove_members_from_groups({"group_ids": [gl[0], gl[1]], "member_ids": [ml[0]]}) self.assertTrue(result, "1. No members removed from groups") result = self.em.remove_member_from_groups(ml[1], {"group_ids": [gl[1], gl[2]]}) self.assertTrue(isinstance(result, list), "2. Member not removed from any group") result = self.em.remove_member_from_all_groups(ml[2]) self.assertTrue(result, "3. Members not removed from any groups") result = self.em.remove_members_from_group(gl[0], {"member_ids": [ml[1], ml[3]]}) self.assertTrue(isinstance(result, list), "4. No members removed from any group") result = self.em.remove_all_members_from_group(gl[2]) self.assertEqual(result, 2, "5. Number of members removed from group not correct") result = self.em.remove_all_members_from_all_groups(str(gl[1])) self.assertTrue(result, "6. Not all members removed from all groups") # Tear down 3 groups result = self.em.delete_group(gl[0]) self.assertTrue(result, "Group0 not deleted") result = self.em.delete_group(gl[1]) self.assertTrue(result, "Group1 not deleted") result = self.em.delete_group(gl[2]) self.assertTrue(result, "Group2 not deleted") # Remove any left over members result = self.em.remove_all_members() def test940_copy_group_to_group(self): group_list = self.em.create_groups({"groups": [{"group_name": "Test Group1"}, {"group_name": "Test Group2"}]}) self.assertEqual(len(group_list), 2, "Two groups were not created") gl = [] for group in group_list: gl.append(group["member_group_id"]) time.sleep(3) # Add 2 new members to first group members = {"members": [{"email": "*****@*****.**"}, {"email": "*****@*****.**"}], "group_ids": [gl[0]]} result = self.em.import_member_list(members) time.sleep(3) result = self.em.list_group_members(gl[0]) self.assertTrue(isinstance(result, list), "No members found in group0") # Copy members of group gl[0] to group gl[1]; Note: member_status_id is required result = self.em.copy_group_to_group(gl[0], gl[1], {"member_status_id": ["a"]}) self.assertTrue(result, "Active members from group0 did copy to group1") result = self.em.list_group_members(gl[1]) self.assertTrue(isinstance(result, list), "No members found in group1") # Tear down 3 groups result = self.em.delete_group(gl[0]) self.assertTrue(result, "Group0 not deleted") result = self.em.delete_group(gl[1]) self.assertTrue(result, "Group1 not deleted") # Remove any left over members result = self.em.remove_all_members() def test950_copy_to_group(self): group_list = self.em.create_groups({"groups": [{"group_name": "Test Group1"}]}) self.assertEqual(len(group_list), 1, "Test group not created") time.sleep(3) # Add 2 new members to general audience members = {"members": [{"email": "*****@*****.**"}, {"email": "*****@*****.**"}]} result = self.em.import_member_list(members) time.sleep(3) # Copy 2 members to group g = group_list[0] result = self.em.copy_to_group(g["member_group_id"]) self.assertTrue(result, "No members were copied to Test Group1") result = self.em.delete_group(g["member_group_id"]) self.assertTrue(result, "Test Group1 not deleted") # Remove any left over members result = self.em.remove_all_members()