class BannerTest(TestCase):
    def setUp(self):
        self.api = Api(dummy_api_key, api_dev_url, False)
        self.dummy_email = "*****@*****.**"

    @activate
    def test_request(self):
        register_uri(
            GET,
            "http://%s/api/v2/banner/%s?email=%s" % (api_dev_url, dummy_campaign_uuid, self.dummy_email),
            body=bytearray(
                """
            {
                "bannerImageUrl": "https://buyexpressly.com/assets/banner/awesome-banner.jpg",
                "migrationLink": "https://www.myblog.com/expressly/api/3aff1880-b0f5-45bd-8f33-247f55981f2c"
            }""",
                "utf-8",
            ),
            status=200,
            content_type="application/json",
        )

        response = self.api.get_banner(dummy_campaign_uuid, self.dummy_email)

        self.assertEqual(response.status, 200)
        self.assertIsInstance(response.data, BannerResponse)
        self.assertTrue(validate(BannerResponse, response.data))
class CustomerMigrationSuccessTest(TestCase):
    def setUp(self):
        self.api = Api(dummy_api_key, api_dev_url, False)

    @activate
    def test_migration_status_migrated(self):
        register_uri(
            POST,
            'http://%s/api/v2/migration/%s/success' % (api_dev_url, dummy_campaign_customer_uuid),
            body=b'{"success":true,"msg":"User registered as migrated"}',
            status=200,
            content_type='application/json'
        )

        response = self.api.send_migration_status(dummy_campaign_customer_uuid)

        self.assertEqual(response.status, 200)
        self.assertIsInstance(response.data, MigrationStatusResponse)
        self.assertTrue(validate(MigrationStatusResponse, response.data))

        self.assertTrue(response.data.success)

    @activate
    def test_migration_status_exists(self):
        register_uri(
            POST,
            'http://%s/api/v2/migration/%s/success' % (api_dev_url, dummy_campaign_customer_uuid),
            body=b'{"success":true,"msg":"User already migrated"}',
            status=200,
            content_type='application/json'
        )

        response = self.api.send_migration_status(dummy_campaign_customer_uuid)

        self.assertEqual(response.status, 200)
        self.assertIsInstance(response.data, MigrationStatusResponse)
        self.assertTrue(validate(MigrationStatusResponse, response.data))

        self.assertTrue(response.data.success)
class PingTest(TestCase):
    def setUp(self):
        self.api = Api(dummy_api_key, api_dev_url, False)

    def test_request(self):
        response = self.api.ping()

        self.assertEqual(response.status, 200)
        self.assertIsInstance(response.data, PingResponse)
        self.assertTrue(validate(PingResponse, response.data))

        self.assertEqual(response.data.server_status, 'Live')
        self.assertEqual(response.data.db_status, 'Live')
class CustomerMigrationPopupTest(TestCase):
    def setUp(self):
        self.api = Api(dummy_api_key, api_dev_url, False)

    @activate
    def test_migration_popup(self):
        register_uri(
            GET,
            'http://%s/api/v2/migration/%s' % (api_dev_url, dummy_campaign_customer_uuid),
            body=b'<div></div>',
            status=200,
            content_type='text/html'
        )

        try:
            response = self.api.get_migration_popup(dummy_campaign_customer_uuid)

            self.assertTrue(response.status, 200)
            self.assertEqual(response.data, '<div></div>')
        except InvalidHTMLError:
            self.fail("Passed HTML was not valid.")
 def setUp(self):
     self.api = Api(dummy_api_key, api_dev_url, False)
class CustomerMigrationDataTest(TestCase):
    def setUp(self):
        self.api = Api(dummy_api_key, api_dev_url, False)

    @activate
    def test_request(self):
        register_uri(
            GET,
            'http://%s/api/v2/migration/%s/user' % (api_dev_url, dummy_campaign_customer_uuid),
            body=bytearray("""
            {
                "meta": {
                    "locale": "UKR",
                    "sender": "https://expresslyapp.com/api/v2/migration/%s}"
                },
                "data": {
                    "email": "*****@*****.**",
                    "customerData": {
                        "firstName": "John",
                        "lastName": "Smith",
                        "gender": "M",
                        "billingAddress": 0,
                        "shippingAddress": 1,
                        "company": "Expressly",
                        "dob": "1987-08-07",
                        "taxNumber": "GB0249894821",
                        "onlinePresence": [
                            {
                                "field": "website",
                                "value": "http://www.myblog.com"
                            }
                        ],
                        "dateUpdated": "2015-07-10T11:42:00+01:00",
                        "emails": [
                            {
                                "email": "*****@*****.**",
                                "alias": "default"
                            },
                            {
                                "email": "*****@*****.**",
                                "alias": "work"
                            }
                        ],
                        "phones": [
                            {
                                "type": "M",
                                "number": "020734581250",
                                "countryCode": 44
                            },
                            {
                                "type": "L",
                                "number": "020731443250",
                                "countryCode": 44
                            }
                        ],
                        "addresses": [
                            {
                                "firstName": "John",
                                "lastName": "Smith",
                                "address1": "12 Piccadilly",
                                "address2": "Room 14",
                                "city": "London",
                                "companyName": "WorkHard Ltd",
                                "zip": "W1C 34U",
                                "phone": 1,
                                "alias": "Work address",
                                "stateProvince": "LND",
                                "country": "GBR"
                            },
                            {
                                "firstName": "John C.",
                                "lastName": "Smith",
                                "address1": "23 Sallsberry Ave",
                                "address2": "Flat 3",
                                "city": "London",
                                "companyName": "",
                                "zip": "NW3 4HG",
                                "phone": 0,
                                "alias": "Home address",
                                "stateProvince": "LND",
                                "country": "GBR"
                            }
                        ]
                    },
                    "cart": {
                        "productId": "491",
                        "couponCode": "20OFF"
                    }
                }
            }""" % dummy_campaign_customer_uuid, 'utf-8'),
            status=200,
            content_type='application/json'
        )

        response = self.api.get_migration_customer(dummy_campaign_customer_uuid)

        self.assertTrue(response.status, 200)
        self.assertIsInstance(response.data, MigrationCustomerResponse)
        self.assertTrue(validate(MigrationCustomerResponse, response.data))
 def setUp(self):
     self.api = Api(dummy_api_key, api_dev_url, False)
     self.dummy_email = "*****@*****.**"