def test_create_delivery_sends_error_email_default_error(
            self, mock_logger, mock_email):
        httpretty.register_uri(
            httpretty.POST,
            f"{lazona_connector.vars.koiki_host}/rekis/api/altaEnvios",
            status=200,
            content_type="text/json",
            body=json.dumps({
                'respuesta':
                '102',
                'mensaje':
                'ERROR',
                'envios': [{
                    'numPedido': '124',
                    'respuesta': '102',
                    'mensaje': ''
                }]
            }))

        serializer = OrderSerializer(data=self.data)
        self.assertTrue(serializer.is_valid())
        order = serializer.validated_data
        mock_email.send.return_value = True

        create_or_update_delivery(order)
        message = mock_email.call_args[0][1]
        self.assertIn("Missatge d'error no proporcionat", message)
    def test_create_delivery_sends_error_email(self, mock_logger, mock_email):
        httpretty.register_uri(
            httpretty.POST,
            f"{lazona_connector.vars.koiki_host}/rekis/api/altaEnvios",
            status=200,
            content_type="text/json",
            body=json.dumps({
                'respuesta':
                '102',
                'mensaje':
                'ERROR',
                'envios': [{
                    'numPedido': '124',
                    'respuesta': '102',
                    'mensaje': 'Missing field X'
                }]
            }))

        serializer = OrderSerializer(data=self.data)
        self.assertTrue(serializer.is_valid())
        order = serializer.validated_data

        mock_email.send.return_value = True

        create_or_update_delivery(order)
        mock_logger.info.assert_called_once_with(
            "Sending Koiki error to admins for order 33")
        self.assertIn({"to": lazona_connector.vars.error_mail_recipients},
                      mock_email.call_args)
        message = mock_email.call_args[0][1]
        self.assertIn(
            f"{lazona_connector.vars.wcfmmp_host}/area-privada/orders-details/33",
            message)
        self.assertIn("Missing field X", message)
    def test_create_delivery_sends_email(self, mock_logger, mock_email):
        httpretty.register_uri(
            httpretty.POST,
            f"{lazona_connector.vars.koiki_host}/rekis/api/altaEnvios",
            status=200,
            content_type="text/json",
            body=json.dumps({
                'respuesta':
                '101',
                'mensaje':
                'OK',
                'envios': [{
                    'numPedido': '123',
                    'codBarras': 'yyy',
                    'etiqueta': 'abcd',
                    'respuesta': '101',
                    'mensaje': 'OK'
                }]
            }),
        )

        serializer = OrderSerializer(data=self.data)
        self.assertTrue(serializer.is_valid())
        order = serializer.validated_data

        mock_email.send.return_value = True

        create_or_update_delivery(order)
        mock_logger.info.assert_called_once_with(
            "Sending Koiki pdf to vendor with id 6")
        self.assertIn({"to": ["*****@*****.**"]}, mock_email.call_args)
        message = mock_email.call_args[0][1]
        self.assertIn(
            f"{lazona_connector.vars.wcfmmp_host}/area-privada/orders-details/33",
            message)
Exemple #4
0
    def retry_delivery(self, request, shipment_id):
        client = APIClient()
        shipment = Shipment.objects.get(id=shipment_id)
        response = client.request(f"orders/{shipment.order_id}")
        serializer = OrderSerializer(data=response.json())
        if serializer.is_valid():
            order = serializer.validated_data
            create_or_update_delivery(order, vendor_id=str(shipment.vendor_id))
            return HttpResponseRedirect(
                reverse("admin:api_shipment_change", args=(shipment.id, )))

        return HttpResponse(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
Exemple #5
0
    def test_create_shipment_successful_multiple_koiki_methods(
            self, mock_email):
        httpretty.register_uri(
            httpretty.POST,
            f"{lazona_connector.vars.koiki_host}/rekis/api/altaEnvios",
            status=200,
            content_type="text/json",
            body=json.dumps({
                "respuesta":
                "101",
                "mensaje":
                "OK",
                "envios": [{
                    "numPedido": "123",
                    "codBarras": "yyy",
                    "etiqueta": "abcd",
                    "respuesta": "101",
                    "mensaje": "OK",
                }, {
                    "numPedido": "124",
                    "codBarras": "ttt",
                    "etiqueta": "abc2",
                    "respuesta": "101",
                    "mensaje": "OK",
                }],
            }),
        )

        serializer = OrderSerializer(data=self.data)
        self.assertTrue(serializer.is_valid())
        order = serializer.validated_data
        mock_email.send.return_value = True
        create_or_update_delivery(order)
        self.assertEqual(Shipment.objects.all().count(), 2)

        shipment_koiki = Shipment.objects.filter(vendor_id=6).first()
        self.assertEqual(shipment_koiki.order_id, 33)
        self.assertEqual(shipment_koiki.method, ShipmentMethod.KOIKI)

        shipment_local = Shipment.objects.filter(vendor_id=7).first()
        self.assertEqual(shipment_local.order_id, 33)
        self.assertEqual(shipment_local.method, ShipmentMethod.KOIKI)
    def test_failure(self, mock_client):
        client = MagicMock()
        vendor = MagicMock()
        delivery = Delivery(
            {
                "respuesta": "102",
                "mensaje": "ERROR IN THE RECEIVED DATA",
                "numPedido": "test",
                "order_id": 33,
            },
            vendor,
        )
        client.create_delivery.return_value = [delivery]
        mock_client.return_value = client

        serializer = OrderSerializer(data=self.data)
        self.assertTrue(serializer.is_valid())
        order = serializer.validated_data
        create_or_update_delivery(order)
        self.assertTrue(delivery._is_errored())
    def test_delivery_successful(self, mock_client, mock_success_email,
                                 mock_print_pdf):
        client = MagicMock(name="client")
        vendor = MagicMock()
        delivery = Delivery(
            {
                "respuesta": "101",
                "numPedido": "test",
                "order_id": 33,
                "codBarras": "CODBAR33"
            },
            vendor,
        )
        client.create_delivery.return_value = [delivery]
        mock_print_pdf.return_value = "pdf_barcodes/test.pdf"
        mock_client.return_value = client
        self.assertEqual(delivery.get_data_val("barcode"), "CODBAR33")
        serializer = OrderSerializer(data=self.data)
        self.assertTrue(serializer.is_valid())
        order = serializer.validated_data

        create_or_update_delivery(order)

        mock_success_email.assert_called_once()