diff --git a/sigl/domain/service.py b/sigl/domain/service.py index c7914eb..e90eddb 100644 --- a/sigl/domain/service.py +++ b/sigl/domain/service.py @@ -226,7 +226,7 @@ def list_entry_set_crossedOff(session: Session, listId: int, entryId: int, cross def products_all(session: Session) -> List[Product]: """Return all Products.""" - return session.query(Product).filter(Product.remember is True).all() + return session.query(Product).filter(Product.remember == True).all() # noqa: E712 def product_by_id(session: Session, id: int) -> Optional[Product]: @@ -238,7 +238,7 @@ def product_create( session: Session, name: str, *, - category: Optional[str] = None, + category: Optional[str] = '', remember: Optional[bool] = None, notes: Optional[str] = None, ) -> Product: diff --git a/tests/test_21_product_service.py b/tests/test_21_product_service.py index b54e4f6..eec76c1 100644 --- a/tests/test_21_product_service.py +++ b/tests/test_21_product_service.py @@ -6,7 +6,7 @@ Copyright (c) 2022 Asymworks, LLC. All Rights Reserved. import pytest -from sigl.domain.service import product_by_id, product_create +from sigl.domain.service import product_by_id, product_create, products_all # Always use 'app' fixture so ORM gets initialized pytestmark = pytest.mark.usefixtures('app') @@ -24,6 +24,18 @@ def test_product_create_defaults(session): assert not p.locations +@pytest.mark.unit +def test_product_create_without_category(session): + """Test that a Product can be created with a blank Category.""" + pc = product_create(session, 'Eggs') + + assert pc.id is not None + assert pc.name == 'Eggs' + assert pc.category == '' + assert pc.remember is True + assert not pc.locations + + @pytest.mark.unit def test_product_create_forget(session): """Test newly created Products can have remember as false.""" @@ -34,3 +46,17 @@ def test_product_create_forget(session): assert p.category == 'Dairy' assert p.remember is False assert not p.locations + + +@pytest.mark.unit +def test_product_all_items_skips_non_remembered(session): + """Test that querying all Product items skips non-remembered Products.""" + p1 = product_create(session, 'Apples') + p2 = product_create(session, 'Bananas', remember=False) + p3 = product_create(session, 'Carrots') + + products = products_all(session) + assert len(products) == 2 + assert p1 in products + assert p3 in products + assert p2 not in products