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

Commit

Permalink
Clean up unit tests so they can be used for the Oracle provider and o…
Browse files Browse the repository at this point in the history
…ne 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.
  • Loading branch information
BruceCowan-AI committed Apr 4, 2014
1 parent a5fbdec commit 7325bd3
Show file tree
Hide file tree
Showing 33 changed files with 219 additions and 177 deletions.
4 changes: 2 additions & 2 deletions src/ServiceStack.OrmLite/OrmLiteWriteExtensions.cs
Expand Up @@ -371,7 +371,7 @@ internal static int Update<T>(this IDbCommand dbCmd, T obj)
OrmLiteConfig.UpdateFilter(dbCmd, obj);

OrmLiteConfig.DialectProvider.PrepareParameterizedUpdateStatement<T>(dbCmd);
if (dbCmd.CommandText == null)
if (string.IsNullOrEmpty(dbCmd.CommandText))
return 0;

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

dialectProvider.PrepareParameterizedUpdateStatement<T>(dbCmd);
if (dbCmd.CommandText == null)
if (string.IsNullOrEmpty(dbCmd.CommandText))
return 0;

foreach (var obj in objs)
Expand Down
1 change: 1 addition & 0 deletions tests/ServiceStack.OrmLite.Tests/ApiSqlServerTests.cs
Expand Up @@ -15,6 +15,7 @@ public class ApiSqlServerTests
[SetUp]
public void SetUp()
{
SuppressIfOracle("SQL Server tests");
db = CreateSqlServerDbFactory().OpenDbConnection();
db.DropAndCreateTable<Person>();
db.DropAndCreateTable<PersonWithAutoId>();
Expand Down
10 changes: 8 additions & 2 deletions tests/ServiceStack.OrmLite.Tests/CustomSqlTests.cs
Expand Up @@ -75,8 +75,10 @@ public void Can_create_field_with_custom_sql()
var createTableSql = db.GetLastSql();
createTableSql.Print();

Assert.That(createTableSql, Is.StringContaining("\"CharColumn\" CHAR(20) null"));
Assert.That(createTableSql, Is.StringContaining("\"DecimalColumn\" DECIMAL(18,4) null"));
Assert.That(createTableSql, Is.StringContaining("\"CharColumn\" CHAR(20) null")
.Or.StringContaining("CharColumn CHAR(20) null"));
Assert.That(createTableSql, Is.StringContaining("\"DecimalColumn\" DECIMAL(18,4) null")
.Or.StringContaining("DecimalColumn DECIMAL(18,4) null"));
}
}

Expand All @@ -100,6 +102,8 @@ public void Does_execute_CustomSql_before_table_created()
[Test]
public void Does_execute_CustomSql_after_table_created()
{
SuppressIfOracle("For Oracle need wrap multiple SQL statements in an anonymous block");

using (var db = OpenDbConnection())
{
db.DropAndCreateTable<ModelWithSeedDataSql>();
Expand All @@ -113,6 +117,8 @@ public void Does_execute_CustomSql_after_table_created()
[Test]
public void Does_execute_CustomSql_after_table_created_using_dynamic_attribute()
{
SuppressIfOracle("For Oracle need wrap multiple SQL statements in an anonymous block");

typeof(DynamicAttributeSeedData)
.AddAttributes(new PostCreateTableAttribute(
"INSERT INTO DynamicAttributeSeedData (Name) VALUES ('Foo');" +
Expand Down
11 changes: 7 additions & 4 deletions tests/ServiceStack.OrmLite.Tests/DateTimeOffsetTests.cs
Expand Up @@ -5,12 +5,12 @@

namespace ServiceStack.OrmLite.Tests
{
internal class DateTimeOffsetTests : OrmLiteTestBase
public class DateTimeOffsetTests : OrmLiteTestBase
{
private IDbConnection db;

[TestFixtureSetUp]
public void TestFixtureSetUp()
public new void TestFixtureSetUp()
{
db = base.OpenDbConnection();
}
Expand Down Expand Up @@ -45,29 +45,32 @@ public void EnsureDateTimeOffsetSaves()
{
var dateTime = new DateTimeOffset(2012, 1, 30, 1, 1, 1, new TimeSpan(5, 0, 0));
var x = InsertAndSelectDateTimeOffset<DateTimeOffsetObject, DateTimeOffset>(db, dateTime);
Assert.AreEqual(x.Test, dateTime);
Assert.That(x.Test, Is.EqualTo(dateTime));
}

[Test]
public void EnsureNullableDateTimeOffsetSaves()
{
DateTimeOffset? dateTime = new DateTimeOffset(2012, 1, 30, 1, 1, 1, new TimeSpan(5, 0, 0));
var x = InsertAndSelectDateTimeOffset<NullableDateTimeOffsetObject, DateTimeOffset?>(db, dateTime);
Assert.AreEqual(x.Test, dateTime);
Assert.That(x.Test, Is.EqualTo(dateTime));
}

private class DateTimeOffsetObject : IDateTimeOffsetObject<DateTimeOffset>
{
public int Id { get; set; }
public DateTimeOffset Test { get; set; }
}

private class NullableDateTimeOffsetObject : IDateTimeOffsetObject<DateTimeOffset?>
{
public int Id { get; set; }
public DateTimeOffset? Test { get; set; }
}

private interface IDateTimeOffsetObject<T>
{
int Id { get; set; }
T Test { get; set; }
}
}
Expand Down
4 changes: 2 additions & 2 deletions tests/ServiceStack.OrmLite.Tests/EnumTests.cs
Expand Up @@ -133,7 +133,7 @@ public void Creates_int_field_for_enum_flags()

db.GetLastSql().Print();

Assert.That(db.GetLastSql(), Is.StringContaining("\"Flags\" INT"));
Assert.That(db.GetLastSql(), Is.StringContaining("\"Flags\" INT").Or.StringContaining("Flags INT"));
}
}

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

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

db.UpdateOnly(new TypeWithFlagsEnum { Id = 1, Flags = FlagsEnum.FlagThree }, q => q.Flags);
Expand Down
Expand Up @@ -59,14 +59,5 @@ protected void EstablishContext(int numberOfRandomObjects, params TestType[] obj
}
}
}

protected override string GetFileConnectionString()
{
var connectionString = Config.SqliteFileDir + this.GetType().Name + ".sqlite";
if (File.Exists(connectionString))
File.Delete(connectionString);

return connectionString;
}
}
}
14 changes: 9 additions & 5 deletions tests/ServiceStack.OrmLite.Tests/JoinSqlBuilderTests.cs
Expand Up @@ -4,8 +4,8 @@

namespace ServiceStack.OrmLite.Tests
{
[TestFixture ()]
public class JoinSqlBuilderTests
[TestFixture]
public class JoinSqlBuilderTests : OrmLiteTestBase
{
[Alias("Users")]
public class WithAliasUser
Expand Down Expand Up @@ -50,9 +50,11 @@ public class Address
}


[Test ()]
[Test]
public void FieldNameLeftJoinTest ()
{
SuppressIfOracle("These assert comparisons don't work with Oracle provider because it doesn't quote every name");

var joinQuery = new JoinSqlBuilder<User, User> ().LeftJoin<User, Address> (x => x.Id, x => x.UserId).ToSql ();
var expected = "SELECT \"User\".\"Id\",\"User\".\"Name\",\"User\".\"Age\" \nFROM \"User\" \n LEFT OUTER JOIN \"Address\" ON \"User\".\"Id\" = \"Address\".\"UserId\" \n";

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

[Test ()]
[Test]
public void DoubleWhereLeftJoinTest ()
{
var joinQuery = new JoinSqlBuilder<User, User> ().LeftJoin<User, WithAliasAddress> (x => x.Id, x => x.UserId
SuppressIfOracle("These assert comparisons don't work with Oracle provider because it doesn't quote every name");

var joinQuery = new JoinSqlBuilder<User, User>().LeftJoin<User, WithAliasAddress>(x => x.Id, x => x.UserId
, sourceWhere: x => x.Age > 18
, destinationWhere: x => x.Country == "Italy").ToSql ();
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";
Expand Down
2 changes: 2 additions & 0 deletions tests/ServiceStack.OrmLite.Tests/LoadReferencesTests.cs
Expand Up @@ -74,6 +74,8 @@ public void TestFixtureTearDown()
[Test]
public void Does_not_include_complex_reference_type_in_sql()
{
SuppressIfOracle("These assert comparisons don't work with Oracle provider because it doesn't quote every name");

db.Select<Customer>();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"Name\" FROM \"Customer\""));
}
Expand Down
7 changes: 2 additions & 5 deletions tests/ServiceStack.OrmLite.Tests/LocalizationTests.cs
Expand Up @@ -3,20 +3,17 @@
using System.Threading;
using NUnit.Framework;
using ServiceStack.DataAnnotations;
using ServiceStack.OrmLite.Sqlite;
using ServiceStack.Text;

namespace ServiceStack.OrmLite.Tests
{
[TestFixture]
public class LocalizationTests
: OrmLiteTestBase
public class LocalizationTests : OrmLiteTestBase
{
private readonly CultureInfo CurrentCulture = Thread.CurrentThread.CurrentCulture;
private readonly CultureInfo CurrentUICulture = Thread.CurrentThread.CurrentUICulture;

[SetUp]
public void TestFixtureSetUp()
public void TestSetUp()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("vi-VN");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("vi-VN");
Expand Down
2 changes: 2 additions & 0 deletions tests/ServiceStack.OrmLite.Tests/MockAllApiTests.cs
Expand Up @@ -405,6 +405,8 @@ public void Can_hijack_References_Apis()
i += 2; db.Save(customer);
Assert.That(sqlStatements.Count, Is.EqualTo(i));

SuppressIfOracle("This seems wrong here as the save actually goes through to the database in Oracle to get the next number from the sequence");

i += 1; db.SaveReferences(customer, customer.PrimaryAddress);
Assert.That(sqlStatements.Count, Is.EqualTo(i));

Expand Down
5 changes: 1 addition & 4 deletions tests/ServiceStack.OrmLite.Tests/NorthwindPerfTests.cs
Expand Up @@ -4,19 +4,16 @@
using Northwind.Common.DataModel;
using NUnit.Framework;
using ServiceStack.Data;
using ServiceStack.OrmLite.Sqlite;

namespace ServiceStack.OrmLite.Tests
{
[Ignore("Perf test")]
[TestFixture]
public class NorthwindPerfTests
public class NorthwindPerfTests : OrmLiteTestBase
{
[Test]
public void Load_Northwind_database_with_OrmLite_sqlite_memory_db()
{
OrmLiteConfig.DialectProvider = new SqliteOrmLiteDialectProvider();

NorthwindData.LoadData(false);
GC.Collect();

Expand Down
Expand Up @@ -12,17 +12,17 @@ public class OrmLiteBasicPersistenceProviderTests
[Test]
public void Can_GetById_from_basic_persistence_provider()
{
using (var db = OpenDbConnection())
using (var db = OpenDbConnection())
{
db.CreateTable<ModelWithFieldsOfDifferentTypes>(true);

var basicProvider = new OrmLitePersistenceProvider(db);

var row = ModelWithFieldsOfDifferentTypes.Create(1);

db.Insert(row);
row.Id = (int)db.Insert(row, selectIdentity: true);

var providerRow = basicProvider.GetById<ModelWithFieldsOfDifferentTypes>(1);
var providerRow = basicProvider.GetById<ModelWithFieldsOfDifferentTypes>(row.Id);

ModelWithFieldsOfDifferentTypes.AssertIsEqual(providerRow, row);
}
Expand All @@ -31,19 +31,19 @@ public void Can_GetById_from_basic_persistence_provider()
[Test]
public void Can_GetByIds_from_basic_persistence_provider()
{
using (var db = OpenDbConnection())
using (var db = OpenDbConnection())
{
db.CreateTable<ModelWithFieldsOfDifferentTypes>(true);

var basicProvider = new OrmLitePersistenceProvider(db);

var rowIds = new List<int> { 1, 2, 3, 4, 5 };

var rows = rowIds.ConvertAll(x => ModelWithFieldsOfDifferentTypes.Create(x));
var rows = rowIds.ConvertAll(ModelWithFieldsOfDifferentTypes.Create);

rows.ForEach(x => db.Insert(x));
rows.ForEach(x => { x.Id = (int)db.Insert(x, selectIdentity: true); });

var getRowIds = new[] { 2, 4 };
var getRowIds = new[] { rows[1].Id, rows[3].Id };
var providerRows = basicProvider.GetByIds<ModelWithFieldsOfDifferentTypes>(getRowIds).ToList();
var providerRowIds = providerRows.ConvertAll(x => x.Id);

Expand All @@ -54,19 +54,19 @@ public void Can_GetByIds_from_basic_persistence_provider()
[Test]
public void Can_Store_from_basic_persistence_provider()
{
using (var db = OpenDbConnection())
using (var db = OpenDbConnection())
{
db.CreateTable<ModelWithFieldsOfDifferentTypes>(true);

var basicProvider = new OrmLitePersistenceProvider(db);

var rowIds = new List<int> { 1, 2, 3, 4, 5 };

var rows = rowIds.ConvertAll(x => ModelWithFieldsOfDifferentTypes.Create(x));
var rows = rowIds.ConvertAll(ModelWithFieldsOfDifferentTypes.Create);

rows.ForEach(x => basicProvider.Store(x));

var getRowIds = new[] { 2, 4 };
var getRowIds = new[] { rows[1].Id, rows[3].Id };
var providerRows = db.SelectByIds<ModelWithFieldsOfDifferentTypes>(getRowIds).ToList();
var providerRowIds = providerRows.ConvertAll(x => x.Id);

Expand All @@ -85,30 +85,24 @@ public void Can_Delete_from_basic_persistence_provider()

var rowIds = new List<int> { 1, 2, 3, 4, 5 };

var rows = rowIds.ConvertAll(x => ModelWithFieldsOfDifferentTypes.Create(x));
var rows = rowIds.ConvertAll(ModelWithFieldsOfDifferentTypes.Create);

rows.ForEach(x => db.Insert(x));
rows.ForEach(x => { x.Id = (int)db.Insert(x, selectIdentity: true); });

var deleteRowIds = new List<int> { 2, 4 };
var deleteRowIds = new List<int> { rows[1].Id, rows[3].Id };
var getRowIds = rows.ConvertAll(x => x.Id);

foreach (var row in rows)
{
if (deleteRowIds.Contains(row.Id))
{
basicProvider.Delete(row);
}
}
rows.Where(row => deleteRowIds.Contains(row.Id)).ToList().ForEach(basicProvider.Delete);

var providerRows = basicProvider.GetByIds<ModelWithFieldsOfDifferentTypes>(rowIds).ToList();
var providerRows = basicProvider.GetByIds<ModelWithFieldsOfDifferentTypes>(getRowIds).ToList();
var providerRowIds = providerRows.ConvertAll(x => x.Id);

var remainingIds = new List<int>(rowIds);
var remainingIds = rows.ConvertAll(x => x.Id);
deleteRowIds.ForEach(x => remainingIds.Remove(x));

Assert.That(providerRowIds, Is.EquivalentTo(remainingIds));
}
}

}

}
2 changes: 2 additions & 0 deletions tests/ServiceStack.OrmLite.Tests/OrmLiteComplexTypesTests.cs
Expand Up @@ -65,6 +65,8 @@ public void Can_insert_and_select_from_OrderLineData()
[Test]
public void Lists_Of_Guids_Are_Formatted_Correctly()
{
SuppressIfOracle("Can't read a list of Guids with Oracle provider because core OrmLite doesn't give provider a chance to override conversion");

using (var db = OpenDbConnection())
{
db.DropAndCreateTable<WithAListOfGuids>();
Expand Down
Expand Up @@ -148,7 +148,7 @@ public void Can_create_ModelWithIdAndName_table_with_specified_DefaultStringLeng
var createTableSql = OrmLiteConfig.DialectProvider.ToCreateTableStatement(typeof(ModelWithIdAndName));

Console.WriteLine("createTableSql: " + createTableSql);
Assert.That(createTableSql.Contains("VARCHAR(255)"), Is.True);
Assert.That(createTableSql, Is.StringContaining("VARCHAR(255)").Or.StringContaining("VARCHAR2(255)"));
}

public class ModelWithGuid
Expand Down

0 comments on commit 7325bd3

Please sign in to comment.