Exemplo n.º 1
0
    def test_get_offers_execute(self):
        setup_mock("execute", responses)
        opts = deepcopy(self.get_offers_options)
        execute = {
            "mboxes": [{
                "name": "cart",
                "index": 1
            }],
            "pageLoad": {
                "product": {
                    "id": "123",
                    "categoryId": "456"
                },
                "order": {
                    "id": "111",
                    "total": 100
                }
            }
        }
        opts["request"]["prefetch"] = None
        opts["request"]["execute"] = execute
        opts["request"] = create_delivery_request(opts["request"])

        result = self.client.get_offers(opts)

        self.assertEqual(len(responses.calls), 1)
        validate_response(self, result)
Exemplo n.º 2
0
 def test_get_offers_sync(self):
     setup_mock("default", responses)
     opts = deepcopy(self.get_offers_options)
     opts["request"] = create_delivery_request(opts["request"])
     result = self.client.get_offers(opts)
     self.assertEqual(len(responses.calls), 1)
     validate_response(self, result)
Exemplo n.º 3
0
    def test_get_offers_prefetch(self):
        setup_mock("prefetch", responses)
        opts = deepcopy(self.get_offers_options)
        prefetch = {
            "mboxes": [{
                "name": "cart",
                "index": 1
            }],
            "pageLoad": {
                "product": {
                    "id": "123",
                    "categoryId": "456"
                },
                "order": {
                    "id": "111",
                    "total": 100
                }
            },
            "views": [{
                "product": {
                    "id": "123",
                    "categoryId": "456"
                },
                "order": {
                    "id": "111",
                    "total": 100
                }
            }]
        }
        opts["request"]["execute"] = None
        opts["request"]["prefetch"] = prefetch
        opts["request"] = create_delivery_request(opts["request"])

        result = self.client.get_offers(opts)

        expected_metrics = [{
            "type": "click",
            "selector": "#parent",
            "eventToken": "xydsb1vdkls",
            "analytics": {
                "payload": {
                    "pe": "tnt",
                    "tnta": "347565:1:0|2,347565:1:0|1"
                }
            }
        }]
        self.assertEqual(len(responses.calls), 1)
        validate_response(self, result)

        delivery_response = result.get("response")
        validate_metrics(delivery_response.prefetch.metrics, expected_metrics)

        response_tokens = result.get("response_tokens")
        self.assertIsNotNone(response_tokens)
        self.assertEqual(len(response_tokens), 2)
        for response_token in response_tokens:
            self.assertIsNotNone(response_token.get("activity.id"))
            self.assertIsNotNone(response_token.get("experience.id"))
    def test_send_notifications_sync(self):
        setup_mock("notifications", responses)
        opts = deepcopy(self.send_notifications_options)
        opts["request"] = create_delivery_request(opts["request"])

        result = self.client.send_notifications(opts)

        self.assertEqual(len(responses.calls), 1)
        validate_response(self, result)
Exemplo n.º 5
0
    def test_get_offers_target_cookie(self):
        setup_mock("default", responses)
        opts = deepcopy(self.get_offers_options)
        opts["request"] = create_delivery_request(opts["request"])
        opts["target_cookie"] = "PC#1.5_9#9596233214|b#2#1296233214"

        result = self.client.get_offers(opts)

        self.assertEqual(len(responses.calls), 1)
        validate_response(self, result)
        self.assertIsNotNone(result.get("target_cookie"))
        self.assertIsNotNone(result.get("target_location_hint_cookie"))
Exemplo n.º 6
0
    def test_get_offers_customer_ids(self):
        setup_mock("customer_ids", responses)
        opts = deepcopy(self.get_offers_options)
        customer_ids = [{
            "id": "999",
            "integrationCode": "foo",
            "authenticatedState": "authenticated"
        }]
        opts["request"]["id"]["customerIds"] = customer_ids
        opts["request"] = create_delivery_request(opts["request"])

        result = self.client.get_offers(opts)

        self.assertEqual(len(responses.calls), 1)
        validate_response(self, result)
Exemplo n.º 7
0
    def test_get_offers_with_preview(self):
        setup_mock("default", responses)
        opts = deepcopy(self.get_offers_options)
        opts["request"]["preview"] = {"token": "sdfdlbys3355"}
        opts["request"] = create_delivery_request(opts["request"])

        request_spy = spy_decorator(ApiClient.request)
        with patch.object(ApiClient, "request", request_spy):
            result = self.client.get_offers(opts)

            # validate Delivery API request
            expected_req_preview = request_spy.mock.call_args[1]["body"][
                "preview"]
            self.assertEqual(expected_req_preview.get("token"), "sdfdlbys3355")

            # validate Delivery API response
            self.assertEqual(len(responses.calls), 1)
            validate_response(self, result)
Exemplo n.º 8
0
    def test_get_offers_with_trace(self):
        setup_mock("debug_trace", responses)
        opts = deepcopy(self.get_offers_options)
        opts["request"]["trace"] = {
            "authorizationToken": "token",
            "usage": {
                "a": "b",
                "c": "d"
            }
        }
        opts["request"] = create_delivery_request(opts["request"])

        request_spy = spy_decorator(ApiClient.request)
        with patch.object(ApiClient, "request", request_spy):
            result = self.client.get_offers(opts)

            # validate Delivery API request
            expected_req_trace = request_spy.mock.call_args[1]["body"]["trace"]
            self.assertTrue(isinstance(expected_req_trace, dict))
            self.assertEqual(expected_req_trace.get("authorizationToken"),
                             "token")
            self.assertEqual(expected_req_trace.get("usage"), {
                "a": "b",
                "c": "d"
            })

            # validate Delivery API response
            self.assertEqual(len(responses.calls), 1)
            validate_response(self, result)

            if not result.get("response").execute.mboxes:
                self.fail("Expected execute mboxes in DeliveryResponse")
            for mbox in result.get("response").execute.mboxes:
                self.assertIsNotNone(mbox.trace)

            if not result.get("response").prefetch.mboxes:
                self.fail("Expected prefetch mboxes in DeliveryResponse")
            for mbox in result.get("response").prefetch.mboxes:
                self.assertIsNotNone(mbox.trace)
Exemplo n.º 9
0
 def verify_callback(result):
     self.assertEqual(len(responses.calls), 1)
     validate_response(self, result)
     shared["has_response"] = True