Exemple #1
0
        public void ShouldAbortTransactionIfExceptionThrown()
        {
            Thrower instance = new Thrower()
            {
                ShouldThrowException = true
            };
            TransactionStatus status = TransactionStatus.InDoubt;

            instance.Completed = (obj, e) =>
            {
                status = e.Transaction.TransactionInformation.Status;
            };

            IInvocation invocation = Substitute.For <IInvocation>();

            invocation.Request.Target.Returns(instance);
            MethodInfo method = typeof(Thrower).GetMethod("DoSomething");

            invocation.Request.Method.Returns(method);
            invocation.When(i => i.Proceed()).Do(i => instance.DoSomething());

            try
            {
                TransactionInterceptor interceptor = new TransactionInterceptor();
                interceptor.Intercept(invocation);
                Assert.Fail("An exception should have been thrown.");
            }
            catch (Exception)
            {
                Assert.AreEqual(TransactionStatus.Aborted, status, "The transaction was not abandoned.");
            }
        }
Exemple #2
0
        public void ShouldCommitTransactionIfExceptionNotThrown()
        {
            Thrower instance = new Thrower()
            {
                ShouldThrowException = false
            };
            TransactionStatus status = TransactionStatus.InDoubt;

            instance.Completed = (obj, e) =>
            {
                status = e.Transaction.TransactionInformation.Status;
            };

            IInvocation invocation = Substitute.For <IInvocation>();

            invocation.Request.Target.Returns(instance);
            MethodInfo method = typeof(Thrower).GetMethod("DoSomething");

            invocation.Request.Method.Returns(method);
            invocation.When(i => i.Proceed()).Do(i => instance.DoSomething());

            TransactionInterceptor interceptor = new TransactionInterceptor();

            interceptor.Intercept(invocation);

            Assert.AreEqual(TransactionStatus.Committed, status, "The transaction was not committed.");
        }
        public void ShouldAbortTransactionIfExceptionThrown()
        {
            Thrower instance = new Thrower() { ShouldThrowException = true };
            TransactionStatus status = TransactionStatus.InDoubt;
            instance.Completed = (obj, e) =>
            {
                status = e.Transaction.TransactionInformation.Status;
            };

            IInvocation invocation = Substitute.For<IInvocation>();
            invocation.Request.Target.Returns(instance);
            MethodInfo method = typeof(Thrower).GetMethod("DoSomething");
            invocation.Request.Method.Returns(method);
            invocation.When(i => i.Proceed()).Do(i => instance.DoSomething());

            try
            {
                TransactionInterceptor interceptor = new TransactionInterceptor();
                interceptor.Intercept(invocation);
                Assert.Fail("An exception should have been thrown.");
            }
            catch (Exception)
            {
                Assert.AreEqual(TransactionStatus.Aborted, status, "The transaction was not abandoned.");
            }
        }
        public void ShouldCommitTransactionIfExceptionNotThrown()
        {
            Thrower instance = new Thrower() { ShouldThrowException = false };
            TransactionStatus status = TransactionStatus.InDoubt;
            instance.Completed = (obj, e) =>
                {
                    status = e.Transaction.TransactionInformation.Status;
                };

            IInvocation invocation = Substitute.For<IInvocation>();
            invocation.Request.Target.Returns(instance);
            MethodInfo method = typeof(Thrower).GetMethod("DoSomething");
            invocation.Request.Method.Returns(method);
            invocation.When(i => i.Proceed()).Do(i => instance.DoSomething());

            TransactionInterceptor interceptor = new TransactionInterceptor();
            interceptor.Intercept(invocation);

            Assert.AreEqual(TransactionStatus.Committed, status, "The transaction was not committed.");
        }