コード例 #1
0
        public void Should_execute_both_vanes()
        {
            var success = new TestSuccess();
            var log = new TestVane();
            Vane<TestSubject> vane = Vane.Connect(success, log);

            vane.Execute(_testSubject);

            Assert.IsTrue(success.AssignCalled);

            Assert.IsTrue(log.AssignCalled);
            Assert.IsTrue(log.ExecuteCalled);
            Assert.IsFalse(log.CompensateCalled);
        }
コード例 #2
0
        public void Should_execute_and_compensate_on_fail()
        {
            var fail = new TestFail();
            var log = new TestVane();
            Vane<TestSubject> vane = Vane.Connect(fail, log);

            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);
        }
コード例 #3
0
        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);
        }