public void ResolvesEntityInterceptorOnEachOpen() { TestSessionScopeSettings sss = Fake <TestSessionScopeSettings>(options => options .CallsBaseMethods() .WithArgumentsForConstructor(new[] { expectedSessionFactory }) ); ISession expectedSession = Fake <ISession>(); sss.DefaultFlushMode = FlushMode.Never; SessionScope sc = new SessionScope(sss, false); CallTo(() => sss.DoResolveEntityInterceptor()).Returns(expectedEntityInterceptor); CallTo(() => expectedSessionFactory.OpenSession(expectedEntityInterceptor)).Returns(expectedSession); sc.Open(); SessionHolder sessionHolder = (SessionHolder)TransactionSynchronizationManager.GetResource(expectedSessionFactory); sessionHolder.ContainsSession(null); // force opening session sc.Close(); sc.Open(); sessionHolder = (SessionHolder)TransactionSynchronizationManager.GetResource(expectedSessionFactory); sessionHolder.ContainsSession(null); // force opening session sc.Close(); CallToSet(() => expectedSession.FlushMode).WhenArgumentsMatch(x => x.Get <FlushMode>(0) == FlushMode.Never).MustHaveHappenedTwiceExactly(); CallTo(() => expectedSession.Close()).MustHaveHappenedTwiceExactly(); }
public void OpeningTwiceThrowsInvalidOperationException() { using (SessionScope scope = new SessionScope(expectedSessionFactory, true)) { scope.Open(); } }
public void ResolvesEntityInterceptorOnEachOpen() { TestSessionScopeSettings sss = (TestSessionScopeSettings)mocks.PartialMock(typeof(TestSessionScopeSettings), expectedSessionFactory); ISession expectedSession = mocks.StrictMock <ISession>(); sss.DefaultFlushMode = FlushMode.Never; SessionScope sc = new SessionScope(sss, false); using (mocks.Ordered()) { Expect.Call(sss.DoResolveEntityInterceptor()).Return(expectedEntityInterceptor); Expect.Call(expectedSessionFactory.OpenSession(expectedEntityInterceptor)).Return(expectedSession); expectedSession.FlushMode = FlushMode.Never; Expect.Call(expectedSession.Close()).Return(null); Expect.Call(sss.DoResolveEntityInterceptor()).Return(expectedEntityInterceptor); Expect.Call(expectedSessionFactory.OpenSession(expectedEntityInterceptor)).Return(expectedSession); expectedSession.FlushMode = FlushMode.Never; Expect.Call(expectedSession.Close()).Return(null); } mocks.ReplayAll(); sc.Open(); SessionHolder sessionHolder = (SessionHolder)TransactionSynchronizationManager.GetResource(expectedSessionFactory); sessionHolder.ContainsSession(null); // force opening session sc.Close(); sc.Open(); sessionHolder = (SessionHolder)TransactionSynchronizationManager.GetResource(expectedSessionFactory); sessionHolder.ContainsSession(null); // force opening session sc.Close(); mocks.VerifyAll(); }
public void DoesNotOpenImmediatelyOnOpenIsFalse() { SessionScope scope = null; using (scope = new SessionScope(expectedSessionFactory, false)) { // ensure is *not* open Assert.IsFalse(scope.IsOpen); Assert.IsFalse(scope.IsParticipating); scope.Open(); // ensure is open now Assert.IsTrue(scope.IsOpen); scope.Close(); // ensure is closed Assert.IsFalse(scope.IsOpen); Assert.IsFalse(scope.IsParticipating); } // ensure is closed Assert.IsFalse(scope.IsOpen); Assert.IsFalse(scope.IsParticipating); }
public void ResolvesEntityInterceptorOnEachOpen() { TestSessionScopeSettings sss = (TestSessionScopeSettings)mocks.PartialMock(typeof(TestSessionScopeSettings), expectedSessionFactory); ISession expectedSession = mocks.StrictMock<ISession>(); sss.DefaultFlushMode = FlushMode.Never; SessionScope sc = new SessionScope(sss, false); using (mocks.Ordered()) { Expect.Call(sss.DoResolveEntityInterceptor()).Return(expectedEntityInterceptor); Expect.Call(expectedSessionFactory.OpenSession(expectedEntityInterceptor)).Return(expectedSession); expectedSession.FlushMode = FlushMode.Never; Expect.Call(expectedSession.Close()).Return(null); Expect.Call(sss.DoResolveEntityInterceptor()).Return(expectedEntityInterceptor); Expect.Call(expectedSessionFactory.OpenSession(expectedEntityInterceptor)).Return(expectedSession); expectedSession.FlushMode = FlushMode.Never; Expect.Call(expectedSession.Close()).Return(null); } mocks.ReplayAll(); sc.Open(); SessionHolder sessionHolder = (SessionHolder)TransactionSynchronizationManager.GetResource(expectedSessionFactory); sessionHolder.ContainsSession(null); // force opening session sc.Close(); sc.Open(); sessionHolder = (SessionHolder)TransactionSynchronizationManager.GetResource(expectedSessionFactory); sessionHolder.ContainsSession(null); // force opening session sc.Close(); mocks.VerifyAll(); }
public void DoesNotOpenImmediatelyOnOpenIsFalse() { SessionScope scope = null; using (scope = new SessionScope(expectedSessionFactory, false)) { // ensure is *not* open Assert.IsFalse(scope.IsOpen); Assert.IsFalse(scope.IsParticipating); scope.Open(); // ensure is open now Assert.IsTrue(scope.IsOpen); scope.Close(); // ensure is closed Assert.IsFalse(scope.IsOpen); Assert.IsFalse(scope.IsParticipating); } // ensure is closed Assert.IsFalse(scope.IsOpen); Assert.IsFalse(scope.IsParticipating); }
public void OpeningTwiceThrowsInvalidOperationException() { using (SessionScope scope = new SessionScope(expectedSessionFactory, true)) { scope.Open(); } }
public void MultipleDBAccessUsingMultipleSessionScopes() { SessionScope scope1 = new SessionScope( (ISessionFactory) ctx["SessionFactory1"], false ); SessionScope scope2 = new SessionScope( (ISessionFactory) ctx["SessionFactory2"], false ); scope1.Open(); scope2.Open(); // do something MultipleDBAccess(); scope1.Close(); scope2.Close(); }