22using System . Text ;
33using Xunit ;
44using Ydb . Sdk . Ado ;
5+ using Ydb . Sdk . Tests . Ado . Specification ;
6+ using Ydb . Sdk . Tests . Fixture ;
57using Ydb . Sdk . Value ;
68
79namespace Ydb . Sdk . Tests . Ado ;
810
9- public class YdbCommandTests
11+ public class YdbCommandTests : YdbAdoNetFixture
1012{
13+ public YdbCommandTests ( YdbFactoryFixture fixture ) : base ( fixture )
14+ {
15+ }
16+
1117 [ Theory ]
1218 [ ClassData ( typeof ( YdbParameterTests . TestDataGenerator ) ) ]
1319 public async Task ExecuteScalarAsync_WhenSetYdbParameter_ReturnThisValue < T > ( YdbParameterTests . Data < T > data )
1420 {
15- await using var connection = new YdbConnection ( ) ;
16- await connection . OpenAsync ( ) ;
17-
21+ await using var connection = await CreateOpenConnectionAsync ( ) ;
1822 var dbCommand = connection . CreateCommand ( ) ;
19-
20- dbCommand . CommandText = "SELECT $var as var;" ;
23+ dbCommand . CommandText = "SELECT @var as var;" ;
2124
2225 var dbParameter = new YdbParameter
2326 {
24- ParameterName = "$ var" ,
27+ ParameterName = "var" ,
2528 DbType = data . DbType ,
2629 Value = data . Expected ,
2730 IsNullable = data . IsNullable
@@ -48,11 +51,8 @@ public async Task ExecuteScalarAsync_WhenSetYdbParameter_ReturnThisValue<T>(YdbP
4851 public async Task ExecuteScalarAsync_WhenSetYdbParameterThenPrepare_ReturnThisValue < T > (
4952 YdbParameterTests . Data < T > data )
5053 {
51- await using var connection = new YdbConnection ( ) ;
52- await connection . OpenAsync ( ) ;
53-
54+ await using var connection = await CreateOpenConnectionAsync ( ) ;
5455 var dbCommand = connection . CreateCommand ( ) ;
55-
5656 dbCommand . CommandText = "SELECT @var;" ;
5757
5858 var dbParameter = new YdbParameter
@@ -76,11 +76,8 @@ public async Task ExecuteScalarAsync_WhenDbTypeIsObject_ReturnThisValue<T>(YdbPa
7676 return ;
7777 }
7878
79- await using var connection = new YdbConnection ( ) ;
80- await connection . OpenAsync ( ) ;
81-
79+ await using var connection = await CreateOpenConnectionAsync ( ) ;
8280 var dbCommand = connection . CreateCommand ( ) ;
83-
8481 dbCommand . CommandText = "SELECT @var;" ;
8582
8683 var dbParameter = new YdbParameter
@@ -112,9 +109,7 @@ public async Task ExecuteScalarAsync_WhenNoDbTypeParameter_ReturnThisValue()
112109 Encoding . ASCII . GetBytes ( "{type=\" yson\" }" ) )
113110 } ;
114111
115- await using var connection = new YdbConnection ( ) ;
116- await connection . OpenAsync ( ) ;
117-
112+ await using var connection = await CreateOpenConnectionAsync ( ) ;
118113 var dbCommand = connection . CreateCommand ( ) ;
119114 dbCommand . CommandText = "SELECT @var;" ;
120115
@@ -133,24 +128,18 @@ public async Task ExecuteScalarAsync_WhenNoDbTypeParameter_ReturnThisValue()
133128 [ Fact ]
134129 public async Task ExecuteNonQueryAsync_WhenCreateUser_ReturnEmptyResultSet ( )
135130 {
136- await using var connection = new YdbConnection ( ) ;
137- await connection . OpenAsync ( ) ;
138-
131+ await using var connection = await CreateOpenConnectionAsync ( ) ;
139132 var dbCommand = connection . CreateCommand ( ) ;
140133 dbCommand . CommandText = "CREATE USER user PASSWORD '123qweqwe'" ;
141-
142134 await dbCommand . ExecuteNonQueryAsync ( ) ;
143-
144135 dbCommand . CommandText = "DROP USER user;" ;
145136 await dbCommand . ExecuteNonQueryAsync ( ) ;
146137 }
147138
148139 [ Fact ]
149140 public async Task CloseAsync_WhenDoubleInvoke_Idempotent ( )
150141 {
151- await using var connection = new YdbConnection ( ) ;
152- await connection . OpenAsync ( ) ;
153-
142+ await using var connection = await CreateOpenConnectionAsync ( ) ;
154143 var ydbCommand = connection . CreateCommand ( ) ;
155144 ydbCommand . CommandText = "SELECT 1;" ;
156145 var ydbDataReader = await ydbCommand . ExecuteReaderAsync ( ) ;
@@ -165,19 +154,20 @@ public async Task CloseAsync_WhenDoubleInvoke_Idempotent()
165154 [ Fact ]
166155 public async Task ExecuteDbDataReader_WhenSelectManyResultSet_ReturnYdbDataReader ( )
167156 {
168- await using var connection = new YdbConnection ( ) ;
169- await connection . OpenAsync ( ) ;
170-
157+ await using var connection = await CreateOpenConnectionAsync ( ) ;
171158 var dbCommand = connection . CreateCommand ( ) ;
172159 dbCommand . CommandText = @"
160+ DECLARE $var1 AS Datetime;
161+ DECLARE $var2 AS Timestamp;
162+
173163SELECT 1 as a, CAST('text' AS Text) as b;
174164
175165$data = ListReplicate(AsStruct(true AS bool_field, 1.5 AS double_field, 23 AS int_field), 1500);
176166
177167SELECT bool_field, double_field, int_field FROM AS_TABLE($data);
178168
179- SELECT CAST(NULL AS Int8) AS null_field;
180-
169+ SELECT CAST(NULL AS Int8) AS null_field;
170+
181171$new_data = AsList(
182172 AsStruct($var1 AS Key, $var2 AS Value),
183173 AsStruct($var1 AS Key, $var2 AS Value)
@@ -258,25 +248,18 @@ public async Task ExecuteDbDataReader_WhenSelectManyResultSet_ReturnYdbDataReade
258248 [ Fact ]
259249 public void CommandTimeout_WhenCommandTimeoutLessZero_ThrowException ( )
260250 {
261- using var connection = new YdbConnection ( ) ;
262- connection . Open ( ) ;
263-
251+ using var connection = CreateOpenConnection ( ) ;
264252 var dbCommand = connection . CreateCommand ( ) ;
265-
266253 Assert . Equal ( "CommandTimeout can't be less than zero. (Parameter 'value')\n Actual value was -1." ,
267254 Assert . Throws < ArgumentOutOfRangeException > ( ( ) => dbCommand . CommandTimeout = - 1 ) . Message ) ;
268255 }
269256
270257 [ Fact ]
271258 public void ExecuteDbDataReader_WhenPreviousIsNotClosed_ThrowException ( )
272259 {
273- using var connection = new YdbConnection ( ) ;
274- connection . Open ( ) ;
275-
260+ using var connection = CreateOpenConnection ( ) ;
276261 var dbCommand = connection . CreateCommand ( ) ;
277-
278262 dbCommand . CommandText = "SELECT 1; SELECT 1;" ;
279-
280263 var ydbDataReader = dbCommand . ExecuteReader ( ) ;
281264
282265 Assert . Equal ( "A command is already in progress: SELECT 1; SELECT 1;" ,
@@ -292,8 +275,7 @@ public void ExecuteDbDataReader_WhenPreviousIsNotClosed_ThrowException()
292275 [ Fact ]
293276 public void GetChars_WhenSelectText_MoveCharsToBuffer ( )
294277 {
295- using var connection = new YdbConnection ( ) ;
296- connection . Open ( ) ;
278+ using var connection = ( YdbConnection ) CreateOpenConnection ( ) ;
297279 var ydbDataReader =
298280 new YdbCommand ( connection ) { CommandText = "SELECT CAST('abacaba' AS Text)" } . ExecuteReader ( ) ;
299281 Assert . True ( ydbDataReader . Read ( ) ) ;
@@ -342,8 +324,7 @@ public void GetChars_WhenSelectText_MoveCharsToBuffer()
342324 [ Fact ]
343325 public void GetBytes_WhenSelectBytes_MoveBytesToBuffer ( )
344326 {
345- using var connection = new YdbConnection ( ) ;
346- connection . Open ( ) ;
327+ using var connection = ( YdbConnection ) CreateOpenConnection ( ) ;
347328 var ydbDataReader = new YdbCommand ( connection ) { CommandText = "SELECT 'abacaba'" } . ExecuteReader ( ) ;
348329 Assert . True ( ydbDataReader . Read ( ) ) ;
349330 var bufferChars = new byte [ 10 ] ;
@@ -389,8 +370,7 @@ public void GetBytes_WhenSelectBytes_MoveBytesToBuffer()
389370 [ Fact ]
390371 public async Task GetEnumerator_WhenReadMultiSelect_ReadFirstResultSet ( )
391372 {
392- await using var ydbConnection = new YdbConnection ( ) ;
393- ydbConnection . Open ( ) ;
373+ await using var ydbConnection = await CreateOpenConnectionAsync ( ) ;
394374 var ydbCommand = new YdbCommand ( ydbConnection )
395375 {
396376 CommandText = @"
@@ -432,9 +412,7 @@ public async Task GetEnumerator_WhenReadMultiSelect_ReadFirstResultSet()
432412 [ Fact ]
433413 public async Task ExecuteScalar_WhenSelectNull_ReturnNull ( )
434414 {
435- await using var ydbConnection = new YdbConnection ( ) ;
436- await ydbConnection . OpenAsync ( ) ;
437-
415+ await using var ydbConnection = await CreateOpenConnectionAsync ( ) ;
438416 Assert . Null ( await new YdbCommand ( ydbConnection ) { CommandText = "SELECT NULL" } . ExecuteScalarAsync ( ) ) ;
439417 }
440418
@@ -444,9 +422,7 @@ public async Task ExecuteScalar_WhenSelectNull_ReturnNull()
444422 [ InlineData ( "6E73B41C-4EDE-4D08-9CFB-B7462D9E498B" ) ]
445423 public async Task Guid_WhenSelectUuid_ReturnThisUuid ( string guid )
446424 {
447- await using var ydbConnection = new YdbConnection ( ) ;
448- await ydbConnection . OpenAsync ( ) ;
449-
425+ await using var ydbConnection = await CreateOpenConnectionAsync ( ) ;
450426 var actualGuid = await new YdbCommand ( ydbConnection )
451427 { CommandText = $ "SELECT CAST('{ guid } ' AS UUID);" }
452428 . ExecuteScalarAsync ( ) ;
@@ -461,9 +437,7 @@ public async Task Guid_WhenSelectUuid_ReturnThisUuid(string guid)
461437 [ InlineData ( "6E73B41C-4EDE-4D08-9CFB-B7462D9E498B" ) ]
462438 public async Task Guid_WhenSetUuid_ReturnThisUtf8Uuid ( string guid )
463439 {
464- await using var ydbConnection = new YdbConnection ( ) ;
465- await ydbConnection . OpenAsync ( ) ;
466-
440+ await using var ydbConnection = await CreateOpenConnectionAsync ( ) ;
467441 var ydbCommand = new YdbCommand ( ydbConnection )
468442 {
469443 CommandText = "SELECT CAST(@guid AS Text);"
0 commit comments