Add Remember flag to Products
This commit is contained in:
@@ -128,7 +128,8 @@ def session(request, monkeypatch, app):
|
||||
monkeypatch.setattr(_db, 'session', session)
|
||||
|
||||
def teardown():
|
||||
transaction.rollback()
|
||||
if transaction.is_active:
|
||||
transaction.rollback()
|
||||
connection.close()
|
||||
session.remove()
|
||||
|
||||
|
||||
@@ -76,3 +76,13 @@ def test_product_model_same_store_fails(session):
|
||||
|
||||
with pytest.raises(IntegrityError):
|
||||
session.commit()
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_product_model_remembers_by_default(session):
|
||||
"""Test that the Product defaults to remembering."""
|
||||
p = Product(name='Eggs', category='Dairy')
|
||||
session.add(p)
|
||||
session.commit()
|
||||
|
||||
assert p.remember is True
|
||||
|
||||
36
tests/test_21_product_service.py
Normal file
36
tests/test_21_product_service.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""Test the Product Service Entry Points.
|
||||
|
||||
Simple Grocery List (Sigl) | sigl.app
|
||||
Copyright (c) 2022 Asymworks, LLC. All Rights Reserved.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
|
||||
from sigl.domain.service import product_by_id, product_create
|
||||
|
||||
# Always use 'app' fixture so ORM gets initialized
|
||||
pytestmark = pytest.mark.usefixtures('app')
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_product_create_defaults(session):
|
||||
"""Test newly created Products have no Locations."""
|
||||
pc = product_create(session, 'Eggs', category='Dairy')
|
||||
p = product_by_id(session, pc.id)
|
||||
|
||||
assert p.name == 'Eggs'
|
||||
assert p.category == 'Dairy'
|
||||
assert p.remember is True
|
||||
assert not p.locations
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_product_create_forget(session):
|
||||
"""Test newly created Products can have remember as false."""
|
||||
pc = product_create(session, 'Eggs', category='Dairy', remember=False)
|
||||
p = product_by_id(session, pc.id)
|
||||
|
||||
assert p.name == 'Eggs'
|
||||
assert p.category == 'Dairy'
|
||||
assert p.remember is False
|
||||
assert not p.locations
|
||||
107
tests/test_22_list_service.py
Normal file
107
tests/test_22_list_service.py
Normal file
@@ -0,0 +1,107 @@
|
||||
"""Test the Product Service Entry Points.
|
||||
|
||||
Simple Grocery List (Sigl) | sigl.app
|
||||
Copyright (c) 2022 Asymworks, LLC. All Rights Reserved.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
|
||||
from sigl.domain.service import (
|
||||
list_addItem,
|
||||
list_by_id,
|
||||
list_create,
|
||||
list_deleteCrossedOff,
|
||||
list_entry_set_crossedOff,
|
||||
product_by_id,
|
||||
)
|
||||
|
||||
# Always use 'app' fixture so ORM gets initialized
|
||||
pytestmark = pytest.mark.usefixtures('app')
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_list_create_defaults(session):
|
||||
"""Test newly created Lists are empty."""
|
||||
lc = list_create(session, 'Test')
|
||||
list = list_by_id(session, lc.id)
|
||||
|
||||
assert list.name == 'Test'
|
||||
assert not list.entries
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_list_add_product_defaults(session):
|
||||
"""Test adding a Product to a List."""
|
||||
list = list_create(session, 'Test')
|
||||
entry = list_addItem(session, list.id, productName='Eggs', productCategory='Dairy')
|
||||
|
||||
assert entry.id is not None
|
||||
assert entry.product is not None
|
||||
assert entry.product.name == 'Eggs'
|
||||
assert entry.product.category == 'Dairy'
|
||||
assert entry.product.remember is True
|
||||
|
||||
assert len(list.entries) == 1
|
||||
assert list.entries[0] == entry
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_list_add_product_no_remember(session):
|
||||
"""Test adding a Product to a List without remembering it."""
|
||||
list = list_create(session, 'Test')
|
||||
entry = list_addItem(
|
||||
session,
|
||||
list.id,
|
||||
productName='Eggs',
|
||||
productCategory='Dairy',
|
||||
remember=False,
|
||||
)
|
||||
|
||||
assert entry.id is not None
|
||||
assert entry.product is not None
|
||||
assert entry.product.name == 'Eggs'
|
||||
assert entry.product.category == 'Dairy'
|
||||
assert entry.product.remember is False
|
||||
|
||||
assert len(list.entries) == 1
|
||||
assert list.entries[0] == entry
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_list_removes_product_with_remember(session):
|
||||
"""Test that checking off and deleting a remembered Product does not delete the Product Entry."""
|
||||
list = list_create(session, 'Test')
|
||||
entry = list_addItem(
|
||||
session,
|
||||
list.id,
|
||||
productName='Eggs',
|
||||
productCategory='Dairy',
|
||||
remember=True,
|
||||
)
|
||||
|
||||
pid = entry.product.id
|
||||
|
||||
list_entry_set_crossedOff(session, list.id, entry.id, True)
|
||||
list_deleteCrossedOff(session, list.id)
|
||||
|
||||
assert product_by_id(session, pid) is not None
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_list_removes_product_no_remember(session):
|
||||
"""Test that checking off and deleting a non-remembered Product deletes the Product Entry also."""
|
||||
list = list_create(session, 'Test')
|
||||
entry = list_addItem(
|
||||
session,
|
||||
list.id,
|
||||
productName='Eggs',
|
||||
productCategory='Dairy',
|
||||
remember=False,
|
||||
)
|
||||
|
||||
pid = entry.product.id
|
||||
|
||||
list_entry_set_crossedOff(session, list.id, entry.id, True)
|
||||
list_deleteCrossedOff(session, list.id)
|
||||
|
||||
assert product_by_id(session, pid) is None
|
||||
Reference in New Issue
Block a user