Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 4f7ab0c

Browse files
committed
Change tests so they work with db providers with alt naming strategy (i.e. pgsql)
1 parent 3bef2d1 commit 4f7ab0c

30 files changed

+280
-207
lines changed

tests/ServiceStack.OrmLite.Tests/CustomSqlTests.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,12 @@ public void Can_create_field_with_custom_sql()
7272
{
7373
db.DropAndCreateTable<PocoTable>();
7474

75-
var createTableSql = db.GetLastSql().Replace("NULL","null");
75+
var createTableSql = db.GetLastSql().NormalizeSql();
76+
7677
createTableSql.Print();
7778

78-
Assert.That(createTableSql, Is.StringContaining("\"CharColumn\" CHAR(20) null")
79-
.Or.StringContaining("CharColumn CHAR(20) null"));
80-
Assert.That(createTableSql, Is.StringContaining("\"DecimalColumn\" DECIMAL(18,4) null")
81-
.Or.StringContaining("DecimalColumn DECIMAL(18,4) null"));
79+
Assert.That(createTableSql, Is.StringContaining("charcolumn char(20) null"));
80+
Assert.That(createTableSql, Is.StringContaining("decimalcolumn decimal(18,4) null"));
8281
}
8382
}
8483

@@ -94,7 +93,7 @@ public void Does_execute_CustomSql_before_table_created()
9493
}
9594
catch (Exception)
9695
{
97-
Assert.That(!db.TableExists("ModelWithPreCreateSql"));
96+
Assert.That(!db.TableExists("ModelWithPreCreateSql".SqlColumn()));
9897
}
9998
}
10099
}
@@ -103,6 +102,7 @@ public void Does_execute_CustomSql_before_table_created()
103102
public void Does_execute_CustomSql_after_table_created()
104103
{
105104
SuppressIfOracle("For Oracle need wrap multiple SQL statements in an anonymous block");
105+
if (Dialect == Dialect.PostgreSql || Dialect == Dialect.Oracle) return;
106106

107107
using (var db = OpenDbConnection())
108108
{
@@ -121,8 +121,8 @@ public void Does_execute_CustomSql_after_table_created_using_dynamic_attribute()
121121

122122
typeof(DynamicAttributeSeedData)
123123
.AddAttributes(new PostCreateTableAttribute(
124-
"INSERT INTO DynamicAttributeSeedData (Name) VALUES ('Foo');" +
125-
"INSERT INTO DynamicAttributeSeedData (Name) VALUES ('Bar');"));
124+
"INSERT INTO {0} (Name) VALUES ('Foo');".Fmt("DynamicAttributeSeedData".SqlTable()) +
125+
"INSERT INTO {0} (Name) VALUES ('Bar');".Fmt("DynamicAttributeSeedData".SqlTable())));
126126

127127
using (var db = OpenDbConnection())
128128
{
@@ -147,7 +147,7 @@ public void Does_execute_CustomSql_before_table_dropped()
147147
}
148148
catch (Exception)
149149
{
150-
Assert.That(db.TableExists("ModelWithPreDropSql"));
150+
Assert.That(db.TableExists("ModelWithPreDropSql".SqlTableRaw()));
151151
}
152152
}
153153
}

tests/ServiceStack.OrmLite.Tests/DateTimeOffsetTests.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Data;
34
using System.Linq;
45
using NUnit.Framework;
@@ -73,5 +74,47 @@ private interface IDateTimeOffsetObject<T>
7374
int Id { get; set; }
7475
T Test { get; set; }
7576
}
77+
78+
79+
public class HasDateTimeOffsetMemeber
80+
{
81+
public DateTimeOffset MomentInTime { get; set; }
82+
}
83+
84+
public class HasNullableDateTimeOffsetMemeber
85+
{
86+
public DateTimeOffset? MomentInTime { get; set; }
87+
}
88+
89+
[Test]
90+
public void CanPersistAndRetrieveDateTimeOffset()
91+
{
92+
var now = DateTimeOffset.Now;
93+
94+
db.DropAndCreateTable<HasDateTimeOffsetMemeber>();
95+
db.Insert(new HasDateTimeOffsetMemeber { MomentInTime = now });
96+
97+
List<HasDateTimeOffsetMemeber> list = db.Select<HasDateTimeOffsetMemeber>();
98+
99+
Assert.That(list.Count == 1);
100+
var actual = list.First().MomentInTime;
101+
Assert.That(actual.Date, Is.EqualTo(now.Date));
102+
}
103+
104+
[Test]
105+
public void CanPersistAndRetrieveNullableDateTimeOffset()
106+
{
107+
var now = DateTimeOffset.Now;
108+
109+
db.DropAndCreateTable<HasNullableDateTimeOffsetMemeber>();
110+
db.Insert(new HasNullableDateTimeOffsetMemeber { MomentInTime = now });
111+
112+
List<HasNullableDateTimeOffsetMemeber> list = db.Select<HasNullableDateTimeOffsetMemeber>();
113+
114+
Assert.That(list.Count == 1);
115+
var actual = list.First().MomentInTime;
116+
Assert.That(actual.HasValue);
117+
Assert.That(actual.Value.Date, Is.EqualTo(now.Date));
118+
}
76119
}
77120
}

tests/ServiceStack.OrmLite.Tests/EnumTests.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ public void CanQueryByEnumValue_using_select_with_string()
6666
con.Save(new TypeWithEnum { Id = 2, EnumValue = SomeEnum.Value1 });
6767
con.Save(new TypeWithEnum { Id = 3, EnumValue = SomeEnum.Value2 });
6868

69-
var target = con.SelectFmt<TypeWithEnum>("EnumValue = {0}", SomeEnum.Value1);
69+
var target = con.SelectFmt<TypeWithEnum>(
70+
"EnumValue".SqlColumn() + " = {0}", SomeEnum.Value1);
7071

7172
Assert.AreEqual(2, target.Count());
7273
}
@@ -113,7 +114,8 @@ public void StoresFlagEnumsAsNumericValues()
113114
try
114115
{
115116
var expectedFlags = (int)(FlagsEnum.FlagOne | FlagsEnum.FlagTwo | FlagsEnum.FlagThree);
116-
Assert.AreEqual(db.Scalar<int>("SELECT Flags FROM TypeWithFlagsEnum WHERE Id = 1"), expectedFlags);
117+
Assert.AreEqual(db.Scalar<int>("SELECT Flags FROM {0} WHERE Id = 1"
118+
.Fmt("TypeWithFlagsEnum".SqlColumn())), expectedFlags);
117119
}
118120
catch (FormatException)
119121
{
@@ -131,9 +133,10 @@ public void Creates_int_field_for_enum_flags()
131133
{
132134
db.DropAndCreateTable<TypeWithFlagsEnum>();
133135

134-
db.GetLastSql().Print();
136+
var createTableSql = db.GetLastSql().NormalizeSql();
137+
createTableSql.Print();
135138

136-
Assert.That(db.GetLastSql(), Is.StringContaining("\"Flags\" INT").Or.StringContaining("Flags INT"));
139+
Assert.That(createTableSql, Is.StringContaining("flags int"));
137140
}
138141
}
139142

tests/ServiceStack.OrmLite.Tests/Expression/ExpressionsTestBase.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Data;
23
using System.IO;
34
using System.Linq;
45
using NUnit.Framework;
@@ -10,7 +11,34 @@ public class ExpressionsTestBase : OrmLiteTestBase
1011
[SetUp]
1112
public void Setup()
1213
{
13-
OpenDbConnection().DropAndCreateTable<TestType>();
14+
OpenDbConnection().CreateTable<TestType>(true);
15+
}
16+
17+
//Avoid painful refactor to change all tests to use a using pattern
18+
private IDbConnection db;
19+
20+
public override IDbConnection OpenDbConnection(string connString = null)
21+
{
22+
try
23+
{
24+
if (db != null && db.State != ConnectionState.Open)
25+
db = null;
26+
}
27+
catch (ObjectDisposedException) //PostgreSQL throws when trying to inspect db.State on a disposed connection. WHY???
28+
{
29+
db = null;
30+
}
31+
32+
return db ?? (db = base.OpenDbConnection(connString));
33+
}
34+
35+
[TearDown]
36+
public void TearDown()
37+
{
38+
if (db == null)
39+
return;
40+
db.Dispose();
41+
db = null;
1442
}
1543

1644
public T GetValue<T>(T item)

tests/ServiceStack.OrmLite.Tests/Expression/FromExpressionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void Can_select_from_custom_FROM_expression()
3030
{
3131
Init(db);
3232

33-
var results = db.Select(db.From<Person>("Person INNER JOIN Band ON Person.Id = Band.PersonId"));
33+
var results = db.Select(db.From<Person>("Person INNER JOIN Band ON Person.Id = Band.{0}".Fmt("PersonId".SqlColumn())));
3434

3535
Assert.That(results.Count, Is.EqualTo(2));
3636
Assert.That(results.ConvertAll(x => x.FirstName), Is.EquivalentTo(new[] { "Kurt", "Jim" }));

tests/ServiceStack.OrmLite.Tests/Expression/SelectExpressionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public void Can_select_Partial_SQL_Statements()
128128

129129

130130
partialDto = db.Select<Shipper>(q =>
131-
q.Select("Phone, CompanyName")
131+
q.Select("Phone, " + "CompanyName".SqlColumn())
132132
.Where(x => x.ShipperTypeId == 2));
133133

134134
Assert.That(partialDto.Map(x => x.Phone),

tests/ServiceStack.OrmLite.Tests/Expression/SqlExpressionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void Can_select_Dictionary_with_SqlExpression()
4646

4747
query.ToSelectStatement().Print();
4848

49-
var map = db.Dictionary<string, int>(query);
49+
var map = new SortedDictionary<string, int>(db.Dictionary<string, int>(query));
5050
Assert.That(map.EquivalentTo(new Dictionary<string, int> {
5151
{ "A", 1 }, { "B", 2 }, { "C", 3 },
5252
}));

tests/ServiceStack.OrmLite.Tests/ForeignKeyAttributeTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ public void CanCreateForeignWithOnDeleteRestrict()
9797
[Test]
9898
public void CanCreateForeignWithOnDeleteSetDefault()
9999
{
100+
if (OrmLiteConfig.DialectProvider == MySqlDialect.Provider)
101+
{
102+
//ignoring Not supported in InnoDB: http://stackoverflow.com/a/1498015/85785
103+
return;
104+
}
105+
100106
using (var dbConn = OpenDbConnection())
101107
{
102108
dbConn.DropAndCreateTable<TypeWithOnDeleteSetDefault>();

tests/ServiceStack.OrmLite.Tests/JoinSqlBuilderTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,22 @@ public class Address
5454
public void FieldNameLeftJoinTest ()
5555
{
5656
var joinQuery = new JoinSqlBuilder<User, User> ().LeftJoin<User, Address> (x => x.Id, x => x.UserId).ToSql ();
57-
var expected = "SELECT \"User\".\"Id\",\"User\".\"Name\",\"User\".\"Age\" \nFROM \"User\" \n LEFT OUTER JOIN \"Address\" ON \"User\".\"Id\" = \"Address\".\"UserId\" \n";
58-
var expectedNq = "SELECT \"User\".Id,\"User\".Name,\"User\".Age \nFROM \"User\" \n LEFT OUTER JOIN Address ON \"User\".Id = Address.UserId \n";
57+
var expected = "SELECT \"User\".\"Id\",\"User\".\"Name\",\"User\".\"Age\" \nFROM \"User\" \n LEFT OUTER JOIN \"Address\" ON \"User\".\"Id\" = \"Address\".\"UserId\" \n".NormalizeSql();
58+
var expectedNq = "SELECT \"User\".Id,\"User\".Name,\"User\".Age \nFROM \"User\" \n LEFT OUTER JOIN Address ON \"User\".Id = Address.UserId \n".NormalizeSql();
5959

60-
Assert.That(joinQuery, Is.EqualTo(expected).Or.EqualTo(expectedNq));
60+
Assert.That(joinQuery.NormalizeSql(), Is.EqualTo(expected).Or.EqualTo(expectedNq));
6161

6262
joinQuery = new JoinSqlBuilder<WithAliasUser, WithAliasUser> ().LeftJoin<WithAliasUser, WithAliasAddress> (x => x.Id, x => x.UserId).ToSql ();
63-
expected = "SELECT \"Users\".\"Id\",\"Users\".\"Nickname\",\"Users\".\"Agealias\" \nFROM \"Users\" \n LEFT OUTER JOIN \"Addresses\" ON \"Users\".\"Id\" = \"Addresses\".\"UserId\" \n";
64-
expectedNq = "SELECT Users.Id,Users.Nickname,Users.Agealias \nFROM Users \n LEFT OUTER JOIN Addresses ON Users.Id = Addresses.UserId \n";
63+
expected = "SELECT \"Users\".\"Id\",\"Users\".\"Nickname\",\"Users\".\"Agealias\" \nFROM \"Users\" \n LEFT OUTER JOIN \"Addresses\" ON \"Users\".\"Id\" = \"Addresses\".\"UserId\" \n".NormalizeSql();
64+
expectedNq = "SELECT Users.Id,Users.Nickname,Users.Agealias \nFROM Users \n LEFT OUTER JOIN Addresses ON Users.Id = Addresses.UserId \n".NormalizeSql();
6565

66-
Assert.That(joinQuery, Is.EqualTo(expected).Or.EqualTo(expectedNq));
66+
Assert.That(joinQuery.NormalizeSql(), Is.EqualTo(expected).Or.EqualTo(expectedNq));
6767

6868
joinQuery = new JoinSqlBuilder<User, User> ().LeftJoin<User, WithAliasAddress> (x => x.Id, x => x.UserId).ToSql ();
69-
expected = "SELECT \"User\".\"Id\",\"User\".\"Name\",\"User\".\"Age\" \nFROM \"User\" \n LEFT OUTER JOIN \"Addresses\" ON \"User\".\"Id\" = \"Addresses\".\"UserId\" \n";
70-
expectedNq = "SELECT \"User\".Id,\"User\".Name,\"User\".Age \nFROM \"User\" \n LEFT OUTER JOIN Addresses ON \"User\".Id = Addresses.UserId \n";
69+
expected = "SELECT \"User\".\"Id\",\"User\".\"Name\",\"User\".\"Age\" \nFROM \"User\" \n LEFT OUTER JOIN \"Addresses\" ON \"User\".\"Id\" = \"Addresses\".\"UserId\" \n".NormalizeSql();
70+
expectedNq = "SELECT \"User\".Id,\"User\".Name,\"User\".Age \nFROM \"User\" \n LEFT OUTER JOIN Addresses ON \"User\".Id = Addresses.UserId \n".NormalizeSql();
7171

72-
Assert.That(joinQuery, Is.EqualTo(expected).Or.EqualTo(expectedNq));
72+
Assert.That(joinQuery.NormalizeSql(), Is.EqualTo(expected).Or.EqualTo(expectedNq));
7373
}
7474

7575
[Test]
@@ -78,10 +78,10 @@ public void DoubleWhereLeftJoinTest ()
7878
var joinQuery = new JoinSqlBuilder<User, User>().LeftJoin<User, WithAliasAddress>(x => x.Id, x => x.UserId
7979
, sourceWhere: x => x.Age > 18
8080
, destinationWhere: x => x.Country == "Italy").ToSql ();
81-
var expected = "SELECT \"User\".\"Id\",\"User\".\"Name\",\"User\".\"Age\" \nFROM \"User\" \n LEFT OUTER JOIN \"Addresses\" ON \"User\".\"Id\" = \"Addresses\".\"UserId\" \nWHERE (\"User\".\"Age\" > 18) AND (\"Addresses\".\"Countryalias\" = 'Italy') \n";
82-
var expectedNq = "SELECT \"User\".Id,\"User\".Name,\"User\".Age \nFROM \"User\" \n LEFT OUTER JOIN Addresses ON \"User\".Id = Addresses.UserId \nWHERE (\"User\".Age > 18) AND (Addresses.Countryalias = 'Italy') \n";
81+
var expected = "SELECT \"User\".\"Id\",\"User\".\"Name\",\"User\".\"Age\" \nFROM \"User\" \n LEFT OUTER JOIN \"Addresses\" ON \"User\".\"Id\" = \"Addresses\".\"UserId\" \nWHERE (\"User\".\"Age\" > 18) AND (\"Addresses\".\"Countryalias\" = 'Italy') \n".NormalizeSql();
82+
var expectedNq = "SELECT \"User\".Id,\"User\".Name,\"User\".Age \nFROM \"User\" \n LEFT OUTER JOIN Addresses ON \"User\".Id = Addresses.UserId \nWHERE (\"User\".Age > 18) AND (Addresses.Countryalias = 'Italy') \n".NormalizeSql();
8383

84-
Assert.That(joinQuery, Is.EqualTo(expected).Or.EqualTo(expectedNq));
84+
Assert.That(joinQuery.NormalizeSql(), Is.EqualTo(expected).Or.EqualTo(expectedNq));
8585

8686
var stmt = OrmLiteConfig.DialectProvider.ToSelectStatement(typeof(User), joinQuery);
8787
Assert.That(Regex.Matches(stmt, @"(\b|\n)FROM(\b|\n)", RegexOptions.IgnoreCase).Count, Is.EqualTo(1));

tests/ServiceStack.OrmLite.Tests/LoadReferencesTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ public void TestFixtureTearDown()
7575
public void Does_not_include_complex_reference_type_in_sql()
7676
{
7777
db.Select<Customer>();
78-
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"Name\" FROM \"Customer\"")
79-
.Or.EqualTo("SELECT Id, Name FROM Customer"));
78+
Assert.That(db.GetLastSql().NormalizeSql(),
79+
Is.EqualTo("select id, name from customer"));
8080
}
8181

8282
[Test]

0 commit comments

Comments
 (0)