From aaa5a6c556bf5c33cbababc472424f60085cf830 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Tue, 9 Dec 2025 13:00:16 +0900 Subject: [PATCH] fixup! WIP --- tests/queries/test_search_product.py | 70 ++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/tests/queries/test_search_product.py b/tests/queries/test_search_product.py index ba94def..1b02fda 100644 --- a/tests/queries/test_search_product.py +++ b/tests/queries/test_search_product.py @@ -1,38 +1,88 @@ -from datetime import datetime - from sqlalchemy.orm import Session from dibbler.models import Product from dibbler.queries import search_product +def insert_test_data(sql_session: Session) -> list[Product]: + products = [ + Product("1234567890123", "Test Product A"), + Product("2345678901234", "Test Product B"), + Product("3456789012345", "Another Product"), + Product("4567890123456", "Hidden Product", hidden=True), + ] + + sql_session.add_all(products) + sql_session.commit() + + return products + + def test_search_product_no_products(sql_session: Session) -> None: - pass + result = search_product("Nonexistent Product", sql_session) + + assert isinstance(result, list) + + assert len(result) == 0 def test_search_product_name_exact_match(sql_session: Session) -> None: - pass + insert_test_data(sql_session) + + result = search_product("Test Product A", sql_session) + assert isinstance(result, Product) + assert result.bar_code == "1234567890123" def test_search_product_name_partial_match(sql_session: Session) -> None: - pass + insert_test_data(sql_session) + + result = search_product("Product", sql_session) + assert isinstance(result, list) + assert len(result) == 2 + names = {product.name for product in result} + assert names == {"Test Product A", "Test Product B"} def test_search_product_name_no_match(sql_session: Session) -> None: - pass + insert_test_data(sql_session) + + result = search_product("Nonexistent", sql_session) + assert isinstance(result, list) + assert len(result) == 0 def test_search_product_barcode_exact_match(sql_session: Session) -> None: - pass + products = insert_test_data(sql_session) + + product = products[1] # Test Product B + + result = search_product(product.bar_code, sql_session) + assert isinstance(result, Product) + assert result.name == product.name + # Should not be able to find hidden products def test_search_product_hidden_products(sql_session: Session) -> None: - pass + insert_test_data(sql_session) + result = search_product("Hidden Product", sql_session) + assert isinstance(result, list) + assert len(result) == 0 + # Should be able to find hidden products if specified def test_search_product_find_hidden_products(sql_session: Session) -> None: - pass + insert_test_data(sql_session) + result = search_product("Hidden Product", sql_session, find_hidden_products=True) + assert isinstance(result, Product) + assert result.name == "Hidden Product" + # Should be able to find hidden products by barcode despite not specified def test_search_product_hidden_products_by_barcode(sql_session: Session) -> None: - pass + products = insert_test_data(sql_session) + hidden_product = products[3] # Hidden Product + + result = search_product(hidden_product.bar_code, sql_session) + assert isinstance(result, Product) + assert result.name == "Hidden Product"