@@ -47,9 +47,11 @@ public void CanSetAutoJoinTransaction()
4747 {
4848 var sb = Sfi . WithOptions ( ) ;
4949 CanSetAutoJoinTransaction ( sb ) ;
50+ CanSetAutoJoinTransactionOnStateless ( Sfi . WithStatelessOptions ( ) ) ;
5051 using ( var s = sb . OpenSession ( ) )
5152 {
5253 CanSetAutoJoinTransaction ( s . SessionWithOptions ( ) ) ;
54+ CanSetAutoJoinTransactionOnStateless ( s . StatelessSessionWithOptions ( ) ) ;
5355 }
5456 }
5557
@@ -64,31 +66,28 @@ private void CanSetAutoJoinTransaction<T>(T sb) where T : ISessionBuilder<T>
6466 false , true ) ;
6567 }
6668
67- [ Test ]
68- public void CanSetAutoJoinTransactionOnStateless ( )
69+ private void CanSetAutoJoinTransactionOnStateless < T > ( T sb ) where T : IStatelessSessionBuilder
6970 {
70- var sb = Sfi . WithStatelessOptions ( ) ;
71-
72- var sbType = sb . GetType ( ) . Name ;
7371 var options = DebugSessionFactory . GetCreationOptions ( sb ) ;
74- Assert . That ( options . ShouldAutoJoinTransaction , Is . True , $ "{ sbType } : Initial value") ;
75- var fsb = sb . AutoJoinTransaction ( false ) ;
76- Assert . That ( options . ShouldAutoJoinTransaction , Is . False , $ "{ sbType } : After call with false") ;
77- Assert . That ( fsb , Is . SameAs ( sb ) , $ "{ sbType } : Unexpected fluent return after call with false") ;
78-
79- fsb = sb . AutoJoinTransaction ( true ) ;
80- Assert . That ( options . ShouldAutoJoinTransaction , Is . True , $ "{ sbType } : After call with true") ;
81- Assert . That ( fsb , Is . SameAs ( sb ) , $ "{ sbType } : Unexpected fluent return after call with true") ;
72+ CanSetOnStateless (
73+ sb , sb . AutoJoinTransaction , ( ) => options . ShouldAutoJoinTransaction ,
74+ sb is ISharedStatelessSessionBuilder ssb ? ssb . AutoJoinTransaction : default ( Func < ISharedStatelessSessionBuilder > ) ,
75+ // initial value
76+ true ,
77+ // values
78+ false , true ) ;
8279 }
8380
8481 [ Test ]
8582 public void CanSetConnection ( )
8683 {
8784 var sb = Sfi . WithOptions ( ) ;
8885 CanSetConnection ( sb ) ;
86+ CanSetConnectionOnStateless ( Sfi . WithStatelessOptions ( ) ) ;
8987 using ( var s = sb . OpenSession ( ) )
9088 {
9189 CanSetConnection ( s . SessionWithOptions ( ) ) ;
90+ CanSetConnectionOnStateless ( s . StatelessSessionWithOptions ( ) ) ;
9291 }
9392 }
9493
@@ -136,10 +135,8 @@ private void CanSetConnection<T>(T sb) where T : ISessionBuilder<T>
136135 }
137136 }
138137
139- [ Test ]
140- public void CanSetConnectionOnStateless ( )
138+ private void CanSetConnectionOnStateless < T > ( T sb ) where T : IStatelessSessionBuilder
141139 {
142- var sb = Sfi . WithStatelessOptions ( ) ;
143140 var sbType = sb . GetType ( ) . Name ;
144141 var conn = Sfi . ConnectionProvider . GetConnection ( ) ;
145142 try
@@ -150,9 +147,31 @@ public void CanSetConnectionOnStateless()
150147 Assert . AreEqual ( conn , options . UserSuppliedConnection , $ "{ sbType } : After call with a connection") ;
151148 Assert . AreEqual ( sb , fsb , $ "{ sbType } : Unexpected fluent return after call with a connection") ;
152149
153- fsb = sb . Connection ( null ) ;
154- Assert . IsNull ( options . UserSuppliedConnection , $ "{ sbType } : After call with null") ;
155- Assert . AreEqual ( sb , fsb , $ "{ sbType } : Unexpected fluent return after call with null") ;
150+ if ( sb is ISharedStatelessSessionBuilder ssb )
151+ {
152+ var sharedOptions = ( ISharedSessionCreationOptions ) options ;
153+ Assert . IsFalse ( sharedOptions . IsTransactionCoordinatorShared , $ "{ sbType } : Transaction coordinator shared before sharing") ;
154+ Assert . IsNull ( sharedOptions . ConnectionManager , $ "{ sbType } : Connection manager shared before sharing") ;
155+
156+ var fssb = ssb . Connection ( ) ;
157+ // Sharing connection shares the connection manager, not the connection.
158+ Assert . IsNull ( options . UserSuppliedConnection , $ "{ sbType } : After call with previous session connection") ;
159+ Assert . IsTrue ( sharedOptions . IsTransactionCoordinatorShared , $ "{ sbType } : Transaction coordinator not shared after sharing") ;
160+ Assert . IsNotNull ( sharedOptions . ConnectionManager , $ "{ sbType } : Connection manager not shared after sharing") ;
161+ Assert . AreEqual ( sb , fssb , $ "{ sbType } : Unexpected fluent return on shared") ;
162+
163+ fsb = sb . Connection ( null ) ;
164+ Assert . IsNull ( options . UserSuppliedConnection , $ "{ sbType } : After call with null") ;
165+ Assert . IsFalse ( sharedOptions . IsTransactionCoordinatorShared , $ "{ sbType } : Transaction coordinator shared after un-sharing") ;
166+ Assert . IsNull ( sharedOptions . ConnectionManager , $ "{ sbType } : Connection manager shared after un-sharing") ;
167+ Assert . AreEqual ( sb , fsb , $ "{ sbType } : Unexpected fluent return after un-sharing") ;
168+ }
169+ else
170+ {
171+ fsb = sb . Connection ( null ) ;
172+ Assert . IsNull ( options . UserSuppliedConnection , $ "{ sbType } : After call with null") ;
173+ Assert . AreEqual ( sb , fsb , $ "{ sbType } : Unexpected fluent return after call with null") ;
174+ }
156175 }
157176 finally
158177 {
@@ -259,5 +278,25 @@ private void CanSet<T, V>(T sb, Func<V, T> setter, Func<V> getter, Func<ISharedS
259278 Assert . AreEqual ( sb , fsb , $ "{ sbType } : Unexpected fluent return after call with { value } ") ;
260279 }
261280 }
281+
282+ private void CanSetOnStateless < T , V > (
283+ T sb , Func < V , T > setter , Func < V > getter , Func < ISharedStatelessSessionBuilder > shared , V initialValue ,
284+ params V [ ] values ) where T : IStatelessSessionBuilder
285+ {
286+ var sbType = sb . GetType ( ) . Name ;
287+ Assert . AreEqual ( initialValue , getter ( ) , $ "{ sbType } : Initial value") ;
288+ if ( shared != null )
289+ {
290+ var fssb = shared ( ) ;
291+ Assert . AreEqual ( values . Last ( ) , getter ( ) , $ "{ sbType } : After call with shared setting") ;
292+ Assert . AreEqual ( sb , fssb , $ "{ sbType } : Unexpected fluent return on shared") ;
293+ }
294+ foreach ( var value in values )
295+ {
296+ var fsb = setter ( value ) ;
297+ Assert . AreEqual ( value , getter ( ) , $ "{ sbType } : After call with { value } ") ;
298+ Assert . AreEqual ( sb , fsb , $ "{ sbType } : Unexpected fluent return after call with { value } ") ;
299+ }
300+ }
262301 }
263302}
0 commit comments