Ejemplo n.º 1
0
def test_retrieving_batches(session):
    session.execute(
        'INSERT INTO batches (reference, sku, _purchased_quantity, eta)'
        'VALUES ("batch1", "sku1", 100, null)')
    session.execute(
        'INSERT INTO batches (reference, sku, _purchased_quantity, eta)'
        'VALUES ("batch2", "sku2", 200, 2011-04-11)')
    expected = [
        model.Batch("batch1", "sku1", 100, eta=None),
        model.Batch("batch2", "sku2", 200, eta=date(2011, 4, 11)),
    ]

    assert session.query(model.Batch).all() == expected
def add_batch(
    ref: str, sku: str, qty: int, eta: Optional[date],
    uow: unit_of_work.AbstractUnitOfWork,
):
    with uow:
        uow.batches.add(model.Batch(ref, sku, qty, eta))
        uow.commit()
Ejemplo n.º 3
0
def test_error_for_invalid_sku():
    line = model.OrderLine("o1", "NONEXISTENTSKU", 10)
    batch = model.Batch("b1", "AREALSKU", 100, eta=None)
    repo = FakeRepository([batch])

    with pytest.raises(handlers.InvalidSku, match="Invalid name of SKU: NONEXISTENTSKU"):
        handlers.allocate("o1", "NONEXISTENTSKU", 10, repo, FakeSession())
Ejemplo n.º 4
0
def test_saving_allocations(session):
    batch = model.Batch('batch1', 'sku1', 100, eta=None)
    line = model.OrderLine('order1', 'sku1', 10)
    batch.allocate(line)
    session.add(batch)
    session.commit()
    rows = list(session.execute('SELECT orderline_id, batch_id FROM "allocations"'))
    assert rows == [(batch.id, line.id)]
Ejemplo n.º 5
0
def test_saving_batches(session):
    batch = model.Batch('batch1', 'sku1', 100, eta=None)
    session.add(batch)
    session.commit()
    rows = list(session.execute(
        'SELECT reference, sku, _purchased_quantity, eta FROM "batches"'
    ))
    assert rows == [('batch1', 'sku1', 100, None)]
Ejemplo n.º 6
0
def test_commits():
    line = model.OrderLine("o1", "OMINOUS-MIRROR", 10)
    batch = model.Batch("b1", "OMINOUS-MIRROR", 100, eta=None)
    repo = FakeRepository([batch])
    session = FakeSession()

    handlers.allocate("o1", "OMINOUS-MIRROR", 10, repo, session)
    assert session.committed is True
Ejemplo n.º 7
0
def add_batch(
        event: events.BatchCreated, uow: unit_of_work.AbstractUnitOfWork
):
    with uow:
        product = uow.products.get(sku=event.sku)
        if product is None:
            product = model.Product(event.sku, batches=[])
            uow.products.add(product)
        uow.batches.append(model.Batch(event.ref, event.sku, event.qty, event.eta))
        uow.commit()
Ejemplo n.º 8
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)]
Ejemplo n.º 9
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),
    }
Ejemplo n.º 10
0
def add_batch(
        ref: str, sku: str, qty: int, eta: Optional[date],
        repo: AbstractRepository, session,
):
    repo.add(model.Batch(ref, sku, qty, eta))
    session.commit()