"""Functional tests for Vector orders endpoints.""" import pytest from flask.testing import FlaskClient from sqlalchemy import select from vectororder.connectors.mysql import art_db_connector from vectororder.constants import header from vectororder.models.orders import encoding_order_table from vectororder.models.schemas import OrderStatus @pytest.mark.parametrize( "order_status, date_is_set", [ (OrderStatus.OPEN, False), (OrderStatus.CLOSED, True), ], ) def test_create_order_sets_delivery_date_for_closed_status( fixture_client: FlaskClient, init_db_order_tables: None, order_status: OrderStatus, date_is_set: bool, ) -> None: """Test create_order sets encoder_delivery_date only when status is closed.""" payload = { "encoder_id": 18, "is_meta_update": False, "order_status": order_status.value, "priority": 1, "store_ids": [1, 2, 3], "upcs": [199066946312], "user_id": 101, } response = fixture_client.post( "/orders", headers={header.CONTENT_TYPE: header.CONTENT_TYPE_JSON_VAL}, json=payload, ) assert response.status_code == 200 order_id = response.get_json()["order_id"] with art_db_connector.db_session() as session: result = session.execute( select(encoding_order_table.c.encoder_delivery_date).where( encoding_order_table.c.encoding_order_id == order_id ) ) row = result.one() assert (row.encoder_delivery_date is not None) == date_is_set