public void AddsSaleStateChangeToRepository_RaisesIntegrationEvent() { var sale = new Accounting.Domain.Sale(Cmd.ParentSaleId, 9, 9, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty); var repository = new Mock <ISalesRepository>(MockBehavior.Strict); repository.Setup(r => r.GetAsync(Cmd.ParentSaleId)).Returns(Task.FromResult(sale)); repository.Setup(r => r.UpdateAsync(sale)).Returns(Task.CompletedTask).Verifiable(); repository.Setup(r => r.SaveChanges()).Returns(Task.CompletedTask).Verifiable(); var publisher = new Mock <IBusPublisher>(MockBehavior.Strict); publisher.Setup(p => p.Publish(It.Is <ISaleStateChangeCreated>(e => ValidateEquality(e)))).Returns(Task.CompletedTask).Verifiable(); var userVerifier = new Mock <IUserVerifier>(MockBehavior.Strict); userVerifier.Setup(v => v.AssertExists(CausedByUserId)).Returns(Task.CompletedTask).Verifiable(); var posVerifier = new Mock <IPointOfSaleVerifier>(MockBehavior.Strict); posVerifier.Setup(v => v.AssertExists(CausedByPointOfSaleId)).Returns(Task.CompletedTask).Verifiable(); var handler = new CreateSaleStateChangeHandler(repository.Object, publisher.Object, userVerifier.Object, posVerifier.Object); var result = handler.HandleAsync(Cmd, new Mock <ICorrelationContext>().Object).GetAwaiter().GetResult(); Assert.IsTrue(result.Successful); ValidateEquality(sale.MostRecentStateChange); repository.Verify(); publisher.Verify(); userVerifier.Verify(); posVerifier.Verify(); }
private bool IsExpectedSale(Accounting.Domain.Sale p) { Assert.AreEqual(Cmd.UserId, p.UserId); Assert.AreEqual(Cmd.Cost, p.Cost); Assert.AreEqual(Cmd.Quantity, p.Quantity); Assert.AreEqual(Cmd.AccountingGroupId, p.AccountingGroupId); Assert.AreEqual(Cmd.PointOfSaleId, p.PointOfSaleId); Assert.AreEqual(Cmd.AuthenticationMeansId, p.AuthenticationMeansId); Assert.AreEqual(Cmd.ProductId, p.ProductId); Assert.AreEqual(Cmd.OfferId, p.OfferId); return(true); }
public void UpdatesSaleInRepository_RaisesIntegrationEvent() { var sale = new Accounting.Domain.Sale(Cmd.Id, 9, 9, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty); var repository = new Mock <ISalesRepository>(MockBehavior.Strict); repository.Setup(r => r.GetAsync(Cmd.Id)).Returns(Task.FromResult(sale)); repository.Setup(r => r.UpdateAsync(sale)).Returns(Task.CompletedTask).Verifiable(); repository.Setup(r => r.SaveChanges()).Returns(Task.CompletedTask).Verifiable(); var publisher = new Mock <IBusPublisher>(MockBehavior.Strict); publisher.Setup(p => p.Publish(It.Is <ISaleUpdated>(e => IsExpectedEvent(e)))).Returns(Task.CompletedTask).Verifiable(); var userVerifier = new Mock <IUserVerifier>(MockBehavior.Strict); userVerifier.Setup(v => v.AssertExists(Cmd.UserId)).Returns(Task.CompletedTask).Verifiable(); var agVerifier = new Mock <IAccountingGroupVerifier>(MockBehavior.Strict); agVerifier.Setup(v => v.AssertExists(Cmd.AccountingGroupId)).Returns(Task.CompletedTask).Verifiable(); var posVerifier = new Mock <IPointOfSaleVerifier>(MockBehavior.Strict); posVerifier.Setup(v => v.AssertExists(Cmd.PointOfSaleId)).Returns(Task.CompletedTask).Verifiable(); var meansVerifier = new Mock <IAuthenticationMeansVerifier>(MockBehavior.Strict); meansVerifier.Setup(v => v.AssertExists(Cmd.AuthenticationMeansId)).Returns(Task.CompletedTask).Verifiable(); var productVerifier = new Mock <IProductVerifier>(MockBehavior.Strict); productVerifier.Setup(v => v.AssertExists(Cmd.ProductId)).Returns(Task.CompletedTask).Verifiable(); var offerVerifier = new Mock <IOfferVerifier>(MockBehavior.Strict); offerVerifier.Setup(v => v.AssertExists(Cmd.OfferId)).Returns(Task.CompletedTask).Verifiable(); var handler = new UpdateSaleHandler(repository.Object, publisher.Object, agVerifier.Object, userVerifier.Object, posVerifier.Object, meansVerifier.Object, productVerifier.Object, offerVerifier.Object); var result = handler.HandleAsync(Cmd, new Mock <ICorrelationContext>().Object).GetAwaiter().GetResult(); Assert.IsTrue(result.Successful); IsExpectedSale(sale); repository.Verify(); publisher.Verify(); userVerifier.Verify(); agVerifier.Verify(); posVerifier.Verify(); meansVerifier.Verify(); productVerifier.Verify(); offerVerifier.Verify(); }
public void DeletesSaleFromRepository_RaisesIntegrationEvent() { var sale = new Accounting.Domain.Sale(SaleGuid, 1, 2, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty); var repository = new Mock <ISalesRepository>(MockBehavior.Strict); repository.Setup(r => r.GetAsync(sale.Id)).Returns(Task.FromResult(sale)).Verifiable(); repository.Setup(r => r.DeleteAsync(sale)).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(It.Is <ISaleDeleted>(e => IsExpectedEvent(e)))).Returns(Task.CompletedTask).Verifiable(); var handler = new DeleteSaleHandler(repository.Object, busPublisher.Object); var result = handler.HandleAsync(Cmd, new Mock <ICorrelationContext>().Object).GetAwaiter().GetResult(); Assert.IsTrue(result.Successful); repository.Verify(); busPublisher.Verify(); }