public void ClearUncommitedChanges_Where_Order_Created_Event_Existed_Results_In_Order_With_No_Uncommited_Changes() { var _merchant = new ESInv.Domain.Merchant(12, "The merchant name"); var _cardNumber = 4242424242424242UL; var _saleValue = new ESInv.Domain.Money("EUR", 100M); var _cardNumberResolutionService = Substitute.For <ESInv.Domain.ICardNumberResolutionService>(); _cardNumberResolutionService.Resolve(_cardNumber).Returns("USD"); var _rateService = Substitute.For <ESInv.Domain.IRateService>(); _rateService.GetRate(_saleValue.Currency, "USD").Returns(1.27M); var _SUT = ESInv.Domain.OrderAggregate.CreateEmpty(); _SUT.Create( _merchant, _cardNumber, _saleValue, _cardNumberResolutionService, _rateService); _SUT.ClearUncommitedChanges(); Assert.AreEqual(0, _SUT.UncommittedChanges.Count()); }
public void Create_Where_Good_Data_Results_In_Order_Creation() { // Start Billy and Noels build context // Parse and good var _merchant = new ESInv.Domain.Merchant(12, "The merchant name"); var _cardNumber = 4242424242424242UL; var _saleValue = new ESInv.Domain.Money("EUR", 100M); // Signature // Create a creation context // End Billy and Noels build context var _cardNumberResolutionService = Substitute.For <ESInv.Domain.ICardNumberResolutionService>(); _cardNumberResolutionService.Resolve(_cardNumber).Returns("USD"); var _rateService = Substitute.For <ESInv.Domain.IRateService>(); _rateService.GetRate(_saleValue.Currency, "USD").Returns(1.27M); var _SUT = ESInv.Domain.OrderAggregate.CreateEmpty(); // Start pipeline _SUT.Create( _merchant, _cardNumber, _saleValue, _cardNumberResolutionService, _rateService); Assert.AreEqual(1, _SUT.UncommittedChanges.Count()); Assert.IsInstanceOf <ESInv.Messages.OrderCreated>(_SUT.UncommittedChanges.First()); var _event = _SUT.UncommittedChanges.First() as ESInv.Messages.OrderCreated; Assert.AreEqual(_merchant.Id, _event.MerchantId); Assert.AreEqual(_saleValue.Currency, _event.SaleValue.Currency); Assert.AreEqual(_saleValue.Amount, _event.SaleValue.Amount); Assert.AreEqual(2, _event.Offers.Count()); var _nonDCCOffer = _event.Offers.First(); var _DCCOffer = _event.Offers.Skip(1).First(); Assert.AreEqual(1M, _nonDCCOffer.ExchangeRateIncludingMargin); Assert.AreEqual(_saleValue.Currency, _nonDCCOffer.PaymentValue.Currency); Assert.AreEqual(_saleValue.Amount, _nonDCCOffer.PaymentValue.Amount); Assert.AreNotEqual(1M, _DCCOffer.ExchangeRateIncludingMargin); Assert.AreNotEqual(_saleValue.Currency, _DCCOffer.PaymentValue.Currency); Assert.AreNotEqual(_saleValue.Amount, _DCCOffer.PaymentValue.Amount); Assert.AreEqual(1, _SUT.UncommittedChanges.Count()); }
public void Create_Where_Good_Data_Results_In_Order_Creation() { // Start Billy and Noels build context // Parse and good var _merchant = new ESInv.Domain.Merchant(12, "The merchant name"); var _cardNumber = 4242424242424242UL; var _saleValue = new ESInv.Domain.Money("EUR", 100M); // Signature // Create a creation context // End Billy and Noels build context var _cardNumberResolutionService = Substitute.For<ESInv.Domain.ICardNumberResolutionService>(); _cardNumberResolutionService.Resolve(_cardNumber).Returns("USD"); var _rateService = Substitute.For<ESInv.Domain.IRateService>(); _rateService.GetRate(_saleValue.Currency, "USD").Returns(1.27M); var _SUT = ESInv.Domain.OrderAggregate.CreateEmpty(); // Start pipeline _SUT.Create( _merchant, _cardNumber, _saleValue, _cardNumberResolutionService, _rateService); Assert.AreEqual(1, _SUT.UncommittedChanges.Count()); Assert.IsInstanceOf<ESInv.Messages.OrderCreated>(_SUT.UncommittedChanges.First()); var _event = _SUT.UncommittedChanges.First() as ESInv.Messages.OrderCreated; Assert.AreEqual(_merchant.Id, _event.MerchantId); Assert.AreEqual(_saleValue.Currency, _event.SaleValue.Currency); Assert.AreEqual(_saleValue.Amount, _event.SaleValue.Amount); Assert.AreEqual(2, _event.Offers.Count()); var _nonDCCOffer = _event.Offers.First(); var _DCCOffer = _event.Offers.Skip(1).First(); Assert.AreEqual(1M, _nonDCCOffer.ExchangeRateIncludingMargin); Assert.AreEqual(_saleValue.Currency, _nonDCCOffer.PaymentValue.Currency); Assert.AreEqual(_saleValue.Amount, _nonDCCOffer.PaymentValue.Amount); Assert.AreNotEqual(1M, _DCCOffer.ExchangeRateIncludingMargin); Assert.AreNotEqual(_saleValue.Currency, _DCCOffer.PaymentValue.Currency); Assert.AreNotEqual(_saleValue.Amount, _DCCOffer.PaymentValue.Amount); Assert.AreEqual(1, _SUT.UncommittedChanges.Count()); }
public void Handle( ESInv.Messages.CreateOrder command) { // Pending var _merchant = new ESInv.Domain.Merchant(12, "The merchant name"); var _aggregate = ESInv.Domain.OrderAggregate.CreateEmpty(); _aggregate.Create( _merchant, command.CardNumber, command.SaleValue.FromMessage(), this.c_cardNumberResolutionService, this.c_rateService); this.c_repository.Save(_aggregate); }
public void RoundTrip() { var _merchant = new ESInv.Domain.Merchant(12, "The merchant name"); var _cardNumber = 4242424242424242UL; var _saleValue = new ESInv.Domain.Money("EUR", 100M); var _cardNumberResolutionService = Substitute.For <ESInv.Domain.ICardNumberResolutionService>(); _cardNumberResolutionService.Resolve(_cardNumber).Returns("USD"); var _rateService = Substitute.For <ESInv.Domain.IRateService>(); _rateService.GetRate(_saleValue.Currency, "USD").Returns(1.27M); var _order = ESInv.Domain.OrderAggregate.CreateEmpty(); _order.Create( _merchant, _cardNumber, _saleValue, _cardNumberResolutionService, _rateService); _order.MakePayment( new ESInv.Domain.Money("EUR", 50M)); var _SUT = new ESInv.Data.Repository <ESInv.Domain.OrderAggregate>(); _SUT.Save(_order); var _retreivedOrder = _SUT.GetById(_order.Id); _retreivedOrder.MakePayment( new ESInv.Domain.Money("EUR", 50M)); _retreivedOrder.MakePayment( new ESInv.Domain.Money("EUR", 50M)); _SUT.Save(_retreivedOrder); }
public void RoundTrip() { var _merchant = new ESInv.Domain.Merchant(12, "The merchant name"); var _cardNumber = 4242424242424242UL; var _saleValue = new ESInv.Domain.Money("EUR", 100M); var _cardNumberResolutionService = Substitute.For<ESInv.Domain.ICardNumberResolutionService>(); _cardNumberResolutionService.Resolve(_cardNumber).Returns("USD"); var _rateService = Substitute.For<ESInv.Domain.IRateService>(); _rateService.GetRate(_saleValue.Currency, "USD").Returns(1.27M); var _order = ESInv.Domain.OrderAggregate.CreateEmpty(); _order.Create( _merchant, _cardNumber, _saleValue, _cardNumberResolutionService, _rateService); _order.MakePayment( new ESInv.Domain.Money("EUR", 50M)); var _SUT = new ESInv.Data.Repository<ESInv.Domain.OrderAggregate>(); _SUT.Save(_order); var _retreivedOrder = _SUT.GetById(_order.Id); _retreivedOrder.MakePayment( new ESInv.Domain.Money("EUR", 50M)); _retreivedOrder.MakePayment( new ESInv.Domain.Money("EUR", 50M)); _SUT.Save(_retreivedOrder); }
public void ClearUncommitedChanges_Where_Order_Created_Event_Existed_Results_In_Order_With_No_Uncommited_Changes() { var _merchant = new ESInv.Domain.Merchant(12, "The merchant name"); var _cardNumber = 4242424242424242UL; var _saleValue = new ESInv.Domain.Money("EUR", 100M); var _cardNumberResolutionService = Substitute.For<ESInv.Domain.ICardNumberResolutionService>(); _cardNumberResolutionService.Resolve(_cardNumber).Returns("USD"); var _rateService = Substitute.For<ESInv.Domain.IRateService>(); _rateService.GetRate(_saleValue.Currency, "USD").Returns(1.27M); var _SUT = ESInv.Domain.OrderAggregate.CreateEmpty(); _SUT.Create( _merchant, _cardNumber, _saleValue, _cardNumberResolutionService, _rateService); _SUT.ClearUncommitedChanges(); Assert.AreEqual(0, _SUT.UncommittedChanges.Count()); }