"""Test orders model.""" from unittest.mock import MagicMock, patch import pytest from werkzeug.exceptions import NotFound from vectororder.exceptions import OrderNotFoundError from vectororder.models import orders from vectororder.models.schemas import OrderData, OrderStatus @patch("vectororder.models.orders.ddb_connector") def test_get_order_from_dynamo_found(mock_conn: MagicMock) -> None: """Test get an order.""" mock_conn.get_item.return_value = {"order_id": "1", "encoder_id": "1"} result = orders.get_order_from_dynamo(1) assert result == {"order_id": "1", "encoder_id": "1"} @patch("vectororder.models.orders.ddb_connector") def test_get_order_from_dynamo_not_found(mock_conn: MagicMock) -> None: """Test a not found order response.""" mock_conn.get_item.return_value = None with pytest.raises(NotFound) as exc: orders.get_order_from_dynamo(1) assert str(exc.value) == "404 Not Found: Order not found for provided order id" @patch("vectororder.models.orders.ddb_connector") def test_get_orders_from_dynamodb(mock_conn: MagicMock) -> None: """Test get orders.""" mock_conn.batch_get_items.return_value = [{"order_id": "1", "encoder_id": "1"}] result = orders.get_orders_from_dynamodb([1]) assert result == [{"order_id": "1", "encoder_id": "1"}] def test_create_order_without_products( init_db_order_tables: None, mock_order_data: OrderData ) -> None: """Test create order with no products.""" order_id = orders.create_order(mock_order_data) assert order_id == 1 def test_update_order_raise_exception(init_db_order_tables: None) -> None: """Test update order.""" with pytest.raises(OrderNotFoundError) as exc: orders.update_order(order_id=1, order_status=OrderStatus.OPEN, upcs=set()) assert str(exc.value) == "404 Not Found: Order 1 not found or already closed." def test_update_order_success( init_db_order_tables: None, mock_order_data: OrderData ) -> None: """Test update order.""" order_id = orders.create_order(mock_order_data) orders.update_order(order_id=order_id, order_status=OrderStatus.CLOSED, upcs=set()) assert True