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_repository_can_save_a_batch(session): batch = model.Batch("batch1", "RUSTY-SOAPDISH", 100, eta=None) repo = repository.SqlAlchemyRepository(session) repo.add(batch) session.commit() rows = list( session.execute( 'SELECT reference, sku, _purchased_quantity, eta FROM "batches"')) assert rows == [("batch1", "RUSTY-SOAPDISH", 100, None)]
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_repository_can_retrieve_a_batch_with_allocations(session): orderline_id = insert_order_line(session) batch1_id = insert_batch(session, "batch1") insert_batch(session, "batch2") insert_allocation(session, orderline_id, batch1_id) repo = repository.SqlAlchemyRepository(session) retrieved = repo.get("batch1") expected = model.Batch("batch1", "GENERIC-SOFA", 100, eta=None) assert retrieved == expected # Batch.__eq__ only compares reference assert retrieved.sku == expected.sku assert retrieved._purchased_quantity == expected._purchased_quantity assert retrieved._allocations == { model.OrderLine("order1", "GENERIC-SOFA", 12), }
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), }
def __enter__(self): self.session = self.session_factory() self.products = repository.SqlAlchemyRepository(self.session) return super().__enter__()
def test_get_by_batchref(sqlite_session_factory): session = sqlite_session_factory() repo = repository.SqlAlchemyRepository(session)
def __enter__(self): self.session = self.session_factory() # type: Session self.batches = repository.SqlAlchemyRepository(self.session) return super().__enter__()