示例#1
0
    def setUp(self):

        self.fb_ads = FacebookAds()

        self.audience_id = self.fb_ads.create_custom_audience(
            name="Test Audience",
            data_source="USER_PROVIDED_ONLY"
            )
示例#2
0
 def test_get_match_schema_and_data(self):
     match_table = Table([
         {"FN": "Bob", "LN": "Smith"},
         {"FN": "Sue", "LN": "Doe"},
     ])
     (schema, data) = FacebookAds._get_match_schema_and_data(match_table)
     self.assertEqual(["FN", "LN"], schema)
     self.assertEqual(("Bob", "Smith"), data[0])
     self.assertEqual(("Sue", "Doe"), data[1])
示例#3
0
class TestFacebookAdsIntegration(unittest.TestCase):

    def setUp(self):

        self.fb_ads = FacebookAds()

        self.audience_id = self.fb_ads.create_custom_audience(
            name="Test Audience",
            data_source="USER_PROVIDED_ONLY"
            )

    def tearDown(self):
        self.fb_ads.delete_custom_audience(self.audience_id)

    def test_create_custom_audience(self):
        # Audience created in setUp
        self.assertIsNotNone(self.audience_id)

    def test_create_custom_audience_bad_data_source(self):
        self.assertRaises(
            KeyError,
            self.fb_ads.create_custom_audience, name="Something", data_source="INVALID"
            )

    def test_add_users_to_custom_audience(self):
        # Note we don't actually check the results of adding these users, eg. how many were
        # matched by FB. This test just ensures the method doesn't error.
        # TODO See if we can do a more effective test.
        self.fb_ads.add_users_to_custom_audience(self.audience_id, users_table)

    def test_add_users_to_custom_audience_no_valid_columns(self):
        # We don't yet support full names for matching, so this shouldn't work
        tbl = Table([
            {"full name": "Bob Smith"},
            ])
        self.assertRaises(
            KeyError,
            self.fb_ads.add_users_to_custom_audience, self.audience_id, tbl
            )
示例#4
0
    def test_get_match_table_for_users_table(self):
        # This tests basic column matching, as well as the more complex cases like:
        # - Where multiple columns map to the same FB key ("PHONE").
        # - Parsing of a YYYYMMDD birth date column.
        t = FacebookAds.get_match_table_for_users_table(users_table)

        row0 = t[0]
        self.assertEqual(["FN", "LN", "PHONE", "DOBY", "DOBM", "DOBD"], t.columns)
        self.assertEqual("Bob", row0["FN"])
        self.assertEqual("Smith", row0["LN"])
        self.assertEqual("1234567890", row0["PHONE"])
        self.assertEqual("1982", row0["DOBY"])
        self.assertEqual("04", row0["DOBM"])
        self.assertEqual("13", row0["DOBD"])

        row1 = t[1]
        self.assertEqual("Sue", row1["FN"])
        self.assertEqual("Doe", row1["LN"])
        self.assertEqual("2345678901", row1["PHONE"])
        self.assertEqual("", row1["DOBY"])
        self.assertEqual("", row1["DOBM"])
        self.assertEqual("", row1["DOBD"])
示例#5
0
 def test_get_preprocess_key_for_column(self):
     self.assertEqual(
         'DOB YYYYMMDD',
         FacebookAds._get_preprocess_key_for_column('vb_voterbase_dob'))
示例#6
0
 def test_get_match_key_for_column(self):
     # Test just a few of the mappings
     self.assertEqual('EMAIL',
                      FacebookAds._get_match_key_for_column('email'))
     self.assertEqual(
         'EMAIL', FacebookAds._get_match_key_for_column('voterbase_email'))
     self.assertEqual('FN',
                      FacebookAds._get_match_key_for_column('first name'))
     self.assertEqual('FN',
                      FacebookAds._get_match_key_for_column('FIRST-NAME '))
     self.assertEqual(
         'FN',
         FacebookAds._get_match_key_for_column('vb_tsmart_first_name'))
     self.assertEqual('LN',
                      FacebookAds._get_match_key_for_column('Last Name!'))
     self.assertEqual('ST',
                      FacebookAds._get_match_key_for_column('state code'))
     self.assertEqual(
         'ST', FacebookAds._get_match_key_for_column('vb_vf_source_state'))
     self.assertEqual(
         'GEN',
         FacebookAds._get_match_key_for_column('vb_voterbase_gender'))
     self.assertEqual(
         'PHONE',
         FacebookAds._get_match_key_for_column(
             'vb_voterbase_phone_wireless'))
     self.assertIsNone(FacebookAds._get_match_key_for_column('invalid'))