Beispiel #1
0
        public void MakeRefund_Where_Being_Made_After_A_Payment_And_Partial_Refund_But_Value_Exceeds_Net_Payments_Results_In_An_Exception()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
            {
                new ESInv.Messages.OrderCreated(
                    Guid.NewGuid(),
                    Guid.NewGuid(),
                    1,
                    new ESInv.Messages.Money("EUR", 100M),
                    new []
                {
                    new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                    new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                },
                    DateTimeOffset.Now),
                new ESInv.Messages.OrderPaymentMade(
                    Guid.NewGuid(),
                    new ESInv.Messages.Money("EUR", 90M),
                    DateTimeOffset.Now),
                new ESInv.Messages.OrderRefundMade(
                    Guid.NewGuid(),
                    new ESInv.Messages.Money("EUR", 80M),
                    DateTimeOffset.Now)
            };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakeRefund(new ESInv.Domain.Money("EUR", 25M));
        }
Beispiel #2
0
        protected void Apply(
            ESInv.Messaging.IEvent @event)
        {
            ((dynamic)this.c_state).Mutate(@event);

            this.c_uncommittedChanges.Add(@event);
        }
Beispiel #3
0
        public void MakeRefund_Where_Being_Made_After_A_Payment_And_Partial_Refund_Results_In_Accepted_Refund()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
            {
                new ESInv.Messages.OrderCreated(
                    Guid.NewGuid(),
                    Guid.NewGuid(),
                    1,
                    new ESInv.Messages.Money("EUR", 100M),
                    new []
                {
                    new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                    new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                },
                    DateTimeOffset.Now),
                new ESInv.Messages.OrderPaymentMade(
                    Guid.NewGuid(),
                    new ESInv.Messages.Money("EUR", 90M),
                    DateTimeOffset.Now),
                new ESInv.Messages.OrderRefundMade(
                    Guid.NewGuid(),
                    new ESInv.Messages.Money("EUR", 80M),
                    DateTimeOffset.Now)
            };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakeRefund(new ESInv.Domain.Money("EUR", 5M));

            Assert.AreEqual(1, _SUT.UncommittedChanges.Count());
            Assert.IsInstanceOf <ESInv.Messages.OrderRefundMade>(_SUT.UncommittedChanges.First());
        }
Beispiel #4
0
        public void MakePayment_Where_Second_Payment_With_Same_Currency_But_Exceeds_The_Offer_Results_In_Accepted_Payment()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
            {
                new ESInv.Messages.OrderCreated(
                    Guid.NewGuid(),
                    Guid.NewGuid(),
                    1,
                    new ESInv.Messages.Money("EUR", 100M),
                    new []
                {
                    new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                    new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                },
                    DateTimeOffset.Now),
                new ESInv.Messages.OrderPaymentMade(
                    Guid.NewGuid(),
                    new ESInv.Messages.Money("USD", 107M),
                    DateTimeOffset.Now)
            };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakePayment(new ESInv.Domain.Money("USD", 100000M));

            Assert.AreEqual(1, _SUT.UncommittedChanges.Count());
            Assert.IsInstanceOf <ESInv.Messages.OrderPaymentMade>(_SUT.UncommittedChanges.First());
        }
Beispiel #5
0
		public void Mutate(
			ESInv.Messaging.IEvent @event)
		{
			((dynamic)this).When((dynamic)@event);

			this.Version++;
		}
Beispiel #6
0
        public void MakePayment_Where_Non_Offer_Currency_Results_In_An_Exception()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
            {
                new ESInv.Messages.OrderCreated(
                    Guid.NewGuid(),
                    Guid.NewGuid(),
                    1,
                    new ESInv.Messages.Money("EUR", 100M),
                    new []
                {
                    new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                    new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                },
                    DateTimeOffset.Now)
            };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakePayment(new ESInv.Domain.Money("GBP", 20M));
        }
Beispiel #7
0
        public void MakePayment_Where_This_Is_Second_Payment_And_Is_Different_Currency_To_Previous_Payment_Results_In_An_Exception()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
            {
                new ESInv.Messages.OrderCreated(
                    Guid.NewGuid(),
                    Guid.NewGuid(),
                    1,
                    new ESInv.Messages.Money("EUR", 100M),
                    new []
                {
                    new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                    new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                },
                    DateTimeOffset.Now),
                new ESInv.Messages.OrderPaymentMade(
                    Guid.NewGuid(),
                    new ESInv.Messages.Money("USD", 15M),
                    DateTimeOffset.Now)
            };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakePayment(new ESInv.Domain.Money("EUR", 100000M));
        }
Beispiel #8
0
        public void MakePayment_Where_Non_Offer_Currency_Results_In_An_Exception()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
                {
                    new ESInv.Messages.OrderCreated(
                        Guid.NewGuid(),
                        Guid.NewGuid(),
                        1,
                        new ESInv.Messages.Money("EUR", 100M),
                        new []
                            {
                                new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                                new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                            },
                        DateTimeOffset.Now)
                };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakePayment(new ESInv.Domain.Money("GBP", 20M));
        }
Beispiel #9
0
        public void MakeRefund_Where_Being_Made_After_A_Payment_And_Partial_Refund_Results_In_Accepted_Refund()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
                {
                    new ESInv.Messages.OrderCreated(
                        Guid.NewGuid(),
                        Guid.NewGuid(),
                        1,
                        new ESInv.Messages.Money("EUR", 100M),
                        new []
                            {
                                new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                                new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                            },
                        DateTimeOffset.Now),
                    new ESInv.Messages.OrderPaymentMade(
                        Guid.NewGuid(),
                        new ESInv.Messages.Money("EUR", 90M),
                        DateTimeOffset.Now),
                    new ESInv.Messages.OrderRefundMade(
                        Guid.NewGuid(),
                        new ESInv.Messages.Money("EUR", 80M),
                        DateTimeOffset.Now)
                };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakeRefund(new ESInv.Domain.Money("EUR", 5M));

            Assert.AreEqual(1, _SUT.UncommittedChanges.Count());
            Assert.IsInstanceOf<ESInv.Messages.OrderRefundMade>(_SUT.UncommittedChanges.First());
        }
Beispiel #10
0
        public void MakeRefund_Where_Being_Made_After_A_Payment_And_Partial_Refund_But_Value_Exceeds_Net_Payments_Results_In_An_Exception()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
                {
                    new ESInv.Messages.OrderCreated(
                        Guid.NewGuid(),
                        Guid.NewGuid(),
                        1,
                        new ESInv.Messages.Money("EUR", 100M),
                        new []
                            {
                                new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                                new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                            },
                        DateTimeOffset.Now),
                    new ESInv.Messages.OrderPaymentMade(
                        Guid.NewGuid(),
                        new ESInv.Messages.Money("EUR", 90M),
                        DateTimeOffset.Now),
                    new ESInv.Messages.OrderRefundMade(
                        Guid.NewGuid(),
                        new ESInv.Messages.Money("EUR", 80M),
                        DateTimeOffset.Now)
                };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakeRefund(new ESInv.Domain.Money("EUR", 25M));
        }
Beispiel #11
0
        public void MakePayment_Where_This_Is_Second_Payment_And_Is_Different_Currency_To_Previous_Payment_Results_In_An_Exception()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
                {
                    new ESInv.Messages.OrderCreated(
                        Guid.NewGuid(),
                        Guid.NewGuid(),
                        1,
                        new ESInv.Messages.Money("EUR", 100M),
                        new []
                            {
                                new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                                new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                            },
                        DateTimeOffset.Now),
                    new ESInv.Messages.OrderPaymentMade(
                        Guid.NewGuid(),
                        new ESInv.Messages.Money("USD", 15M),
                        DateTimeOffset.Now)
                };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakePayment(new ESInv.Domain.Money("EUR", 100000M));
        }
Beispiel #12
0
        public void MakePayment_Where_Second_Payment_With_Same_Currency_But_Exceeds_The_Offer_Results_In_Accepted_Payment()
        {
            var _SUTStateEventStreamEvents = new ESInv.Messaging.IEvent[]
                {
                    new ESInv.Messages.OrderCreated(
                        Guid.NewGuid(),
                        Guid.NewGuid(),
                        1,
                        new ESInv.Messages.Money("EUR", 100M),
                        new []
                            {
                                new ESInv.Messages.PaymentOffer(1M, new ESInv.Messages.Money("EUR", 100M)),
                                new ESInv.Messages.PaymentOffer(1.27M, new ESInv.Messages.Money("USD", 127M))
                            },
                        DateTimeOffset.Now),
                    new ESInv.Messages.OrderPaymentMade(
                        Guid.NewGuid(),
                        new ESInv.Messages.Money("USD", 107M),
                        DateTimeOffset.Now)
                };
            var _SUT = new ESInv.Domain.OrderAggregate(_SUTStateEventStreamEvents);

            _SUT.MakePayment(new ESInv.Domain.Money("USD", 100000M));

            Assert.AreEqual(1, _SUT.UncommittedChanges.Count());
            Assert.IsInstanceOf<ESInv.Messages.OrderPaymentMade>(_SUT.UncommittedChanges.First());
        }