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

Commit 7325bd3

Browse files
committed
Clean up unit tests so they can be used for the Oracle provider and one bug fix.
The tests can now be soft linked to the ServiceStack.OrmLite.Oracle.Tests project. Fix the test for null updates in OrmLiteWriteExtensions to allow empty strings as well as null.
1 parent a5fbdec commit 7325bd3

33 files changed

+219
-177
lines changed

src/ServiceStack.OrmLite/OrmLiteWriteExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ internal static int Update<T>(this IDbCommand dbCmd, T obj)
371371
OrmLiteConfig.UpdateFilter(dbCmd, obj);
372372

373373
OrmLiteConfig.DialectProvider.PrepareParameterizedUpdateStatement<T>(dbCmd);
374-
if (dbCmd.CommandText == null)
374+
if (string.IsNullOrEmpty(dbCmd.CommandText))
375375
return 0;
376376

377377
OrmLiteConfig.DialectProvider.SetParameterValues<T>(dbCmd, obj);
@@ -397,7 +397,7 @@ internal static int UpdateAll<T>(this IDbCommand dbCmd, IEnumerable<T> objs)
397397
var dialectProvider = OrmLiteConfig.DialectProvider;
398398

399399
dialectProvider.PrepareParameterizedUpdateStatement<T>(dbCmd);
400-
if (dbCmd.CommandText == null)
400+
if (string.IsNullOrEmpty(dbCmd.CommandText))
401401
return 0;
402402

403403
foreach (var obj in objs)

tests/ServiceStack.OrmLite.Tests/ApiSqlServerTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class ApiSqlServerTests
1515
[SetUp]
1616
public void SetUp()
1717
{
18+
SuppressIfOracle("SQL Server tests");
1819
db = CreateSqlServerDbFactory().OpenDbConnection();
1920
db.DropAndCreateTable<Person>();
2021
db.DropAndCreateTable<PersonWithAutoId>();

tests/ServiceStack.OrmLite.Tests/CustomSqlTests.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,10 @@ public void Can_create_field_with_custom_sql()
7575
var createTableSql = db.GetLastSql();
7676
createTableSql.Print();
7777

78-
Assert.That(createTableSql, Is.StringContaining("\"CharColumn\" CHAR(20) null"));
79-
Assert.That(createTableSql, Is.StringContaining("\"DecimalColumn\" DECIMAL(18,4) null"));
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"));
8082
}
8183
}
8284

@@ -100,6 +102,8 @@ public void Does_execute_CustomSql_before_table_created()
100102
[Test]
101103
public void Does_execute_CustomSql_after_table_created()
102104
{
105+
SuppressIfOracle("For Oracle need wrap multiple SQL statements in an anonymous block");
106+
103107
using (var db = OpenDbConnection())
104108
{
105109
db.DropAndCreateTable<ModelWithSeedDataSql>();
@@ -113,6 +117,8 @@ public void Does_execute_CustomSql_after_table_created()
113117
[Test]
114118
public void Does_execute_CustomSql_after_table_created_using_dynamic_attribute()
115119
{
120+
SuppressIfOracle("For Oracle need wrap multiple SQL statements in an anonymous block");
121+
116122
typeof(DynamicAttributeSeedData)
117123
.AddAttributes(new PostCreateTableAttribute(
118124
"INSERT INTO DynamicAttributeSeedData (Name) VALUES ('Foo');" +

tests/ServiceStack.OrmLite.Tests/DateTimeOffsetTests.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55

66
namespace ServiceStack.OrmLite.Tests
77
{
8-
internal class DateTimeOffsetTests : OrmLiteTestBase
8+
public class DateTimeOffsetTests : OrmLiteTestBase
99
{
1010
private IDbConnection db;
1111

1212
[TestFixtureSetUp]
13-
public void TestFixtureSetUp()
13+
public new void TestFixtureSetUp()
1414
{
1515
db = base.OpenDbConnection();
1616
}
@@ -45,29 +45,32 @@ public void EnsureDateTimeOffsetSaves()
4545
{
4646
var dateTime = new DateTimeOffset(2012, 1, 30, 1, 1, 1, new TimeSpan(5, 0, 0));
4747
var x = InsertAndSelectDateTimeOffset<DateTimeOffsetObject, DateTimeOffset>(db, dateTime);
48-
Assert.AreEqual(x.Test, dateTime);
48+
Assert.That(x.Test, Is.EqualTo(dateTime));
4949
}
5050

5151
[Test]
5252
public void EnsureNullableDateTimeOffsetSaves()
5353
{
5454
DateTimeOffset? dateTime = new DateTimeOffset(2012, 1, 30, 1, 1, 1, new TimeSpan(5, 0, 0));
5555
var x = InsertAndSelectDateTimeOffset<NullableDateTimeOffsetObject, DateTimeOffset?>(db, dateTime);
56-
Assert.AreEqual(x.Test, dateTime);
56+
Assert.That(x.Test, Is.EqualTo(dateTime));
5757
}
5858

5959
private class DateTimeOffsetObject : IDateTimeOffsetObject<DateTimeOffset>
6060
{
61+
public int Id { get; set; }
6162
public DateTimeOffset Test { get; set; }
6263
}
6364

6465
private class NullableDateTimeOffsetObject : IDateTimeOffsetObject<DateTimeOffset?>
6566
{
67+
public int Id { get; set; }
6668
public DateTimeOffset? Test { get; set; }
6769
}
6870

6971
private interface IDateTimeOffsetObject<T>
7072
{
73+
int Id { get; set; }
7174
T Test { get; set; }
7275
}
7376
}

tests/ServiceStack.OrmLite.Tests/EnumTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public void Creates_int_field_for_enum_flags()
133133

134134
db.GetLastSql().Print();
135135

136-
Assert.That(db.GetLastSql(), Is.StringContaining("\"Flags\" INT"));
136+
Assert.That(db.GetLastSql(), Is.StringContaining("\"Flags\" INT").Or.StringContaining("Flags INT"));
137137
}
138138
}
139139

@@ -149,7 +149,7 @@ public void Updates_enum_flags_with_int_value()
149149
db.Insert(new TypeWithFlagsEnum { Id = 3, Flags = FlagsEnum.FlagOne | FlagsEnum.FlagTwo });
150150

151151
db.Update(new TypeWithFlagsEnum { Id = 1, Flags = FlagsEnum.FlagThree });
152-
Assert.That(db.GetLastSql(), Is.StringContaining("=@Flags"));
152+
Assert.That(db.GetLastSql(), Is.StringContaining("=@Flags").Or.StringContaining("=:Flags"));
153153
db.GetLastSql().Print();
154154

155155
db.UpdateOnly(new TypeWithFlagsEnum { Id = 1, Flags = FlagsEnum.FlagThree }, q => q.Flags);

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

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,5 @@ protected void EstablishContext(int numberOfRandomObjects, params TestType[] obj
5959
}
6060
}
6161
}
62-
63-
protected override string GetFileConnectionString()
64-
{
65-
var connectionString = Config.SqliteFileDir + this.GetType().Name + ".sqlite";
66-
if (File.Exists(connectionString))
67-
File.Delete(connectionString);
68-
69-
return connectionString;
70-
}
7162
}
7263
}

tests/ServiceStack.OrmLite.Tests/JoinSqlBuilderTests.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
namespace ServiceStack.OrmLite.Tests
66
{
7-
[TestFixture ()]
8-
public class JoinSqlBuilderTests
7+
[TestFixture]
8+
public class JoinSqlBuilderTests : OrmLiteTestBase
99
{
1010
[Alias("Users")]
1111
public class WithAliasUser
@@ -50,9 +50,11 @@ public class Address
5050
}
5151

5252

53-
[Test ()]
53+
[Test]
5454
public void FieldNameLeftJoinTest ()
5555
{
56+
SuppressIfOracle("These assert comparisons don't work with Oracle provider because it doesn't quote every name");
57+
5658
var joinQuery = new JoinSqlBuilder<User, User> ().LeftJoin<User, Address> (x => x.Id, x => x.UserId).ToSql ();
5759
var expected = "SELECT \"User\".\"Id\",\"User\".\"Name\",\"User\".\"Age\" \nFROM \"User\" \n LEFT OUTER JOIN \"Address\" ON \"User\".\"Id\" = \"Address\".\"UserId\" \n";
5860

@@ -71,10 +73,12 @@ public void FieldNameLeftJoinTest ()
7173
Assert.AreEqual (expected, joinQuery);
7274
}
7375

74-
[Test ()]
76+
[Test]
7577
public void DoubleWhereLeftJoinTest ()
7678
{
77-
var joinQuery = new JoinSqlBuilder<User, User> ().LeftJoin<User, WithAliasAddress> (x => x.Id, x => x.UserId
79+
SuppressIfOracle("These assert comparisons don't work with Oracle provider because it doesn't quote every name");
80+
81+
var joinQuery = new JoinSqlBuilder<User, User>().LeftJoin<User, WithAliasAddress>(x => x.Id, x => x.UserId
7882
, sourceWhere: x => x.Age > 18
7983
, destinationWhere: x => x.Country == "Italy").ToSql ();
8084
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";

tests/ServiceStack.OrmLite.Tests/LoadReferencesTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ public void TestFixtureTearDown()
7474
[Test]
7575
public void Does_not_include_complex_reference_type_in_sql()
7676
{
77+
SuppressIfOracle("These assert comparisons don't work with Oracle provider because it doesn't quote every name");
78+
7779
db.Select<Customer>();
7880
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"Name\" FROM \"Customer\""));
7981
}

tests/ServiceStack.OrmLite.Tests/LocalizationTests.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,17 @@
33
using System.Threading;
44
using NUnit.Framework;
55
using ServiceStack.DataAnnotations;
6-
using ServiceStack.OrmLite.Sqlite;
7-
using ServiceStack.Text;
86

97
namespace ServiceStack.OrmLite.Tests
108
{
119
[TestFixture]
12-
public class LocalizationTests
13-
: OrmLiteTestBase
10+
public class LocalizationTests : OrmLiteTestBase
1411
{
1512
private readonly CultureInfo CurrentCulture = Thread.CurrentThread.CurrentCulture;
1613
private readonly CultureInfo CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
1714

1815
[SetUp]
19-
public void TestFixtureSetUp()
16+
public void TestSetUp()
2017
{
2118
Thread.CurrentThread.CurrentCulture = new CultureInfo("vi-VN");
2219
Thread.CurrentThread.CurrentUICulture = new CultureInfo("vi-VN");

tests/ServiceStack.OrmLite.Tests/MockAllApiTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,8 @@ public void Can_hijack_References_Apis()
405405
i += 2; db.Save(customer);
406406
Assert.That(sqlStatements.Count, Is.EqualTo(i));
407407

408+
SuppressIfOracle("This seems wrong here as the save actually goes through to the database in Oracle to get the next number from the sequence");
409+
408410
i += 1; db.SaveReferences(customer, customer.PrimaryAddress);
409411
Assert.That(sqlStatements.Count, Is.EqualTo(i));
410412

0 commit comments

Comments
 (0)