public async Task GivenNonExistingProduct_WhenCreateProductCommandSent_ThenProductCreated() { var command = new CreateProduct(Guid.NewGuid(), "New name", 52.49m); repository.ExistsAsync(command.ProductId).Returns(false); await handler.HandleAsync(command); await repository.Received().AddAsync(Arg.Any <Product>()); }
public void AddsProductToRepository_RaisesIntegrationEvent() { var repository = new Mock <IProductRepository>(MockBehavior.Strict); repository.Setup(r => r.AddAsync(It.Is <Domain.Product>(p => ValidateEquality(p)))).Returns(Task.CompletedTask).Verifiable(); repository.Setup(r => r.SaveChanges()).Returns(Task.CompletedTask).Verifiable(); var busPublisher = new Mock <IBusPublisher>(MockBehavior.Strict); busPublisher.Setup(p => p.Publish <IProductCreated>(It.Is <IProductCreated>(e => ValidateEquality(e)))).Returns(Task.CompletedTask).Verifiable(); var handler = new CreateProductHandler(repository.Object, busPublisher.Object); var result = handler.HandleAsync(Cmd, new Mock <ICorrelationContext>().Object).GetAwaiter().GetResult(); Assert.IsTrue(result.Successful); repository.Verify(); busPublisher.Verify(); }