Exemplo n.º 1
0
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
Exemplo n.º 2
0
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)]
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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),
    }
Exemplo n.º 6
0
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),
    }
Exemplo n.º 7
0
 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)
Exemplo n.º 9
0
 def __enter__(self):
     self.session = self.session_factory()  # type: Session
     self.batches = repository.SqlAlchemyRepository(self.session)
     return super().__enter__()