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)
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)
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()