def add_batch(command: commands.CreateBatch, uow: unit_of_work.AbstractUnitOfWork): with uow: product = uow.products.get(sku=command.sku) if product is None: product = model.Product(command.sku, batches=[]) uow.products.add(product) product.batches.append(model.Batch(command.ref, command.sku, command.qty, command.eta)) uow.commit()
def test_uow_can_save_product_and_batch_and_allocate_it(session_factory): uow = unit_of_work.ProductSqlAlchemyUnitOfWork(session_factory) session = session_factory() sku = 'HIPSTER-WORKBENCH3' with uow: product = model.Product(sku, [model.Batch('b3', sku, 100, None)]) uow.products.add(product) # product.batches.append() prodcut2 = uow.products.get_by_batchref('b3') product = uow.products.get(sku=sku) line = model.OrderLine('o3', sku, 10) product.allocate(line) uow.commit() batchref = get_allocated_batch_ref(session, 'o3', sku) assert batchref == 'b3'
def for_batch(ref, sku, qty, eta=None): return FakeRepository(model.Batch(ref, sku, qty, eta))
def for_batch(ref, sku, qty, eta=None): return FakeProductRepository( [model.Product(sku, batches=[model.Batch(ref, sku, qty, eta)])])
def insert_batch(session, ref, sku, qty, eta): session.execute('INSERT INTO batches (reference, sku, _purchased_quantity, eta)' ' VALUES (:ref, :sku, :qty, :eta)', dict(ref=ref, sku=sku, qty=qty, eta=eta)) return model.Batch(ref, sku, qty, eta)