Beispiel #1
0
        public void UpdatesPaymentInRepository_RaisesIntegrationEvent()
        {
            var payment = new Accounting.Domain.Payment(PaymentGuid, 1, Guid.Empty, "test", null);

            var paymentsRepository = new Mock <IPaymentsRepository>(MockBehavior.Strict);

            paymentsRepository.Setup(r => r.GetAsync(payment.Id)).Returns(Task.FromResult(payment)).Verifiable();
            paymentsRepository.Setup(r => r.UpdateAsync(payment)).Returns(Task.CompletedTask).Verifiable();
            paymentsRepository.Setup(r => r.SaveChanges()).Returns(Task.CompletedTask).Verifiable();

            var busPublisher = new Mock <IBusPublisher>(MockBehavior.Strict);

            busPublisher.Setup(p => p.Publish(It.Is <IPaymentUpdated>(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 handler = new UpdatePaymentHandler(paymentsRepository.Object, busPublisher.Object, userVerifier.Object);
            var result  = handler.HandleAsync(Cmd, new Mock <ICorrelationContext>().Object).GetAwaiter().GetResult();

            Assert.IsTrue(result.Successful);

            IsExpectedPayment(payment);
            paymentsRepository.Verify();
            busPublisher.Verify();
            userVerifier.Verify();
        }
Beispiel #2
0
 private void IsExpectedPayment(Accounting.Domain.Payment p)
 {
     Assert.AreEqual(Cmd.UserId, p.UserId);
     Assert.AreEqual(Cmd.Amount, p.Amount);
     Assert.AreEqual(Cmd.Source, p.Source);
     Assert.AreEqual(Cmd.ExternalId, p.ExternalId);
 }