Exemplo n.º 1
0
 def test_keyword_lengths_vary_between_2_max_len(self):
     df2 = kw_generate(['one', 'two'], ['three', 'four'], max_len=2)
     self.assertEqual(set(df2['Keyword'].str.count(' ') + 1), {2})
     df3 = kw_generate(['one', 'two'], ['three', 'four'], max_len=3)
     self.assertEqual(set(df3['Keyword'].str.count(' ') + 1), {2, 3})
     df4 = kw_generate(['one', 'two'], ['three', 'four', 'five'], max_len=4)
     self.assertEqual(set(df4['Keyword'].str.count(' ') + 1), {2, 3, 4})
Exemplo n.º 2
0
 def test_keyword_lengths_vary_between_2_max_len(self):
     df2 = kw_generate(['one', 'two'], ['three', 'four'], max_len=2)
     self.assertEqual(set(df2['Keyword'].str.count(' ')+1), {2})
     df3 = kw_generate(['one', 'two'], ['three', 'four'], max_len=3)
     self.assertEqual(set(df3['Keyword'].str.count(' ')+1), {2, 3})
     df4 = kw_generate(['one', 'two'], ['three', 'four', 'five'], max_len=4)
     self.assertEqual(set(df4['Keyword'].str.count(' ')+1), {2, 3, 4})
Exemplo n.º 3
0
 def test_all_match_types_used(self):
     df_exact = kw_generate(['one'], ['two'], match_types=['Exact'])
     df_phrase = kw_generate(['one'], ['two'], match_types=['Phrase'])
     df_broad = kw_generate(['one'], ['two'], match_types=['Broad'])
     df_e_p_b = kw_generate(['one'], ['two'], match_types=['Exact','Phrase', 'Broad', 'Modified'])
     self.assertEqual(set(df_exact['Criterion Type']), {'Exact'})
     self.assertEqual(set(df_phrase['Criterion Type']), {'Phrase'})
     self.assertEqual(set(df_broad['Criterion Type']), {'Broad'})
     self.assertEqual(set(df_e_p_b['Criterion Type']), {'Exact', 'Phrase', 'Broad'})        
Exemplo n.º 4
0
 def test_right_combinatorics_fuction_selected(self):
     df_perm = kw_generate(['one', 'two'], ['three', 'four'],
                           order_matters=True)
     self.assertTrue({'one three',
                      'three one'}.issubset(set(df_perm['Keyword'])))
     df_comb = kw_generate(['one', 'two'], ['three', 'four'],
                           order_matters=False)
     self.assertFalse({'one three',
                       'three one'}.issubset(set(df_comb['Keyword'])))
Exemplo n.º 5
0
 def test_right_combinatorics_fuction_selected(self):
     df_perm = kw_generate(['one', 'two'], ['three', 'four'],
                           order_matters=True)
     self.assertTrue({'one three', 'three one'}
                     .issubset(set(df_perm['Keyword'])))
     df_comb = kw_generate(['one', 'two'], ['three', 'four'],
                           order_matters=False)
     self.assertFalse({'one three', 'three one'}
                      .issubset(set(df_comb['Keyword'])))
Exemplo n.º 6
0
 def test_all_match_types_used(self):
     df_exact = kw_generate(['one'], ['two'], match_types=['Exact'])
     df_phrase = kw_generate(['one'], ['two'], match_types=['Phrase'])
     df_broad = kw_generate(['one'], ['two'], match_types=['Broad'])
     df_e_p_b = kw_generate(['one'], ['two'],
                            match_types=['Exact', 'Phrase', 'Broad',
                                         'Modified'])
     self.assertEqual(set(df_exact['Criterion Type']), {'Exact'})
     self.assertEqual(set(df_phrase['Criterion Type']), {'Phrase'})
     self.assertEqual(set(df_broad['Criterion Type']), {'Broad'})
     self.assertEqual(set(df_e_p_b['Criterion Type']),
                      {'Exact', 'Phrase', 'Broad'})
Exemplo n.º 7
0
    def test_correct_permutations_are_generated(self):
        products = ['one', 'two']
        words = ['three', 'four']
        test_combs = []
        for i in range(2, 4):
            for prod in products:
                for perm in permutations([prod] +words, i):
                    if prod not in perm:
                        continue
                    test_combs.append(' '.join(perm))

        df = kw_generate(products, words, match_types=['Exact'], order_matters=True)        
        self.assertEqual(set(test_combs), set(df['Keyword']))
Exemplo n.º 8
0
    def test_correct_permutations_are_generated(self):
        products = ['one', 'two']
        words = ['three', 'four']
        test_combs = []
        for i in range(2, 4):
            for prod in products:
                for perm in permutations([prod] + words, i):
                    if prod not in perm:
                        continue
                    test_combs.append(' '.join(perm))

        df = kw_generate(products, words, match_types=['Exact'],
                         order_matters=True)
        self.assertEqual(set(test_combs), set(df['Keyword']))
Exemplo n.º 9
0
def generate_kw_df(button, products, words, match_types, campaign_name,
                   order_matters):
    if button and products and words and match_types and campaign_name:
        logging.info(msg=locals())

    if products and words:
        product_list = list({x.strip() for x in products.split('\n') if x})
        if '' in product_list:
            product_list.remove('')
        word_list = list({x.strip() for x in words.split('\n')})

        return adv.kw_generate(product_list,
                               word_list,
                               match_types=match_types,
                               order_matters=bool(order_matters),
                               campaign_name=campaign_name).to_dict('records')
Exemplo n.º 10
0
 def test_returns_pd_dataframe(self):
     df = kw_generate(['one'], ['two'], order_matters=True)
     self.assertEqual(type(df), pd.core.frame.DataFrame)
     self.assertEqual(df.shape, (6, 5))
Exemplo n.º 11
0
 def test_raises_error_for_wrong_match_types(self):
     with self.assertRaises(ValueError):
         kw_generate(['one', 'two'], ['three', 'four'],
                     match_types=['hello', 'world'])
Exemplo n.º 12
0
 def test_match_types_are_capitalized(self):
     df = kw_generate(['one', 'two'], ['three', 'four'],
                      match_types=['eXact', 'PHRase', 'BRoad'])
     self.assertEqual(set(df['Criterion Type']),
                      {'Exact', 'Phrase', 'Broad'})
Exemplo n.º 13
0
 def test_raises_error_for_wrong_max_len(self):
     with self.assertRaises(ValueError):
         kw_generate(['one', 'two'], ['three', 'four'], max_len=1)
Exemplo n.º 14
0
 def test_ad_group_names_capitalized(self):
     df = kw_generate(['oNe', 'TWO', 'THree', 'four', 'fivE'], ['six'])
     self.assertEqual(set(['One', 'Two', 'Three', 'Four', 'Five']),
                      set(df['Ad Group']))
Exemplo n.º 15
0
 def test_all_products_in_final_result(self):
     products = {'One', 'Two', 'Three'}
     df = kw_generate(products, ['four', 'five'])
     self.assertEqual(products, set(df['Ad Group']))
Exemplo n.º 16
0
 def test_returns_pd_dataframe(self):
     df = kw_generate(['one'], ['two'], order_matters=True)
     self.assertEqual(type(df), pd.core.frame.DataFrame)
     self.assertEqual(df.shape, (6, 5))
Exemplo n.º 17
0
 def test_raises_error_for_wrong_match_types(self):
     with self.assertRaises(ValueError):
         kw_generate(['one', 'two'], ['three', 'four'],
                     match_types=['hello', 'world'])
Exemplo n.º 18
0
 def test_all_products_in_final_result(self):
     products = {'One', 'Two', 'Three'}
     df = kw_generate(products, ['four', 'five'])
     self.assertEqual(products, set(df['Ad Group']))
Exemplo n.º 19
0
 def test_correct_column_names_used(self):
     headers = [
         'Campaign', 'Ad Group', 'Keyword', 'Criterion Type', 'Labels'
     ]
     df = kw_generate(['one', 'two'], ['three', 'four'])
     self.assertEqual(list(df.columns.values), headers)
Exemplo n.º 20
0
 def test_raises_error_for_wrong_max_len(self):
     with self.assertRaises(ValueError):
         kw_generate(['one', 'two'], ['three', 'four'], max_len=1)
Exemplo n.º 21
0
 def test_correct_campaign_name(self):
     df = kw_generate(['one', 'two'], ['three'],
                      campaign_name='My_campaign')
     self.assertEqual(df['Campaign'][0], 'My_campaign')
     self.assertTrue(len(set(df['Campaign'])) == 1)
Exemplo n.º 22
0
 def test_correct_column_names_used(self):
     headers = ['Campaign', 'Ad Group', 'Keyword',
                'Criterion Type', 'Labels']
     df = kw_generate(['one', 'two'], ['three', 'four'])
     self.assertEqual(list(df.columns.values), headers)
Exemplo n.º 23
0
 def test_match_types_are_capitalized(self):
     df = kw_generate(['one', 'two'], ['three', 'four'],
                      match_types=['eXact', 'PHRase', 'BRoad'])
     self.assertEqual(set(df['Criterion Type']),
                      {'Exact', 'Phrase', 'Broad'})
Exemplo n.º 24
0
 def test_ad_group_names_capitalized(self):
     df = kw_generate(['oNe', 'TWO', 'THree', 'four', 'fivE'], ['six'])
     self.assertEqual(set(['One', 'Two', 'Three', 'Four', 'Five']),
                      set(df['Ad Group']))
Exemplo n.º 25
0
 def test_modified_adds_plus_sign_as_many_as_spaces(self):
     df = kw_generate(['one', 'two'], ['three'], match_types=['Modified'])
     self.assertTrue(
         all(df['Keyword'].str.count('\+') == df['Keyword'].str.count(' ') +
             1))
     self.assertTrue(set(df['Criterion Type']) == {'Broad'})
Exemplo n.º 26
0
 def test_correct_campaign_name(self):
     df = kw_generate(['one', 'two'], ['three'], campaign_name='My_campaign')
     self.assertEqual(df['Campaign'][0], 'My_campaign')
     self.assertTrue(len(set(df['Campaign'])) == 1)
Exemplo n.º 27
0
                     'border-radius': '12px',
                     'font-size': 18
                 }),
     html.Br(),
     html.Br(),
     dt.DataTable(
         id='output_df',
         editable=False,
         sortable=True,
         filterable=False,
         max_rows_in_viewport=10,
         columns=[
             'Campaign', 'Ad Group', 'Keyword', 'Criterion Type',
             'Labels'
         ],
         rows=adv.kw_generate(
             [''], [''], match_types=['Broad']).to_dict('records')),
     html.Br(),
     html.A('Download Keywords',
            id='download_link',
            download="rawdata.csv",
            href="",
            target="_blank",
            n_clicks=0),
     html.Div(id='kw_df_summary',
              style={
                  'width': '80%',
                  'margin-left': '5%'
              })
 ],
 style={
     'width': '60%',
Exemplo n.º 28
0
 def test_modified_adds_plus_sign_as_many_as_spaces(self):
     df = kw_generate(['one', 'two'], ['three'], match_types=['Modified'])
     self.assertTrue(all(df['Keyword'].str.count(r'\+')
                         == df['Keyword'].str.count(' ')+1))
     self.assertTrue(set(df['Criterion Type']) == {'Broad'})
Exemplo n.º 29
0
import advertools as adv
print(adv.kw_generate(products=('Hackerrank'), words=['buy', 'coding']))
# print((adv.serp_goog('hackerrank', '004124293475798993048:uu7vpk6keyt', "AIzaSyDcn5WPaRmpPo7HVCN8nS9DLm-hliBNaxM",num=10)))
# print(adv.extract_urls())