def main(): bus = bootstrap.bootstrap() pubsub = r.pubsub(ignore_subscribe_messages=True) pubsub.subscribe('change_batch_quantity') for m in pubsub.listen(): handle_change_batch_quantity(m, bus)
def bootstrap_test_app(): return bootstrap.bootstrap( start_orm=False, uow=FakeUnitOfWork(), notifications=FakeNotifications(), publish=lambda *args: None, )
def main(): logger.info("Redis pubsub starting") bus = bootstrap.bootstrap() pubsub = r.pubsub(ignore_subscribe_messages=True) pubsub.subscribe("change_batch_quantity") for m in pubsub.listen(): handle_change_batch_quantity(m, bus)
def messagebus(): bus = bootstrap.bootstrap( start_orm=False, uow=FakeUnitOfWork(), send_mail=lambda *args, **kwargs: None, publish=lambda *args, **kwargs: None, ) return bus
def sqlite_bus(sqlite_session_factory): bus = bootstrap.bootstrap( start_orm=True, uow=unit_of_work.SqlAlchemyUnitOfWork(sqlite_session_factory), notifications=mock.Mock(), publish=lambda *args: None) yield bus clear_mappers()
def main(): messagebus = bootstrap.bootstrap() pubsub = redis_client.pubsub(ignore_subscribe_messages=True) pubsub.subscribe("change_batch_quantity") for message in pubsub.listen(): logger.debug(f"Received message: {message}") handle_change_batch_quantity(message, messagebus)
def messagebus(session_factory): bus = bootstrap.bootstrap( start_orm=False, uow=unit_of_work.SqlAlchemyUnitOfWork(session_factory), send_mail=lambda *args, **kwargs: None, publish=lambda *args, **kwargs: None, ) return bus
def main(): logger.debug('Redis pubsub starting') bus = bootstrap.bootstrap() pubsub = r.pubsub(ignore_subscribe_messages=True) pubsub.subscribe('change_batch_quantity') for m in pubsub.listen(): handle_change_batch_quantity(m, bus)
def sqlite_bus(sqlite_session_factory): bus = bootstrap.bootstrap( start_orm=True, uow=unit_of_work.SqlAlchemyUnitOfWork(sqlite_session_factory), send_mail=lambda *args: None, publish=lambda *args: None, ) yield bus clear_mappers()
def bus(sqlite_session_factory): bus = bootstrap.bootstrap( start_orm=True, uow=unit_of_work.SqlAlchemyUnitOfWork(sqlite_session_factory), notifications=notifications.EmailNotifications(), publish=lambda *args: None, update_readmodel=lambda *args: None) yield bus clear_mappers()
def test_sends_email_on_out_of_stock_error(self): fake_notifs = FakeNotifications() bus = bootstrap.bootstrap( start_orm=False, uow=FakeUnitOfWork(), notifications=fake_notifs, publish=lambda *args: None, ) bus.handle(commands.CreateBatch("b1", "POPULAR-CURTAINS", 9, None)) bus.handle(commands.Allocate("o1", "POPULAR-CURTAINS", 10)) assert fake_notifs.sent['*****@*****.**'] == [ f"Out of stock for POPULAR-CURTAINS", ]
def main(): logger.info('Redis pubsub starting') bus = bootstrap.bootstrap() pubsub = r.pubsub(ignore_subscribe_messages=True) pubsub.subscribe('change_batch_quantity')
from datetime import datetime from flask import Flask, jsonify, request from allocation.domain import commands from allocation.service_layer.handlers import InvalidSku from allocation import bootstrap, views app = Flask(__name__) bus = bootstrap.bootstrap() <<<<<<< HEAD @app.route("/add_batch", methods=['POST']) def add_batch(): eta = request.json['eta'] if eta is not None: eta = datetime.fromisoformat(eta).date() cmd = commands.CreateBatch( request.json['ref'], request.json['sku'], request.json['qty'], eta, ) bus.handle(cmd) return 'OK', 201 @app.route("/allocate", methods=['POST']) def allocate_endpoint(): try: cmd = commands.Allocate( request.json['orderid'], request.json['sku'], request.json['qty'], ) bus.handle(cmd) except InvalidSku as e:
from datetime import datetime from allocation import bootstrap, views from allocation.domain import commands from allocation.service_layer import handlers, unit_of_work from flask import Flask, jsonify, request app = Flask(__name__) messagebus = bootstrap.bootstrap() @app.route("/add_batch", methods=["POST"]) def add_batch_endpoint(): eta = request.json.get("eta") if eta is not None: eta = datetime.fromisoformat(eta).date() message = commands.CreateBatch( request.json["reference"], request.json["sku"], request.json["qty"], eta=eta, ) messagebus.handle(message) return {"message": "OK"}, 201 @app.route("/allocate", methods=["POST"])