- Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Description
Hello, thanks for all the resources you provided in the book, helping me tremendously to understand what a clean architecture could look like in python world. Just have a quick question about this line in end-to-end test:
**subscription = redis_client.subscribe_to("line_allocated")** what's line_allocated channel needed for? I could see that the message is getting published to "change_batch_quantity" channel but we are subscribed to a different channel but somehow still able to read the messages that come from change_batch_quantity. I might be missing something easy to understand as i don't have a lot of experience with redis pubsub. I thought the channel names should have been same for them to exchange messages. Regardless of it, the tests pass so it seems like i'm missing something here. Thank you
@pytest.mark.usefixtures("postgres_db") @pytest.mark.usefixtures("restart_api") @pytest.mark.usefixtures("restart_redis_pubsub") def test_change_batch_quantity_leading_to_reallocation(): # start with two batches and an order allocated to one of them orderid, sku = random_orderid(), random_sku() earlier_batch, later_batch = random_batchref("old"), random_batchref("newer") api_client.post_to_add_batch(earlier_batch, sku, qty=10, eta="2011-01-01") api_client.post_to_add_batch(later_batch, sku, qty=10, eta="2011-01-02") r = api_client.post_to_allocate(orderid, sku, 10) assert r.ok response = api_client.get_allocation(orderid) assert response.json()[0]["batchref"] == earlier_batch **subscription = redis_client.subscribe_to("line_allocated")** # change quantity on allocated batch so it's less than our order redis_client.publish_message( "change_batch_quantity",{"batchref": earlier_batch, "qty": 5}, ) # wait until we see a message saying the order has been reallocated messages = [] for attempt in Retrying(stop=stop_after_delay(3), reraise=True): with attempt: message = subscription.get_message(timeout=1) if message: messages.append(message) print(messages) data = json.loads(messages[-1]["data"]) assert data["orderid"] == orderid assert data["batchref"] == later_batch Metadata
Metadata
Assignees
Labels
No labels