Skip to content

Commit 4987eef

Browse files
committed
Fix test for some storages
- Correct low-level query for Firebird - Right exception to expect for Firebird and Mysql
1 parent e960e3b commit 4987eef

2 files changed

Lines changed: 52 additions & 30 deletions

File tree

Orm/Xtensive.Orm.Tests/Storage/FailedQueryAndDbCommandNotificationsTest.cs

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// Copyright (C) 2017 Xtensive LLC.
2-
// All rights reserved.
3-
// For conditions of distribution and use, see license.
1+
// Copyright (C) 2017-2021 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
44
// Created by: Julian Mamokin
55
// Created: 2017.02.08
66

@@ -38,75 +38,92 @@ public class FailedQueryAndDbCommandNotificationsTest : AutoBuildTest
3838
public void InvalidQueryTest()
3939
{
4040
Exception thrownException = null;
41-
EventHandler<QueryEventArgs> invalidQueryHandler = (sender, args) => {thrownException = args.Exception;};
4241
using (var session = Domain.OpenSession()) {
43-
session.Events.QueryExecuted += invalidQueryHandler;
44-
using (session.OpenTransaction())
45-
Assert.Throws<InvalidOperationException>(() => session.Query.All<TestModel>().Single(m => m.SomeStringField=="lol"));
46-
session.Events.QueryExecuted -= invalidQueryHandler;
42+
session.Events.QueryExecuted += InvalidQueryHandler;
43+
using (session.OpenTransaction()) {
44+
_ = Assert.Throws<InvalidOperationException>(() => session.Query.All<TestModel>().Single(m => m.SomeStringField == "lol"));
45+
}
46+
session.Events.QueryExecuted -= InvalidQueryHandler;
4747
Assert.IsNotNull(thrownException);
4848
Assert.AreSame(typeof (InvalidOperationException), thrownException.GetType());
4949
}
50+
51+
void InvalidQueryHandler(object sender, QueryEventArgs args)
52+
{
53+
thrownException = args.Exception;
54+
}
5055
}
5156

5257
[Test]
5358
public void ValidQueryTest()
5459
{
55-
EventHandler<QueryEventArgs> validQueryHandler = (sender, args) => { Assert.IsNull(args.Exception); };
5660
using (var session = Domain.OpenSession()) {
57-
session.Events.QueryExecuted += validQueryHandler;
61+
session.Events.QueryExecuted += ValidQueryHandler;
5862
using (session.OpenTransaction())
5963
Assert.DoesNotThrow(() => session.Query.All<TestModel>().Single(m => m.SomeStringField=="string1"));
60-
session.Events.QueryExecuted -= validQueryHandler;
64+
session.Events.QueryExecuted -= ValidQueryHandler;
65+
}
66+
67+
static void ValidQueryHandler(object sender, QueryEventArgs args)
68+
{
69+
Assert.IsNull(args.Exception);
6170
}
6271
}
6372

6473
[Test]
6574
public void InvalidDbCommandTest()
6675
{
6776
Exception commandExecutedException = null;
68-
EventHandler<DbCommandEventArgs> invalidDbCommandHandler = (sender, args) => { commandExecutedException = args.Exception; };
6977
using (var session = Domain.OpenSession()) {
7078
using (session.OpenTransaction()) {
71-
new TestModel { SomeStringField = "wat", SomeDateTimeField = DateTime.Now, UniqueValue = 1 };
79+
_ = new TestModel { SomeStringField = "wat", SomeDateTimeField = DateTime.Now, UniqueValue = 1 };
7280
var expectedException = GetUniqueConstraintViolationExceptionType();
73-
session.Events.DbCommandExecuted += invalidDbCommandHandler;
74-
Assert.Throws(expectedException, () => session.SaveChanges());
75-
session.Events.DbCommandExecuted -= invalidDbCommandHandler;
81+
session.Events.DbCommandExecuted += InvalidDbCommandHandler;
82+
_ = Assert.Throws(expectedException, () => session.SaveChanges());
83+
session.Events.DbCommandExecuted -= InvalidDbCommandHandler;
7684
Assert.NotNull(commandExecutedException);
7785
Assert.AreEqual(expectedException, commandExecutedException.GetType());
7886
}
7987
}
88+
89+
void InvalidDbCommandHandler(object sender, DbCommandEventArgs args)
90+
{
91+
commandExecutedException = args.Exception;
92+
}
8093
}
8194

8295
[Test]
8396
public void ValidDbCommandTest()
8497
{
85-
EventHandler<DbCommandEventArgs> validDbCommandHandler = (sender, args) => { Assert.IsNull(args.Exception); };
8698
using (var session = Domain.OpenSession()) {
8799
using (session.OpenTransaction()) {
88-
new TestModel { SomeStringField = "wat", SomeDateTimeField = DateTime.Now, UniqueValue = 3 };
89-
new TestModel { SomeStringField = "dat", SomeDateTimeField = DateTime.Now, UniqueValue = 4 };
90-
session.Events.DbCommandExecuted += validDbCommandHandler;
100+
_ = new TestModel { SomeStringField = "wat", SomeDateTimeField = DateTime.Now, UniqueValue = 3 };
101+
_ = new TestModel { SomeStringField = "dat", SomeDateTimeField = DateTime.Now, UniqueValue = 4 };
102+
session.Events.DbCommandExecuted += ValidDbCommandHandler;
91103
Assert.DoesNotThrow(() => session.SaveChanges());
92-
session.Events.DbCommandExecuted -= validDbCommandHandler;
104+
session.Events.DbCommandExecuted -= ValidDbCommandHandler;
93105
}
94106
}
107+
108+
static void ValidDbCommandHandler(object sender, DbCommandEventArgs args)
109+
{
110+
Assert.IsNull(args.Exception);
111+
}
95112
}
96113

97114
protected override void PopulateData()
98115
{
99116
using(var session = Domain.OpenSession())
100117
using (var transaction = session.OpenTransaction()) {
101-
new TestModel { SomeStringField = "string1", SomeDateTimeField = DateTime.Now, UniqueValue = 1 };
118+
_ = new TestModel { SomeStringField = "string1", SomeDateTimeField = DateTime.Now, UniqueValue = 1 };
102119
transaction.Complete();
103120
}
104121
}
105122

106123
protected override DomainConfiguration BuildConfiguration()
107124
{
108125
var configuration = base.BuildConfiguration();
109-
configuration.Types.Register(typeof (TestModel).Assembly, typeof (TestModel).Namespace);
126+
configuration.Types.Register(typeof(TestModel).Assembly, typeof(TestModel).Namespace);
110127
configuration.UpgradeMode = DomainUpgradeMode.Recreate;
111128
return configuration;
112129
}
@@ -115,12 +132,10 @@ private Type GetUniqueConstraintViolationExceptionType()
115132
{
116133
var providerName = ProviderInfo.ProviderName;
117134
switch (providerName) {
118-
case WellKnown.Provider.MySql:
119135
case WellKnown.Provider.Sqlite:
120-
case WellKnown.Provider.Firebird:
121-
return typeof (StorageException);
136+
return typeof(StorageException);
122137
default:
123-
return typeof (UniqueConstraintViolationException);
138+
return typeof(UniqueConstraintViolationException);
124139
}
125140
}
126141
}

Orm/Xtensive.Orm.Tests/Storage/QueryBuilderTest.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2012-2020 Xtensive LLC.
1+
// Copyright (C) 2012-2021 Xtensive LLC.
22
// This code is distributed under MIT license terms.
33
// See the License.txt file in the project root for more information.
44
// Created by: Denis Krjuchkov
@@ -37,7 +37,7 @@ protected override void PopulateData()
3737
{
3838
using (var session = Domain.OpenSession())
3939
using (var tx = session.OpenTransaction()) {
40-
new CheckEntity();
40+
_ = new CheckEntity();
4141
tx.Complete();
4242
}
4343
}
@@ -86,7 +86,14 @@ public void ComposeQuery()
8686
Assert.That(builder, Is.Not.Null);
8787

8888
var binding = builder.CreateParameterBinding(typeof(int), () => 43);
89-
var select = SqlDml.Select(binding.ParameterReference);
89+
SqlSelect select;
90+
if (StorageProviderInfo.Instance.CheckProviderIs(StorageProvider.Firebird)) {
91+
//require cast of parameters on sql level
92+
select = SqlDml.Select(SqlDml.Cast(binding.ParameterReference, SqlType.Int32));
93+
}
94+
else {
95+
select = SqlDml.Select(binding.ParameterReference);
96+
}
9097

9198
var compiled = builder.CompileQuery(select);
9299
Assert.That(compiled, Is.Not.Null);

0 commit comments

Comments
 (0)