Example #1
0
        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());
        }
Example #2
0
        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());
        }
Example #3
0
        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());
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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());
        }