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(); } } }
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); }
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); } }