public void CreateTransactionStrategy_WithParentTransaction() { ITransactionMode transactionMode = new CreateChildIfParentTransactionMode(true, new TestTransactionFactory()); WxeFunction parentFunction = new TestFunction2(new CreateRootTransactionMode(true, new TestTransactionFactory())); WxeFunction childFunction = new TestFunction2(transactionMode); parentFunction.Add(childFunction); WxeStep stepMock = MockRepository.GenerateMock <WxeStep>(); childFunction.Add(stepMock); WxeContextFactory wxeContextFactory = new WxeContextFactory(); WxeContext context = wxeContextFactory.CreateContext(new TestFunction()); stepMock.Expect(mock => mock.Execute(context)).WhenCalled( invocation => { TransactionStrategyBase strategy = ((TestFunction2)childFunction).TransactionStrategy; Assert.That(strategy, Is.InstanceOf(typeof(ChildTransactionStrategy))); Assert.That(((ChildTransactionStrategy)strategy).AutoCommit, Is.True); Assert.That(strategy.OuterTransactionStrategy, Is.SameAs(((TestFunction2)parentFunction).TransactionStrategy)); }); parentFunction.Execute(context); }
public void CreateTransactionStrategy_WithoutParentFunction_And_WithoutParentTransaction() { WxeContextFactory wxeContextFactory = new WxeContextFactory(); WxeContext context = wxeContextFactory.CreateContext(new TestFunction()); ITransactionMode transactionMode = new CreateChildIfParentTransactionMode(true, new TestTransactionFactory()); TransactionStrategyBase strategy = transactionMode.CreateTransactionStrategy(new TestFunction2(transactionMode), context); Assert.That(strategy, Is.InstanceOf(typeof(RootTransactionStrategy))); Assert.That(strategy.GetNativeTransaction <TestTransaction>(), Is.InstanceOf(typeof(TestTransaction))); Assert.That(((RootTransactionStrategy)strategy).AutoCommit, Is.True); Assert.That(((RootTransactionStrategy)strategy).Transaction, Is.InstanceOf(typeof(TestTransaction))); Assert.That(strategy.OuterTransactionStrategy, Is.InstanceOf(typeof(NullTransactionStrategy))); }