@@ -47,9 +47,11 @@ public void CanSetAutoJoinTransaction()
47
47
{
48
48
var sb = Sfi . WithOptions ( ) ;
49
49
CanSetAutoJoinTransaction ( sb ) ;
50
+ CanSetAutoJoinTransactionOnStateless ( Sfi . WithStatelessOptions ( ) ) ;
50
51
using ( var s = sb . OpenSession ( ) )
51
52
{
52
53
CanSetAutoJoinTransaction ( s . SessionWithOptions ( ) ) ;
54
+ CanSetAutoJoinTransactionOnStateless ( s . StatelessSessionWithOptions ( ) ) ;
53
55
}
54
56
}
55
57
@@ -64,31 +66,28 @@ private void CanSetAutoJoinTransaction<T>(T sb) where T : ISessionBuilder<T>
64
66
false , true ) ;
65
67
}
66
68
67
- [ Test ]
68
- public void CanSetAutoJoinTransactionOnStateless ( )
69
+ private void CanSetAutoJoinTransactionOnStateless < T > ( T sb ) where T : IStatelessSessionBuilder
69
70
{
70
- var sb = Sfi . WithStatelessOptions ( ) ;
71
-
72
- var sbType = sb . GetType ( ) . Name ;
73
71
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 ) ;
82
79
}
83
80
84
81
[ Test ]
85
82
public void CanSetConnection ( )
86
83
{
87
84
var sb = Sfi . WithOptions ( ) ;
88
85
CanSetConnection ( sb ) ;
86
+ CanSetConnectionOnStateless ( Sfi . WithStatelessOptions ( ) ) ;
89
87
using ( var s = sb . OpenSession ( ) )
90
88
{
91
89
CanSetConnection ( s . SessionWithOptions ( ) ) ;
90
+ CanSetConnectionOnStateless ( s . StatelessSessionWithOptions ( ) ) ;
92
91
}
93
92
}
94
93
@@ -136,10 +135,8 @@ private void CanSetConnection<T>(T sb) where T : ISessionBuilder<T>
136
135
}
137
136
}
138
137
139
- [ Test ]
140
- public void CanSetConnectionOnStateless ( )
138
+ private void CanSetConnectionOnStateless < T > ( T sb ) where T : IStatelessSessionBuilder
141
139
{
142
- var sb = Sfi . WithStatelessOptions ( ) ;
143
140
var sbType = sb . GetType ( ) . Name ;
144
141
var conn = Sfi . ConnectionProvider . GetConnection ( ) ;
145
142
try
@@ -150,9 +147,31 @@ public void CanSetConnectionOnStateless()
150
147
Assert . AreEqual ( conn , options . UserSuppliedConnection , $ "{ sbType } : After call with a connection") ;
151
148
Assert . AreEqual ( sb , fsb , $ "{ sbType } : Unexpected fluent return after call with a connection") ;
152
149
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
+ }
156
175
}
157
176
finally
158
177
{
@@ -259,5 +278,25 @@ private void CanSet<T, V>(T sb, Func<V, T> setter, Func<V> getter, Func<ISharedS
259
278
Assert . AreEqual ( sb , fsb , $ "{ sbType } : Unexpected fluent return after call with { value } ") ;
260
279
}
261
280
}
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
+ }
262
301
}
263
302
}
0 commit comments