public async Task <IActionResult> Delete(Guid id)
        {
            var deleteGreetingCommand = new RemoveShipCommand(new Id(id));
            await _commandProcessor.SendAsync(deleteGreetingCommand);

            return(Ok());
        }
        public async Task When_removing_a_ship_registration()
        {
            //arrange
            using (var contextFactory = new FakeShipRegistryContextFactory(_options))
            {
                var uow        = contextFactory.Create();
                var repository = new ShipRepositoryAsync(uow);
                var ship       = new Ship(new Id(), new ShipName("Majestic"), ShipType.Container, new Capacity(50000), new Id());

                await repository.AddAsync(ship);

                var commandProcessor = new FakeCommandProcessor();

                var command = new RemoveShipCommand(ship.Id);

                var handler = new RemoveShipHandlerAsync(contextFactory, commandProcessor);

                //act
                await handler.HandleAsync(command);

                //assert
                var removedShip = await uow.Ships.SingleOrDefaultAsync(s => s.Id == ship.Id);

                Assert.That(removedShip, Is.Null);

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

                var shipRemovedEvent = (ShipRemovedEvent)domainEvent.Message;
                Assert.That(shipRemovedEvent.ShipRemoved, Is.EqualTo(ship.Id));
            }
        }