Пример #1
0
    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)
Пример #2
0
    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
            },
        ])
Пример #3
0
    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)
Пример #4
0
    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
            },
        ])
Пример #5
0
    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'
        }])
Пример #6
0
    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'
        }])
Пример #7
0
    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'
            }
        }])
Пример #8
0
    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
                }
            })
Пример #9
0
    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'
                }
            })
Пример #10
0
    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'
                              },
                          ])
Пример #11
0
    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'
        }])
Пример #12
0
    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
            },
        ])
Пример #13
0
    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
                }
            })
Пример #14
0
    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': ''
            })
Пример #15
0
    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)
Пример #16
0
    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)
Пример #17
0
    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)
Пример #18
0
    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)
Пример #19
0
    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')
Пример #20
0
    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')
Пример #21
0
    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)
Пример #22
0
    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)
Пример #23
0
    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)
Пример #24
0
    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)
Пример #25
0
    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)
Пример #26
0
    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')
Пример #27
0
    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)
Пример #28
0
    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)
Пример #29
0
    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)
Пример #30
0
    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)