def test_retrieving_products(session): session.execute( "INSERT INTO products (sku) VALUES ('RED-CHAIR'), ('RED-TABLE')" ) expected = [ model.Product("RED-CHAIR", []), model.Product("RED-TABLE", []), ] assert session.query(model.Product).all() == expected
def test_get_by_batchref(session): repo = repository.SqlAlchemyRepository(session) b1 = model.Batch(ref='b1', sku='sku1', qty=100, eta=None) b2 = model.Batch(ref='b2', sku='sku1', qty=100, eta=None) b3 = model.Batch(ref='b3', sku='sku2', qty=100, eta=None) p1 = model.Product(sku='sku1', batches=[b1, b2]) p2 = model.Product(sku='sku2', batches=[b3]) repo.add(p1) repo.add(p2) assert repo.get_by_batchref('b2') == p1 assert repo.get_by_batchref('b3') == p2
def test_get_by_batchref(sqlite_session): repo = repository.SqlAlchemyRepository(sqlite_session) b1 = model.Batch(ref="b1", sku="sku1", qty=100, eta=None) b2 = model.Batch(ref="b2", sku="sku1", qty=100, eta=None) b3 = model.Batch(ref="b3", sku="sku2", qty=100, eta=None) p1 = model.Product(sku="sku1", batches=[b1, b2]) p2 = model.Product(sku="sku2", batches=[b3]) repo.add(p1) repo.add(p2) assert repo.get_by_batchref("b2") == p1 assert repo.get_by_batchref("b3") == p2
def test_get_by_batchref(sqlite_session): repo = repository.SqlAlchemyRepository(sqlite_session) b1 = model.Batch('b1', 'sku1', 100) b2 = model.Batch('b2', 'sku1', 100) b3 = model.Batch('b3', 'sku2', 100) p1 = model.Product('sku1', [b1, b2]) p2 = model.Product('sku2', [b3]) repo.add(p1) repo.add(p2) assert repo.get_by_batcheref('b1') == p1 assert repo.get_by_batcheref('b3') == p2
def test_get_by_batchref(sqlite_session: Session): repo = repository.SqlAlchemyProductRepository(sqlite_session) b1 = model.BatchOrder("b1", sku="SKU-01", qty=100, eta=None) b2 = model.BatchOrder("b2", sku="SKU-01", qty=50, eta=None) b3 = model.BatchOrder("b3", sku="SKU-02", qty=75, eta=None) p1 = model.Product("SKU-01", [b1, b2]) p2 = model.Product("SKU-02", [b3]) repo.add(p1) repo.add(p2) # we're not testing UoW so we need to commit :) sqlite_session.commit() assert repo.get_by_batchref("b1") == p1 assert repo.get_by_batchref("b3") == p2
def add_batch(cmd: commands.CreateBatch, uow: unit_of_work.AbstractUnitOfWork): with uow: product = uow.products.get(sku=cmd.sku) if product is None: product = model.Product(cmd.sku, batches=[]) uow.products.add(product) product.batches.append(model.Batch(cmd.ref, cmd.sku, cmd.qty, cmd.eta)) uow.commit()
def add_batch(ref: str, sku: str, qty: int, eta: Optional[date], uow: unit_of_work.AbstractUnitOfWork): with uow: product = uow.products.get(sku=sku) if product is None: product = model.Product(sku, batches=[]) uow.products.add(product) product.batches.append(model.Batch(ref, sku, qty, eta)) uow.commit()
def test_records_out_of_stock_event_if_cannot_allocat(): batch = model.Batch('b1', '椅子', 10, eta=today) product = model.Product('椅子', batches=[batch]) product.allocate(model.OrderLine('o1', '椅子', 10)) allocation = product.allocate(model.OrderLine( 'o2', '椅子', 1, )) assert product.events[-1] == events.OutOfStock(sku='椅子') assert allocation is None
def add_batch( command: commands.CreateBatch, uow: unit_of_work.AbstractUnitOfWork, ) -> None: batch = model.BatchOrder(command.ref, command.sku, command.qty, command.eta) with uow: product = uow.products.get(sku=batch.sku) if product is None: product = model.Product(sku=batch.sku, batches=[]) uow.products.add(product) product.add_batch(batch) uow.commit()
def test_repository_can_save_a_batch(session): batch = model.Batch("batch1", "RUSTY-SOAPDISH", 100, eta=None) product = model.Product("RUSTY-SOAPDISH", [batch]) repo = repository.SqlAlchemyRepository(session) repo.add(product) session.commit() rows = list(session.execute('SELECT sku FROM "products"')) assert rows == [("RUSTY-SOAPDISH", )] rows = list( session.execute( 'SELECT reference, sku, _purchased_quantity, eta FROM "batches"')) assert rows == [("batch1", "RUSTY-SOAPDISH", 100, None)]
def add_batch( message: commands.CreateBatch, uow: unit_of_work.AbstractUnitOfWork ): sku = message.sku batch = model.Batch( message.reference, message.sku, message.qty, message.eta ) with uow: product = uow.products.get(sku=sku) if product is None: product = model.Product(sku, []) uow.products.add(product) product.batches.append(batch) uow.commit()
def test_repository_can_retrieve_a_batch_with_allocations(session): orderline_id = insert_order_line(session) batch1_id = insert_product_batch(session, "batch1") insert_batch(session, "batch2") insert_allocation(session, orderline_id, batch1_id) repo = repository.SqlAlchemyRepository(session) retrieved = repo.get("GENERIC-SOFA") batch = model.Batch("batch1", "GENERIC-SOFA", 100, eta=None) expected = model.Product("GENERIC-SOFA", [batch]) assert retrieved == expected assert retrieved.batches[ 0]._purchased_quantity == batch._purchased_quantity assert retrieved.batches[0]._allocations == { model.OrderLine("order1", "GENERIC-SOFA", 12), }
<<<<<<< HEAD pytestmark = pytest.mark.usefixtures('mappers') ======= pytestmark = pytest.mark.usefixtures("mappers") >>>>>>> upstream/master def test_get_by_batchref(sqlite_session_factory): session = sqlite_session_factory() repo = repository.SqlAlchemyRepository(session) <<<<<<< HEAD b1 = model.Batch(ref='b1', sku='sku1', qty=100, eta=None) b2 = model.Batch(ref='b2', sku='sku1', qty=100, eta=None) b3 = model.Batch(ref='b3', sku='sku2', qty=100, eta=None) p1 = model.Product(sku='sku1', batches=[b1, b2]) p2 = model.Product(sku='sku2', batches=[b3]) repo.add(p1) repo.add(p2) assert repo.get_by_batchref('b2') == p1 assert repo.get_by_batchref('b3') == p2 ======= b1 = model.Batch(ref="b1", sku="sku1", qty=100, eta=None) b2 = model.Batch(ref="b2", sku="sku1", qty=100, eta=None) b3 = model.Batch(ref="b3", sku="sku2", qty=100, eta=None) p1 = model.Product(sku="sku1", batches=[b1, b2]) p2 = model.Product(sku="sku2", batches=[b3]) repo.add(p1) repo.add(p2) assert repo.get_by_batchref("b2") == p1 assert repo.get_by_batchref("b3") == p2
def for_batch(reference, sku, qty, eta=None): batch = model.Batch(reference, sku, qty, eta) return FakeRepository([model.Product(sku, [batch])])
def test_saving_products(session): product = model.Product("sku1", []) session.add(product) session.commit() rows = list(session.execute('SELECT sku FROM "products"')) assert rows == [("sku1",)]