Skip to content

Commit 34a7a76

Browse files
committed
Tests.Sql: changes in tests
1 parent 0ba7531 commit 34a7a76

14 files changed

Lines changed: 134 additions & 66 deletions

Orm/Xtensive.Orm.Tests.Sql/ChinookTestBase.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,13 @@ protected virtual void CheckRequirements()
120120
{
121121
}
122122

123-
protected static DbCommandExecutionResult GetExecuteDataReaderResult(IDbCommand cmd)
123+
protected DbCommandExecutionResult GetExecuteDataReaderResult(IDbCommand cmd)
124124
{
125125
var result = new DbCommandExecutionResult();
126+
127+
sqlConnection.BeginTransaction();
126128
try {
127-
cmd.Transaction = cmd.Connection.BeginTransaction();
129+
cmd.Transaction = sqlConnection.ActiveTransaction;
128130
var rowCount = 0;
129131
var fieldCount = 0;
130132
var fieldNames = new string[0];
@@ -145,20 +147,21 @@ protected static DbCommandExecutionResult GetExecuteDataReaderResult(IDbCommand
145147
result.FieldNames = fieldNames;
146148
}
147149
finally {
148-
cmd.Transaction.Rollback();
150+
sqlConnection.Rollback();
149151
}
150152
return result;
151153
}
152154

153-
protected static DbCommandExecutionResult GetExecuteNonQueryResult(IDbCommand cmd)
155+
protected DbCommandExecutionResult GetExecuteNonQueryResult(IDbCommand cmd)
154156
{
155157
var result = new DbCommandExecutionResult();
158+
sqlConnection.BeginTransaction();
156159
try {
157-
cmd.Transaction = cmd.Connection.BeginTransaction();
160+
cmd.Transaction = sqlConnection.ActiveTransaction;
158161
result.RowCount = cmd.ExecuteNonQuery();
159162
}
160163
finally {
161-
cmd.Transaction.Rollback();
164+
sqlConnection.Rollback();
162165
}
163166
return result;
164167
}

Orm/Xtensive.Orm.Tests.Sql/CompilerTest.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void UpdateTest01()
5353
update.Values.Add(tableRef.Columns["ModifiedDate"], SqlDml.Literal(DateTime.Now));
5454
Console.WriteLine(Driver.Compile(update).GetCommandText());
5555
using (var command = Connection.CreateCommand(update)) {
56-
command.ExecuteNonQuery();
56+
_ = command.ExecuteNonQuery();
5757
}
5858
}
5959

@@ -66,7 +66,7 @@ public void UpdateTest02()
6666
update.Where = SqlDml.Equals(tableRef.Columns["Name"], SqlDml.Literal("Human Resources Department"));
6767
Console.WriteLine(Driver.Compile(update).GetCommandText());
6868
using (var command = Connection.CreateCommand(update)) {
69-
command.ExecuteNonQuery();
69+
_ = command.ExecuteNonQuery();
7070
}
7171
}
7272

@@ -79,7 +79,7 @@ public void UpdateTest03()
7979
update.Limit = SqlDml.Native("100");
8080
Console.WriteLine(Driver.Compile(update).GetCommandText());
8181
using (var command = Connection.CreateCommand(update)) {
82-
command.ExecuteNonQuery();
82+
_ = command.ExecuteNonQuery();
8383
}
8484
}
8585

@@ -93,7 +93,7 @@ public void UpdateTest04()
9393
update.Limit = SqlDml.Native("100");
9494
Console.WriteLine(Driver.Compile(update).GetCommandText());
9595
using (var command = Connection.CreateCommand(update)) {
96-
command.ExecuteNonQuery();
96+
_ = command.ExecuteNonQuery();
9797
}
9898
}
9999

@@ -104,7 +104,7 @@ public void DeleteTest01()
104104
var update = SqlDml.Delete(tableRef);
105105
Console.WriteLine(Driver.Compile(update).GetCommandText());
106106
using (var command = Connection.CreateCommand(update)) {
107-
command.ExecuteNonQuery();
107+
_ = command.ExecuteNonQuery();
108108
}
109109
}
110110

@@ -116,7 +116,7 @@ public void DeleteTest02()
116116
update.Where = SqlDml.Equals(tableRef.Columns["Name"], SqlDml.Literal("Human Resources Department"));
117117
Console.WriteLine(Driver.Compile(update).GetCommandText());
118118
using (var command = Connection.CreateCommand(update)) {
119-
command.ExecuteNonQuery();
119+
_ = command.ExecuteNonQuery();
120120
}
121121
}
122122

@@ -128,7 +128,7 @@ public void DeleteTest03()
128128
update.Limit = SqlDml.Native("100");
129129
Console.WriteLine(Driver.Compile(update).GetCommandText());
130130
using (var command = Connection.CreateCommand(update)) {
131-
command.ExecuteNonQuery();
131+
_ = command.ExecuteNonQuery();
132132
}
133133
}
134134

@@ -141,7 +141,7 @@ public void DeleteTest04()
141141
update.Limit = SqlDml.Native("100");
142142
Console.WriteLine(Driver.Compile(update).GetCommandText());
143143
using (var command = Connection.CreateCommand(update)) {
144-
command.ExecuteNonQuery();
144+
_ = command.ExecuteNonQuery();
145145
}
146146
}
147147
protected virtual void CreateTables(Catalog catalog)
@@ -255,7 +255,7 @@ private void ExecuteBatch(SqlBatch batch)
255255
if (batch.Count > 0) {
256256
using (var command = Connection.CreateCommand(batch)) {
257257
Console.WriteLine(command.CommandText);
258-
command.ExecuteNonQuery();
258+
_ = command.ExecuteNonQuery();
259259
}
260260
}
261261
return;
@@ -264,7 +264,7 @@ private void ExecuteBatch(SqlBatch batch)
264264
foreach (var query in batch) {
265265
using (var command = Connection.CreateCommand((ISqlCompileUnit) query)) {
266266
Console.WriteLine(command.CommandText);
267-
command.ExecuteNonQuery();
267+
_ = command.ExecuteNonQuery();
268268
}
269269
}
270270
}

Orm/Xtensive.Orm.Tests.Sql/DateTimeIntervalTest.cs

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -168,16 +168,16 @@ public virtual void DateTimeExtractDayOfYearTest()
168168
public virtual void DateOnlyAddYearsTest()
169169
{
170170
CheckEquality(
171-
SqlDml.DateAddYears(DefaultDateOnly, AddYearsConst),
172-
DefaultDateOnly.AddYears(AddYearsConst));
171+
SqlDml.DateAddYears(PrepareDateLiteral(DefaultDateOnly), AddYearsConst),
172+
PrepareDateLiteral(DefaultDateOnly.AddYears(AddYearsConst)));
173173
}
174174

175175
[Test]
176176
public virtual void DateOnlyAddMonthsTest()
177177
{
178178
CheckEquality(
179-
SqlDml.DateAddMonths(DefaultDateOnly, AddMonthsConst),
180-
DefaultDateOnly.AddMonths(AddMonthsConst));
179+
SqlDml.DateAddMonths(PrepareDateLiteral(DefaultDateOnly), AddMonthsConst),
180+
PrepareDateLiteral(DefaultDateOnly.AddMonths(AddMonthsConst)));
181181
}
182182

183183
[Test]
@@ -192,71 +192,71 @@ public virtual void DateOnlyConstructTest()
192192
public virtual void DateOnlyExtractYearTest()
193193
{
194194
CheckEquality(
195-
SqlDml.Extract(SqlDatePart.Year, DefaultDateOnly),
195+
SqlDml.Extract(SqlDatePart.Year, PrepareDateLiteral(DefaultDateOnly)),
196196
DefaultDateOnly.Year);
197197
}
198198

199199
[Test]
200200
public virtual void DateOnlyExtractMonthTest()
201201
{
202202
CheckEquality(
203-
SqlDml.Extract(SqlDatePart.Month, DefaultDateOnly),
203+
SqlDml.Extract(SqlDatePart.Month, PrepareDateLiteral(DefaultDateOnly)),
204204
DefaultDateOnly.Month);
205205
}
206206

207207
[Test]
208208
public virtual void DateOnlyExtractDayTest()
209209
{
210210
CheckEquality(
211-
SqlDml.Extract(SqlDatePart.Day, DefaultDateOnly),
211+
SqlDml.Extract(SqlDatePart.Day, PrepareDateLiteral(DefaultDateOnly)),
212212
DefaultDateOnly.Day);
213213
}
214214

215215
[Test]
216216
public virtual void DateOnlyExtractDayOfWeekTest()
217217
{
218218
CheckEquality(
219-
SqlDml.Extract(SqlDatePart.DayOfWeek, DefaultDateOnly),
219+
SqlDml.Extract(SqlDatePart.DayOfWeek, PrepareDateLiteral(DefaultDateOnly)),
220220
(int) DefaultDateOnly.DayOfWeek);
221221
}
222222

223223
[Test]
224224
public virtual void DateOnlyExtractDayOfYearTest()
225225
{
226226
CheckEquality(
227-
SqlDml.Extract(SqlDatePart.DayOfYear, DefaultDateOnly),
227+
SqlDml.Extract(SqlDatePart.DayOfYear, PrepareDateLiteral(DefaultDateOnly)),
228228
DefaultDateOnly.DayOfYear);
229229
}
230230

231231
[Test]
232232
public virtual void TimeOnlyExtractHourTest()
233233
{
234234
CheckEquality(
235-
SqlDml.Extract(SqlTimePart.Hour, DefaultTimeOnly),
235+
SqlDml.Extract(SqlTimePart.Hour, PrepareTimeLiteral(DefaultTimeOnly)),
236236
DefaultTimeOnly.Hour);
237237
}
238238

239239
[Test]
240240
public virtual void TimeOnlyExtractMinuteTest()
241241
{
242242
CheckEquality(
243-
SqlDml.Extract(SqlTimePart.Minute, DefaultTimeOnly),
243+
SqlDml.Extract(SqlTimePart.Minute, PrepareTimeLiteral(DefaultTimeOnly)),
244244
DefaultTimeOnly.Minute);
245245
}
246246

247247
[Test]
248248
public virtual void TimeOnlyExtractSecondTest()
249249
{
250250
CheckEquality(
251-
SqlDml.Extract(SqlTimePart.Second, DefaultTimeOnly),
251+
SqlDml.Extract(SqlTimePart.Second, PrepareTimeLiteral(DefaultTimeOnly)),
252252
DefaultTimeOnly.Second);
253253
}
254254

255255
[Test]
256256
public virtual void TimeOnlyExtractMillisecondTest()
257257
{
258258
CheckEquality(
259-
SqlDml.Extract(SqlTimePart.Millisecond, DefaultTimeOnly),
259+
SqlDml.Extract(SqlTimePart.Millisecond, PrepareTimeLiteral(DefaultTimeOnly)),
260260
DefaultTimeOnly.Millisecond);
261261
}
262262

@@ -293,7 +293,7 @@ public virtual void TimeOnlyConstructTest2()
293293
public virtual void TimeOnlySubtractTimeOnlyTest()
294294
{
295295
CheckEquality(
296-
SqlDml.TimeMinusTime(DefaultTimeOnly, SecondTimeOnly),
296+
SqlDml.TimeMinusTime(PrepareTimeLiteral(DefaultTimeOnly), PrepareTimeLiteral(SecondTimeOnly)),
297297
DefaultTimeOnly - SecondTimeOnly);
298298
}
299299
#endif
@@ -381,5 +381,23 @@ private SqlExpression PrepareDateTimeLiteral(DateTime value)
381381
}
382382
return SqlDml.Literal(value);
383383
}
384+
#if NET6_0_OR_GREATER
385+
386+
private SqlExpression PrepareDateLiteral(DateOnly value)
387+
{
388+
if (StorageProviderInfo.Instance.CheckProviderIs(StorageProvider.Firebird)) {
389+
return SqlDml.Cast(SqlDml.Literal(value), SqlType.Date);
390+
}
391+
return SqlDml.Literal(value);
392+
}
393+
394+
private SqlExpression PrepareTimeLiteral(TimeOnly value)
395+
{
396+
if (StorageProviderInfo.Instance.CheckProviderIs(StorageProvider.Firebird)) {
397+
return SqlDml.Cast(SqlDml.Literal(value), SqlType.Time);
398+
}
399+
return SqlDml.Literal(value);
400+
}
401+
#endif
384402
}
385403
}

Orm/Xtensive.Orm.Tests.Sql/ExtractorTestBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ protected virtual string GetCheckSequenceExtractionPrepareScript()
393393
public void SequenceExtractionTest()
394394
{
395395
Require.AllFeaturesSupported(Providers.ProviderFeatures.Sequences);
396+
Require.ProviderIsNot(StorageProvider.Firebird, "Sequences in Firebird are very limited in functionality so we set some descriptor values as constants");
396397

397398
var query = GetCheckSequenceExtractionPrepareScript();
398399
RegisterCleanupScript(GetCheckSequenceExtractionCleanupScript);

Orm/Xtensive.Orm.Tests.Sql/Firebird/ChinookTest.cs

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,32 @@ public class ChinookTest : ChinookTestBase
3232
private Schema schema = null;
3333

3434
[OneTimeSetUp]
35+
public override void OneTimeSetUp()
36+
{
37+
base.OneTimeSetUp();
38+
schema = Catalog.DefaultSchema;
39+
}
40+
3541
public override void SetUp()
3642
{
3743
base.SetUp();
3844

3945
dbCommand = sqlConnection.CreateCommand();
4046
sqlCommand = sqlConnection.CreateCommand();
47+
}
4148

42-
schema = Catalog.DefaultSchema;
49+
public override void TearDown()
50+
{
51+
if (dbCommand != null) {
52+
dbCommand.Dispose();
53+
dbCommand = null;
54+
}
55+
if (sqlCommand != null) {
56+
sqlCommand.Dispose();
57+
sqlCommand = null;
58+
}
59+
60+
base.TearDown();
4361
}
4462

4563
protected override void CheckRequirements() => Require.ProviderIs(StorageProvider.Firebird);
@@ -58,7 +76,6 @@ protected virtual bool CompareExecuteDataReader(string commandText, ISqlCompileU
5876
}
5977

6078
sqlCommand.CommandText = compiledCommandText;
61-
sqlCommand.Prepare();
6279

6380
Console.WriteLine(commandText);
6481
dbCommand.CommandText = commandText;
@@ -96,7 +113,6 @@ protected virtual bool CompareExecuteNonQuery(string commandText, ISqlCompileUni
96113
}
97114

98115
sqlCommand.CommandText = compiledCommandText;
99-
sqlCommand.Prepare();
100116

101117
Console.WriteLine(commandText);
102118
dbCommand.CommandText = commandText;
@@ -806,15 +822,17 @@ public void Test037()
806822
}
807823

808824
[Test]
825+
[IgnoreIfGithubActions(
826+
"For some reason it locks table completely when runs on Github Actions making tests falling. Locally it works just fine")]
809827
public void Test038()
810828
{
811829
var nativeSql = "UPDATE \"Invoice\" " +
812-
"SET \"Total\" = \"Total\" * 1 " +
830+
"SET \"Total\" = \"Total\" * 2 " +
813831
"WHERE \"InvoiceId\" = 10;";
814832

815833
var invoice = SqlDml.TableRef(schema.Tables["invoice"]);
816834
var update = SqlDml.Update(invoice);
817-
update.Values[invoice["Total"]] = invoice["Total"] * 1;
835+
update.Values[invoice["Total"]] = invoice["Total"] * 2;
818836
update.Where = invoice["InvoiceId"] == 10;
819837

820838
Assert.IsTrue(CompareExecuteNonQuery(nativeSql, update));

0 commit comments

Comments
 (0)