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)); }