public async Task When_registering_a_new_shipping_line()
        {
            using (var contextFactory = new FakeShipRegistryContextFactory(_options))
            {
                //arrange
                var commandProcessor = new FakeCommandProcessor();

                var newShippingLineCommand = new AddShippingLineCommand(new LineName("Maersk"));
                var handler = new NewShippingLineHandlerAsync(contextFactory, commandProcessor);

                //act
                await handler.HandleAsync(newShippingLineCommand);

                //assert
                var uow  = contextFactory.Create();
                var line = uow.Lines.SingleOrDefault(l => l.Id == new Id(newShippingLineCommand.Id));

                Assert.That(line, Is.Not.Null);
                Assert.That(line.Id, Is.EqualTo(new Id(newShippingLineCommand.Id)));
                Assert.That(line.LineName, Is.EqualTo(newShippingLineCommand.LineName));

                var domainEvent = commandProcessor.Messages.SingleOrDefault(m => m.Action == Action.Post);
                Assert.That(domainEvent, Is.Not.Null);

                var addedMessage = (NewLineAddedEvent)domainEvent.Message;
                Assert.That(addedMessage, Is.Not.Null);
                Assert.That(addedMessage.LineId, Is.EqualTo(new Id(newShippingLineCommand.Id)));
                Assert.That(addedMessage.LineName, Is.EqualTo(newShippingLineCommand.LineName));
            }
        }
        public async Task <IActionResult> Post([FromBody] AddShippingLineRequest request)
        {
            var addShippingLineCommand = new AddShippingLineCommand(
                lineName: new LineName(request.LineName)
                );

            await _commandProcessor.SendAsync(addShippingLineCommand);

            var addedShip = await _queryProcessor.ExecuteAsync(new ShippingLineByIdQuery(new Id(addShippingLineCommand.Id)));

            return(Ok(addedShip));
        }