public void Test_WithScope() { var object1 = new object(); var object2 = new object(); InvokeOnExecutionPlay(_strategy); TransactionMock.BackToRecord(); TransactionFactoryMock.BackToRecord(); var newScopeMock = MockRepository.StrictMock <ITransactionScope>(); using (MockRepository.Ordered()) { ScopeMock.Expect(mock => mock.Leave()); TransactionMock.Expect(mock => mock.Release()); TransactionFactoryMock.Expect(mock => mock.Create()).Return(_newTransactionMock); _newTransactionMock.Expect(mock => mock.EnterScope()).Return(newScopeMock); ExecutionContextMock.Expect(mock => mock.GetVariables()).Return(new[] { object1, object2 }); _newTransactionMock.Expect(mock => mock.EnsureCompatibility(Arg <IEnumerable> .List.ContainsAll(new[] { object1, object2 }))); } Assert.That(_strategy.Scope, Is.SameAs(ScopeMock)); MockRepository.ReplayAll(); _strategy.Reset(); MockRepository.VerifyAll(); Assert.That(_strategy.Scope, Is.SameAs(newScopeMock)); }
public void Test_WithIncompatibleVariables() { var object1 = new object(); var object2 = new object(); var invalidOperationException = new InvalidOperationException("Oh nos!"); TransactionMock.BackToRecord(); TransactionFactoryMock.BackToRecord(); TransactionMock.Stub(mock => mock.Release()); TransactionFactoryMock.Stub(mock => mock.Create()).Return(_newTransactionMock); ExecutionContextMock.Stub(mock => mock.GetVariables()).Return(new[] { object1, object2 }); _newTransactionMock .Stub(mock => mock.EnsureCompatibility(Arg <IEnumerable> .List.ContainsAll(new[] { object1, object2 }))) .Throw(invalidOperationException); MockRepository.ReplayAll(); Assert.That( () => _strategy.Reset(), Throws .TypeOf <WxeException>() .With.Message.EqualTo( "One or more of the variables of the WxeFunction are incompatible with the new transaction after the Reset. Oh nos! " + "(To avoid this exception, clear the Variables collection from incompatible objects before calling Reset and repopulate it " + "afterwards.)") .And.InnerException.SameAs(invalidOperationException)); Assert.That(_strategy.Scope, Is.Null); Assert.That(_strategy.Transaction, Is.SameAs(_newTransactionMock)); }
public void Test_WithoutScope_And_CreateThrows() { var exception = new ApplicationException("Reset Exception"); TransactionMock.BackToRecord(); TransactionMock.Expect(mock => mock.Release()); TransactionFactoryMock.BackToRecord(); TransactionFactoryMock.Expect(mock => mock.Create()).Throw(exception); Assert.That(_strategy.Scope, Is.Null); MockRepository.ReplayAll(); try { _strategy.Reset(); Assert.Fail("Expected Exception"); } catch (ApplicationException actualException) { Assert.That(actualException, Is.SameAs(exception)); } MockRepository.VerifyAll(); Assert.That(_strategy.Scope, Is.Null); Assert.That(_strategy.Transaction, Is.SameAs(TransactionMock), "Transaction just released is retained."); }
public void Test_WithScope_And_ResetThrows() { InvokeOnExecutionPlay(_strategy); var exception = new ApplicationException("Reset Exception"); TransactionFactoryMock.BackToRecord(); TransactionMock.BackToRecord(); using (MockRepository.Ordered()) { ScopeMock.Expect(mock => mock.Leave()); TransactionMock.Expect(mock => mock.Release()); TransactionFactoryMock.Expect(mock => mock.Create()).Throw(exception); } Assert.That(_strategy.Scope, Is.SameAs(ScopeMock)); MockRepository.ReplayAll(); try { _strategy.Reset(); Assert.Fail("Expected Exception"); } catch (ApplicationException actualException) { Assert.That(actualException, Is.SameAs(exception)); } MockRepository.VerifyAll(); Assert.That(_strategy.Scope, Is.SameAs(ScopeMock)); Assert.That(_strategy.Transaction, Is.SameAs(TransactionMock), "Transaction just released is retained."); }
public override void SetUp() { base.SetUp(); ExecutionContextMock.BackToRecord(); ExecutionContextMock.Stub(stub => stub.GetInParameters()).Return(new object[0]).Repeat.Any(); ExecutionContextMock.Replay(); TransactionMock.BackToRecord(); TransactionMock.Stub(stub => stub.EnsureCompatibility(Arg <IEnumerable> .Is.NotNull)); TransactionMock.Replay(); _strategy = MockRepository.PartialMock <ScopedTransactionStrategyBase> ( true, (Func <ITransaction>)(() => TransactionMock), OuterTransactionStrategyMock, ExecutionContextMock); _strategy.Replay(); ExecutionContextMock.BackToRecord(); TransactionMock.BackToRecord(); }