Пример #1
0
        public void AddSaleStateChange_AcceptsConfirmedAndCancelled_WhenInFundsReservedState_SaleStateChangesWhenSuccessful()
        {
            foreach (var changeFactory in StateChangeTestData)
            {
                var sale = new Sale(Guid.Empty, 1, 1, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty);
                sale.StateChanges.Add(new SaleStateChange(Guid.Empty, "Reason", SaleState.FundsReserved, null, null));
                Assert.AreEqual(SaleState.FundsReserved, sale.State);

                var change = changeFactory();
                void Act() => sale.AddStateChange(change);

                switch (change.State)
                {
                case SaleState.FundsReserved:
                    var ex = Assert.ThrowsException <BaristaException>((Action)Act);
                    Assert.AreEqual("invalid_sale_state_transition", ex.Code);
                    break;

                case SaleState.Confirmed:
                    Act();     // must not throw
                    Assert.AreEqual(SaleState.Confirmed, sale.State);
                    break;

                case SaleState.Cancelled:
                    Act();     // must not throw
                    Assert.AreEqual(SaleState.Cancelled, sale.State);
                    break;

                default:
                    throw new NotSupportedException();
                }
            }
        }
Пример #2
0
        public void AddSaleStateChange_RejectsNullValue()
        {
            var sale = new Sale(Guid.Empty, 1, 1, Guid.Empty, Guid.Empty,
                                Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty);

            var ex = Assert.ThrowsException <BaristaException>(() => sale.AddStateChange(null));

            Assert.AreEqual("invalid_sale_state_change", ex.Code);
        }
Пример #3
0
        public void AddSaleStateChange_DoesNotAcceptAnyNewState_WhenInCancelledState()
        {
            var sale = new Sale(Guid.Empty, 1, 1, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty);

            sale.StateChanges.Add(new SaleStateChange(Guid.Empty, "Reason", SaleState.Cancelled, null, null));
            Assert.AreEqual(SaleState.Cancelled, sale.State);

            foreach (var changeFactory in StateChangeTestData)
            {
                var change = changeFactory();
                void Act() => sale.AddStateChange(change);

                var ex = Assert.ThrowsException <BaristaException>((Action)Act);
                Assert.AreEqual("invalid_sale_state_transition", ex.Code);
            }
        }