"""Tests for Order schemas.""" from marshmallow import ValidationError import pytest from ows_product_physical.schemas.order import OrderListSchema, OrderSchema valid_order_payload = { 'id': 1, 'delivery_store_id': 1705, 'status': 'in_progress', 'type': 'new', 'created_by': '510b0265-e6e1-4c4f-bfb9-c3d33e8f02a7', 'created_at': '2023-03-17T07:45:20Z', 'last_updated': '2023-03-17T07:45:20Z', 'output_file': 'test.xml', 'products': [ {'status': 'delivered', 'product_id': 23245}, {'status': 'failed', 'product_id': 23246} ] } @pytest.mark.parametrize('valid_payload', [ { **valid_order_payload }, { 'id': 100, 'delivery_store_id': 1605, 'status': 'error', 'type': 'new', 'created_by': '510b0265-e6e1-4c4f-bfb9-c3d33e8f02a7', 'created_at': '2023-03-17T07:45:20Z', 'last_updated': '2023-03-17T07:45:20Z', 'output_file': 'error.xml', 'products': [ {'status': 'failed', 'product_id': 23246} ] } ]) def test_order_schema_valid_payload(valid_payload): """Tests that a valid payload will be serialized correctly.""" try: OrderSchema().load(valid_payload) assert True except ValidationError: assert False @pytest.mark.parametrize('invalid_order_payload', [ # missing products { id: 1, 'delivery_store_id': 1705, 'status': 'in_progress', 'type': 'new', 'created_by': '510b0265-e6e1-4c4f-bfb9-c3d33e8f02a7', 'created_at': '2023-03-17T07:45:20Z', 'last_updated': '2023-03-17T07:45:20Z', }, # incorrect data { 'ben': 'is cool' }, # empty {} ]) def test_order_schema_invalid_payloads(invalid_order_payload): """Test that invalid payloads generate errors.""" try: OrderSchema().load(invalid_order_payload) assert False except ValidationError: assert True valid_order_list_payload = { 'total': 123, 'items': [ valid_order_payload.copy() ] } def test_order_list_schema_valid_payload(): """Tests that a valid payload will be serialized correctly.""" try: OrderListSchema().load(valid_order_list_payload) assert True except ValidationError: assert False @pytest.mark.parametrize('invalid_order_list_payload', [ # missing items { 'total': 123 }, # missing total { 'items': [] }, # empty {} ]) def test_order_list_schema_invalid_payloads(invalid_order_list_payload): """Test that invalid payloads generate errors.""" try: OrderListSchema().load(invalid_order_list_payload) assert False except ValidationError: assert True