Skip to content

Commit ddc98b1

Browse files
committed
isolated test for a handler [test_handler_in_isolation]
1 parent f98c55d commit ddc98b1

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

tests/unit/test_handlers.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,24 @@ def publish_events(self):
138138
for product in self.products.seen:
139139
while product.events:
140140
self.events_published.append(product.events.pop(0))
141+
142+
143+
def test_reallocates_if_necessary_isolated():
144+
uow = FakeUnitOfWorkWithFakeMessageBus()
145+
146+
# test setup as before
147+
messagebus.handle(events.BatchCreated("batch1", "INDIFFERENT-TABLE", 50, None), uow)
148+
messagebus.handle(events.BatchCreated("batch2", "INDIFFERENT-TABLE", 50, date.today()), uow)
149+
messagebus.handle(events.AllocationRequired("order1", "INDIFFERENT-TABLE", 20), uow)
150+
messagebus.handle(events.AllocationRequired("order2", "INDIFFERENT-TABLE", 20), uow)
151+
[batch1, batch2] = uow.products.get(sku="INDIFFERENT-TABLE").batches
152+
assert batch1.available_quantity == 10
153+
154+
messagebus.handle(events.BatchQuantityChanged("batch1", 25), uow)
155+
156+
# assert on new events emitted rather than downstream side-effects
157+
[reallocation_event] = uow.events_published
158+
assert isinstance(reallocation_event, events.AllocationRequired)
159+
assert reallocation_event.orderid in {'order1', 'order2'}
160+
assert reallocation_event.sku == 'INDIFFERENT-TABLE'
161+

0 commit comments

Comments
 (0)