public void Should_complete_the_rescue_vane() { var fail = new TestFail(); var middle = new Test(); var success = new TestSuccess(); Vane<TestSubject> vane = VaneFactory.New(() => fail, x => { x.Rescue(() => success, r => { }); x.Feather(() => middle); }); vane.Execute(_testSubject); Assert.IsTrue(middle.AssignCalled); Assert.IsTrue(middle.ExecuteCalled); Assert.IsTrue(middle.CompensateCalled); Assert.IsTrue(success.AssignCalled); Assert.IsTrue(fail.AssignCalled); Assert.IsTrue(fail.ExecuteCalled); Assert.IsTrue(fail.CompensateCalled); }
public void Should_create_the_plan_for_fail() { var fail = new TestFail(); Vane<TestSubject> vane = VaneFactory.Connect(fail); var exception = Assert.Throws<AggregateException>(() => vane.Execute(_testSubject)); Assert.AreEqual(1, exception.InnerExceptions.Count); }
public void Should_execute_and_compensate_on_fail() { var fail = new TestFail(); var log = new Test(); Vane<TestSubject> vane = VaneFactory.Connect(fail, log); var exception = Assert.Throws<AggregateException>(() => vane.Execute(_testSubject)); Assert.AreEqual(1, exception.InnerExceptions.Count); Assert.IsTrue(fail.AssignCalled); Assert.IsTrue(fail.ExecuteCalled); Assert.IsTrue(fail.CompensateCalled); Assert.IsTrue(log.AssignCalled); Assert.IsTrue(log.ExecuteCalled); Assert.IsTrue(log.CompensateCalled); }
public void Should_complete_the_rescue_vane() { var success = new TestSuccess(); var fail = new TestFail(); var middle = new TestVane(); var rescue = new Rescue<TestSubject>(success); Vane<TestSubject> vane = Vane.Connect(fail, rescue, middle); Assert.IsTrue(vane.Execute(_testSubject)); Assert.IsTrue(fail.AssignCalled); Assert.IsTrue(fail.ExecuteCalled); Assert.IsFalse(fail.CompensateCalled); Assert.IsTrue(middle.AssignCalled); Assert.IsTrue(middle.ExecuteCalled); Assert.IsTrue(middle.CompensateCalled); Assert.IsTrue(success.AssignCalled); }
public void Should_execute_two_and_compensate_on_fail() { var fail = new TestFail(); var log = new TestVane(); var log2 = new TestVane(); Vane<TestSubject> vane = Vane.Connect(fail, log, log2); var exception = Assert.Throws<AgendaExecutionException>(() => vane.Execute(_testSubject)); Assert.AreEqual(0, exception.InnerExceptionCount); Assert.IsTrue(fail.AssignCalled); Assert.IsTrue(fail.ExecuteCalled); Assert.IsFalse(fail.CompensateCalled); Assert.IsTrue(log.AssignCalled); Assert.IsTrue(log.ExecuteCalled); Assert.IsTrue(log.CompensateCalled); Assert.IsTrue(log2.AssignCalled); Assert.IsTrue(log2.ExecuteCalled); Assert.IsTrue(log2.CompensateCalled); }