feat: add basic support to "resolve" a pending product
This commit is contained in:
parent
6b4bc3da10
commit
1ee398e8fb
17 changed files with 780 additions and 69 deletions
|
@ -1219,7 +1219,7 @@ class TestNewOrderBatchHandler(DataTestCase):
|
|||
self.assertEqual(local.full_name, "Chuck Norris")
|
||||
self.assertEqual(local.phone_number, '555-1234')
|
||||
|
||||
def test_make_local_products(self):
|
||||
def test_process_pending_products(self):
|
||||
model = self.app.model
|
||||
enum = self.app.enum
|
||||
handler = self.make_handler()
|
||||
|
@ -1253,7 +1253,7 @@ class TestNewOrderBatchHandler(DataTestCase):
|
|||
self.assertEqual(self.session.query(model.LocalProduct).count(), 1)
|
||||
self.assertIsNotNone(row2.pending_product)
|
||||
self.assertIsNone(row2.local_product)
|
||||
handler.make_local_products(batch, batch.rows)
|
||||
handler.process_pending_products(batch, batch.rows)
|
||||
self.assertEqual(self.session.query(model.PendingProduct).count(), 0)
|
||||
self.assertEqual(self.session.query(model.LocalProduct).count(), 2)
|
||||
self.assertIsNone(row2.pending_product)
|
||||
|
@ -1266,7 +1266,7 @@ class TestNewOrderBatchHandler(DataTestCase):
|
|||
self.assertEqual(local.unit_price_reg, decimal.Decimal('5.99'))
|
||||
|
||||
# trying again does nothing
|
||||
handler.make_local_products(batch, batch.rows)
|
||||
handler.process_pending_products(batch, batch.rows)
|
||||
self.assertEqual(self.session.query(model.PendingProduct).count(), 0)
|
||||
self.assertEqual(self.session.query(model.LocalProduct).count(), 2)
|
||||
self.assertIsNone(row2.pending_product)
|
||||
|
@ -1291,24 +1291,26 @@ class TestNewOrderBatchHandler(DataTestCase):
|
|||
), 1, enum.ORDER_UOM_UNIT)
|
||||
self.session.flush()
|
||||
|
||||
# should do nothing if local products disabled
|
||||
# should update status if using external products
|
||||
with patch.object(handler, 'use_local_products', return_value=False):
|
||||
self.assertEqual(self.session.query(model.PendingProduct).count(), 1)
|
||||
self.assertEqual(self.session.query(model.LocalProduct).count(), 2)
|
||||
self.assertIsNotNone(row.pending_product)
|
||||
self.assertEqual(row.pending_product.status, enum.PendingProductStatus.PENDING)
|
||||
self.assertIsNone(row.local_product)
|
||||
handler.make_local_products(batch, batch.rows)
|
||||
handler.process_pending_products(batch, batch.rows)
|
||||
self.assertEqual(self.session.query(model.PendingProduct).count(), 1)
|
||||
self.assertEqual(self.session.query(model.LocalProduct).count(), 2)
|
||||
self.assertIsNotNone(row.pending_product)
|
||||
self.assertEqual(row.pending_product.status, enum.PendingProductStatus.READY)
|
||||
self.assertIsNone(row.local_product)
|
||||
|
||||
# but things happen by default, since local products enabled
|
||||
# but if using local products (the default), pending is converted to local
|
||||
self.assertEqual(self.session.query(model.PendingProduct).count(), 1)
|
||||
self.assertEqual(self.session.query(model.LocalProduct).count(), 2)
|
||||
self.assertIsNotNone(row.pending_product)
|
||||
self.assertIsNone(row.local_product)
|
||||
handler.make_local_products(batch, batch.rows)
|
||||
handler.process_pending_products(batch, batch.rows)
|
||||
self.assertEqual(self.session.query(model.PendingProduct).count(), 0)
|
||||
self.assertEqual(self.session.query(model.LocalProduct).count(), 3)
|
||||
self.assertIsNone(row.pending_product)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue