def test_add_channel_templates_overflow(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.POST, DEFAULT_URL + '/current/integrations/AddChannelTemplates', callback=add_channel_templates_callback, content_type='application/json') client = Client('username', 'password') too_much_channel_templates = [] for channel_template_id in range(150): channel_template = { 'id': channel_template_id, 'name': ''.join([ random.choice(string.ascii_uppercase + string.digits + ' ') for _ in range(50) ]) } if random.choice([True, False]): channel_template['app_id'] = ''.join([ random.choice(string.ascii_uppercase + string.digits) for _ in range(5) ]) too_much_channel_templates.append(channel_template) self.assertRaises(Exception, client.integrations.add_channel_templates, 3, too_much_channel_templates)
def test_get_microsegment_changers(self): responses.add_callback( responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json' ) responses.add_callback( responses.GET, DEFAULT_URL + '/current/model/GetMicrosegmentChangers', callback=get_microsegment_changers_callback, content_type='application/json' ) client = Client('username', 'password') data = client.model.get_microsegment_changers('2016-01-01', '2016-01-31') self.assertEqual(data, [ { 'customer_id': '231342', 'initial': 4, 'final': 12 }, { 'customer_id': '231342', 'initial': 3, 'final': 67 }, ])
def test_add_channel_templates(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.POST, 'https://api.optimove.net/v3.0/integrations/AddChannelTemplates', callback=add_channel_templates_callback, content_type='application/json') client = Client('username', 'password') data = client.integrations.add_channel_templates( 3, [ { 'id': 1, 'name': 'Welcome Back English' }, { 'id': 2, 'name': 'Welcome Back Spanish', 'app_id': 'app123' }, ]) self.assertTrue(data)
def test_get_value_segment_changers(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.GET, DEFAULT_URL + '/current/segments/GetValueSegmentChangers', callback=get_value_segment_changers_callback, content_type='application/json') client = Client('username', 'password') data = client.segments.get_value_segment_changers( '2015-09-01', '2015-09-30') self.assertEqual(data, [ { 'customer_id': '231342', 'initial_value_segment': 2, 'final_value_segment': 3 }, { 'customer_id': '931342', 'initial_value_segment': 1, 'final_value_segment': 2 }, ])
def test_get_executed_campaign_channel_details(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, 'https://api.optimove.net/v3.0/actions/GetExecutedCampaignChannelDetails', callback=get_executed_campaign_channel_details_callback, content_type='application/json') client = Client('username', 'password') data = client.actions.get_executed_campaign_channel_details(9214, 35) self.assertEqual(data, [{ 'campaign_id': 9214, 'channel_id': 35, 'list_id': 12, 'send_id': 'YTGF3C', 'template_id': 520, 'scheduled_time': '2015-12-30 08:00:00' }, { 'campaign_id': 9214, 'channel_id': 35, 'send_id': '', 'template_id': 27, 'scheduled_time': '2016-08-23 16:00:00' }, { 'campaign_id': 9214, 'channel_id': 35, 'send_id': '', 'template_id': 1321, 'scheduled_time': '2016-08-23 18:00:00' }])
def test_get_promo_codes_by_target_group(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, 'https://api.optimove.net/v3.0/actions/GetPromoCodesByTargetGroup', callback=get_promo_codes_by_target_group_callback, content_type='application/json') client = Client('username', 'password') data = client.actions.get_promo_codes_by_target_group(41, '2015-09-23') self.assertEqual(data, [{ 'target_group_id': 41, 'recipient_group_id': 1, 'action_id': 24, 'promo_code': 'HEP-FEB' }, { 'target_group_id': 41, 'recipient_group_id': 2, 'action_id': 25, 'promo_code': 'HEP-FCC' }, { 'target_group_id': 41, 'recipient_group_id': 1, 'action_id': 65, 'promo_code': 'GDG-FAL' }])
def test_get_value_segment_changers_with_delimiter(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.GET, DEFAULT_URL + '/current/segments/GetValueSegmentChangers', callback=get_value_segment_changers_callback, content_type='application/json') client = Client('username', 'password') data = client.segments.get_value_segment_changers( '2015-09-01', '2015-09-30', ['Alias', 'Country'], ',') self.assertEqual(data, [{ 'customer_id': '231342', 'initial_value_segment': 2, 'final_value_segment': 3, 'attributes': { 'Alias': 'BuddyZZ', 'Country': 'UK' } }, { 'customer_id': '931342', 'initial_value_segment': 1, 'final_value_segment': 2, 'attributes': { 'Alias': 'Pax65', 'Country': 'DE' } }])
def test_get_target_group_details(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.GET, DEFAULT_URL + '/current/groups/GetTargetGroupDetails', callback=get_target_group_details_callback, content_type='application/json') client = Client('username', 'password') data = client.groups.get_target_group_details() self.assertEqual( data, { 1: { 'name': 'New UK', 'priority': 1 }, 2: { 'name': 'New DE', 'priority': 2 } })
def test_get_customers_by_value_segment_with_attributes(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, DEFAULT_URL + '/current/segments/GetCustomersByValueSegment', callback=get_customers_by_value_segment_callback, content_type='application/json') client = Client('username', 'password') data = client.segments.get_customers_by_value_segment( 3, '2015-05-10', ['Alias', 'Country'], ',') self.assertEqual( data, { 'AC7615': { 'Alias': 'Robin777', 'Country': 'ES' }, 'FP8721': { 'Alias': 'JollyPop', 'Country': 'UK' } })
def test_add_channel_templates_with_empty_channel_id(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.POST, DEFAULT_URL + '/current/integrations/AddChannelTemplates', callback=add_channel_templates_callback, content_type='application/json') client = Client('username', 'password') self.assertRaises(Exception, client.integrations.add_channel_templates, None, [ { 'id': 1, 'name': 'Welcome Back English' }, { 'id': 2, 'name': 'Welcome Back Spanish', 'app_id': 'app123' }, ])
def test_get_promo_codes_by_campaign(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, 'https://api.optimove.net/v3.0/actions/GetPromoCodesByCampaign', callback=get_promo_codes_by_campaign_callback, content_type='application/json') client = Client('username', 'password') data = client.actions.get_promo_codes_by_campaign(721) self.assertEqual(data, [{ 'campaign_id': 721, 'recipient_group_id': 1, 'action_id': 24, 'promo_code': 'HEP-75-FEB' }, { 'campaign_id': 721, 'recipient_group_id': 2, 'action_id': 65, 'promo_code': 'GDG-50-FRT' }])
def test_get_action_details_by_target_group(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, 'https://api.optimove.net/v3.0/actions/GetActionDetailsByTargetGroup', callback=get_action_details_by_target_group_callback, content_type='application/json') client = Client('username', 'password') data = client.actions.get_action_details_by_target_group( 9, '2015-11-11') self.assertEqual(data, [ { 'target_group_id': 9, 'recipient_group_id': 1, 'action_id': 65, 'duration': 7, 'lead_time': 0, 'channel_id': 1 }, { 'target_group_id': 9, 'recipient_group_id': 1, 'action_id': 78, 'duration': 7, 'lead_time': 0, 'channel_id': 3 }, ])
def test_get_microsegment_list(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.GET, DEFAULT_URL + '/current/model/GetMicrosegmentList', callback=get_microsegment_list_callback, content_type='application/json') client = Client('username', 'password') data = client.model.get_microsegment_list() self.assertEqual( data, { 1: { 'name': 'DWag1-Europe-Winner', 'stage_id': 1, 'future_value': 870.55, 'churn_rate': 0.55 }, 2: { 'name': 'DWag2-US-Loser', 'stage_id': 2, 'future_value': 1065.10, 'churn_rate': 0.52 }, 3: { 'name': 'DWag3-ROW-Winner', 'stage_id': 2, 'future_value': 1213.76, 'churn_rate': 0.57 } })
def test_get_campaign_details(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, 'https://api.optimove.net/v3.0/actions/GetCampaignDetails', callback=get_campaign_details_callback, content_type='application/json') client = Client('username', 'password') data = client.actions.get_campaign_details(21) self.assertEqual( data, { 'campaign_id': 21, 'target_group_id': 15, 'campaign_type': 'Test/Control', 'duration': 7, 'lead_time': 3, 'notes': '', 'is_multi_channel': False, 'is_recurrence': False, 'status': 'Successful', 'error': '' })
def test_login_success(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') client = Client('username', 'password') self.assertEqual(client.token, TOKEN)
def test_login_no_credentials(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') client = Client() self.assertRaises(Exception, client.general.login, None, None)
def test_login_success(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') client = Client('username', 'password') self.assertEqual(client.token, TOKEN)
def test_login_no_credentials(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') client = Client() self.assertRaises(Exception, client.general.login, None, None)
def test_login_fail(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') client = Client() self.assertRaises(Exception, client.general.login, 'username', 'wrong_password')
def test_login_fail(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') client = Client() self.assertRaises(Exception, client.general.login, 'username', 'wrong_password')
def test_update_campaign_metrics_overflow(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.POST, DEFAULT_URL + '/current/integrations/UpdateCampaignMetrics', callback=update_campaign_metrics_callback, content_type='application/json') client = Client('username', 'password') too_much_metrics = [] for campaign_id in range(25): template_id = random.choice(range(1, 100)) too_much_metrics.append({ 'channel_id': 3, 'campaign_id': campaign_id, 'template_id': template_id, 'metric': Integrations.METRIC_SENT, 'value': random.choice(range(1000)) }) too_much_metrics.append({ 'channel_id': 3, 'campaign_id': campaign_id, 'template_id': template_id, 'metric': Integrations.METRIC_DELIVERED, 'value': random.choice(range(1000)) }) too_much_metrics.append({ 'channel_id': 3, 'campaign_id': campaign_id, 'template_id': template_id, 'metric': Integrations.METRIC_OPENED, 'value': random.choice(range(1000)) }) too_much_metrics.append({ 'channel_id': 3, 'campaign_id': campaign_id, 'template_id': template_id, 'metric': Integrations.METRIC_CLICKED, 'value': random.choice(range(1000)) }) too_much_metrics.append({ 'channel_id': 3, 'campaign_id': campaign_id, 'template_id': template_id, 'metric': Integrations.METRIC_UNSUBSCRIBED, 'value': random.choice(range(1000)) }) self.assertRaises(Exception, client.integrations.update_campaign_metrics, too_much_metrics)
def test_get_campaign_details_with_empty_campaign_id(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, 'https://api.optimove.net/v3.0/actions/GetCampaignDetails', callback=get_campaign_details_callback, content_type='application/json') client = Client('username', 'password') self.assertRaises(Exception, client.actions.get_campaign_details, None)
def test_add_promotions_with_empty_promotions(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.POST, DEFAULT_URL + '/current/integrations/AddPromotions', callback=add_promotions_callback, content_type='application/json') client = Client('username', 'password') self.assertRaises(Exception, client.integrations.add_promotions, None)
def test_get_target_group_name_with_empty_target_group_id(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.GET, DEFAULT_URL + '/current/groups/GetTargetGroupName', callback=get_target_group_name_callback, content_type='application/json') client = Client('username', 'password') self.assertRaises(Exception, client.groups.get_target_group_name, None)
def test_add_promotions_with_empty_promotions(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.POST, 'https://api.optimove.net/v3.0/integrations/AddPromotions', callback=add_promotions_callback, content_type='application/json') client = Client('username', 'password') self.assertRaises(Exception, client.integrations.add_promotions, None)
def test_get_target_group_name(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.GET, DEFAULT_URL + '/current/groups/GetTargetGroupName', callback=get_target_group_name_callback, content_type='application/json') client = Client('username', 'password') data = client.groups.get_target_group_name(42) self.assertEqual(data, 'Ireland VIPs Played Last 30 Days')
def test_get_promo_codes_by_target_group_with_wrong_date(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, 'https://api.optimove.net/v3.0/actions/GetPromoCodesByTargetGroup', callback=get_promo_codes_by_target_group_callback, content_type='application/json') client = Client('username', 'password') data = client.actions.get_promo_codes_by_target_group(41, '3015-09-23') self.assertFalse(data)
def test_get_target_groups_by_date_with_wrong_date(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.GET, DEFAULT_URL + '/current/groups/GetTargetGroupsByDate', callback=get_target_groups_by_date_callback, content_type='application/json') client = Client('username', 'password') data = client.groups.get_target_groups_by_date('3015-05-31') self.assertFalse(data)
def test_get_target_group_id(self): responses.add_callback(responses.POST, DEFAULT_URL + '/current/general/login', callback=login_callback, content_type='application/json') responses.add_callback(responses.GET, DEFAULT_URL + '/current/groups/GetTargetGroupID', callback=get_target_group_id_callback, content_type='application/json') client = Client('username', 'password') data = client.groups.get_target_group_id('UK 20VIPs') self.assertEqual(data, 26)
def test_get_executed_campaign_channel_details_wrong_channel_id(self): responses.add_callback(responses.POST, 'https://api.optimove.net/v3.0/general/login', callback=login_callback, content_type='application/json') responses.add_callback( responses.GET, 'https://api.optimove.net/v3.0/actions/GetExecutedCampaignChannelDetails', callback=get_executed_campaign_channel_details_callback, content_type='application/json') client = Client('username', 'password') data = client.actions.get_executed_campaign_channel_details(9214, 34) self.assertFalse(data)