Skip to content

Commit 4547883

Browse files
JaBistDuNarrischJaBistDuNarrisch
authored andcommitted
Moved getconstraints test from generic tests to Oracle, SQL Server and Postgre (the servers we support currently)
1 parent ddf5015 commit 4547883

7 files changed

+149
-90
lines changed

src/Migrator.Tests/Providers/Generic/TransformationProvider_GetColumns_GenericTests.cs

Lines changed: 0 additions & 82 deletions
This file was deleted.

src/Migrator.Tests/Providers/OracleProvider/OracleTransformationProvider_GetColumns_Tests.cs

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
using System.Linq;
44
using System.Threading.Tasks;
55
using DotNetProjects.Migrator.Framework;
6+
using Migrator.Tests.Providers.Base;
67
using Migrator.Tests.Providers.Generic;
78
using NUnit.Framework;
89

910
namespace Migrator.Tests.Providers.OracleProvider;
1011

1112
[TestFixture]
1213
[Category("Oracle")]
13-
public class OracleTransformationProvider_GetColumns_Tests : TransformationProvider_GetColumns_GenericTests
14+
public class OracleTransformationProvider_GetColumns_Tests : TransformationProviderBase
1415
{
1516
[SetUp]
1617
public async Task SetUpAsync()
@@ -42,4 +43,72 @@ public void GetColumns_Oracle_DefaultValues_Succeeds()
4243

4344
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
4445
}
46+
47+
[Test]
48+
public void GetColumns_DefaultValues_Succeeds()
49+
{
50+
// Arrange
51+
var dateTimeDefaultValue = new DateTime(2000, 1, 2, 3, 4, 5, DateTimeKind.Utc);
52+
var guidDefaultValue = Guid.NewGuid();
53+
var decimalDefaultValue = 14.56565m;
54+
55+
const string testTableName = "MyDefaultTestTable";
56+
57+
const string dateTimeColumnName1 = "datetimecolumn1";
58+
const string dateTimeColumnName2 = "datetimecolumn2";
59+
const string decimalColumnName1 = "decimalcolumn";
60+
const string guidColumnName1 = "guidcolumn1";
61+
const string booleanColumnName1 = "booleancolumn1";
62+
const string int32ColumnName1 = "int32column1";
63+
const string int64ColumnName1 = "int64column1";
64+
const string int64ColumnName2 = "int64column2";
65+
const string stringColumnName1 = "stringcolumn1";
66+
const string binaryColumnName1 = "binarycolumn1";
67+
const string doubleColumnName1 = "doublecolumn1";
68+
69+
// Should be extended by remaining types
70+
Provider.AddTable(testTableName,
71+
new Column(dateTimeColumnName1, DbType.DateTime, dateTimeDefaultValue),
72+
new Column(dateTimeColumnName2, DbType.DateTime2, dateTimeDefaultValue),
73+
new Column(decimalColumnName1, DbType.Decimal, decimalDefaultValue),
74+
new Column(guidColumnName1, DbType.Guid, guidDefaultValue),
75+
76+
// other boolean default values are tested in another test
77+
new Column(booleanColumnName1, DbType.Boolean, true),
78+
79+
new Column(int32ColumnName1, DbType.Int32, defaultValue: 43),
80+
new Column(int64ColumnName1, DbType.Int64, defaultValue: 88),
81+
new Column(int64ColumnName2, DbType.Int64, defaultValue: 0),
82+
new Column(stringColumnName1, DbType.String, defaultValue: "Hello"),
83+
new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 }),
84+
new Column(doubleColumnName1, DbType.Double, defaultValue: 84.874596567) { Precision = 19, Scale = 10 }
85+
);
86+
87+
// Act
88+
var columns = Provider.GetColumns(testTableName);
89+
90+
// Assert
91+
var dateTimeColumn1 = columns.Single(x => x.Name.Equals(dateTimeColumnName1, StringComparison.OrdinalIgnoreCase));
92+
var dateTimeColumn2 = columns.Single(x => x.Name.Equals(dateTimeColumnName2, StringComparison.OrdinalIgnoreCase));
93+
var decimalColumn1 = columns.Single(x => x.Name.Equals(decimalColumnName1, StringComparison.OrdinalIgnoreCase));
94+
var guidColumn1 = columns.Single(x => x.Name.Equals(guidColumnName1, StringComparison.OrdinalIgnoreCase));
95+
var booleanColumn1 = columns.Single(x => x.Name.Equals(booleanColumnName1, StringComparison.OrdinalIgnoreCase));
96+
var int32Column1 = columns.Single(x => x.Name.Equals(int32ColumnName1, StringComparison.OrdinalIgnoreCase));
97+
var int64Column1 = columns.Single(x => x.Name.Equals(int64ColumnName1, StringComparison.OrdinalIgnoreCase));
98+
var int64Column2 = columns.Single(x => x.Name.Equals(int64ColumnName2, StringComparison.OrdinalIgnoreCase));
99+
var stringColumn1 = columns.Single(x => x.Name.Equals(stringColumnName1, StringComparison.OrdinalIgnoreCase));
100+
var binarycolumn1 = columns.Single(x => x.Name.Equals(binaryColumnName1, StringComparison.OrdinalIgnoreCase));
101+
var doubleColumn1 = columns.Single(x => x.Name.Equals(doubleColumnName1, StringComparison.OrdinalIgnoreCase));
102+
103+
Assert.That(dateTimeColumn1.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
104+
Assert.That(dateTimeColumn2.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
105+
Assert.That(decimalColumn1.DefaultValue, Is.EqualTo(decimalDefaultValue));
106+
Assert.That(guidColumn1.DefaultValue, Is.EqualTo(guidDefaultValue));
107+
Assert.That(booleanColumn1.DefaultValue, Is.True);
108+
Assert.That(int32Column1.DefaultValue, Is.EqualTo(43));
109+
Assert.That(int64Column1.DefaultValue, Is.EqualTo(88));
110+
Assert.That(stringColumn1.DefaultValue, Is.EqualTo("Hello"));
111+
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
112+
Assert.That(doubleColumn1.DefaultValue, Is.EqualTo(84.874596567));
113+
}
45114
}

src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumns_DefaultValueTests.cs

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace Migrator.Tests.Providers.PostgreSQL;
1111

1212
[TestFixture]
1313
[Category("Postgre")]
14-
public class PostgreSQLTransformationProvider_GetColumns_DefaultTypeTests : TransformationProvider_GetColumns_GenericTests
14+
public class PostgreSQLTransformationProvider_GetColumns_DefaultValuesTests : TransformationProviderBase
1515
{
1616
[SetUp]
1717
public async Task SetUpAsync()
@@ -51,6 +51,74 @@ public void GetColumns_Postgres_DefaultValues_Succeeds()
5151
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
5252
}
5353

54+
[Test]
55+
public void GetColumns_DefaultValues_Succeeds()
56+
{
57+
// Arrange
58+
var dateTimeDefaultValue = new DateTime(2000, 1, 2, 3, 4, 5, DateTimeKind.Utc);
59+
var guidDefaultValue = Guid.NewGuid();
60+
var decimalDefaultValue = 14.56565m;
61+
62+
const string testTableName = "MyDefaultTestTable";
63+
64+
const string dateTimeColumnName1 = "datetimecolumn1";
65+
const string dateTimeColumnName2 = "datetimecolumn2";
66+
const string decimalColumnName1 = "decimalcolumn";
67+
const string guidColumnName1 = "guidcolumn1";
68+
const string booleanColumnName1 = "booleancolumn1";
69+
const string int32ColumnName1 = "int32column1";
70+
const string int64ColumnName1 = "int64column1";
71+
const string int64ColumnName2 = "int64column2";
72+
const string stringColumnName1 = "stringcolumn1";
73+
const string binaryColumnName1 = "binarycolumn1";
74+
const string doubleColumnName1 = "doublecolumn1";
75+
76+
// Should be extended by remaining types
77+
Provider.AddTable(testTableName,
78+
new Column(dateTimeColumnName1, DbType.DateTime, dateTimeDefaultValue),
79+
new Column(dateTimeColumnName2, DbType.DateTime2, dateTimeDefaultValue),
80+
new Column(decimalColumnName1, DbType.Decimal, decimalDefaultValue),
81+
new Column(guidColumnName1, DbType.Guid, guidDefaultValue),
82+
83+
// other boolean default values are tested in another test
84+
new Column(booleanColumnName1, DbType.Boolean, true),
85+
86+
new Column(int32ColumnName1, DbType.Int32, defaultValue: 43),
87+
new Column(int64ColumnName1, DbType.Int64, defaultValue: 88),
88+
new Column(int64ColumnName2, DbType.Int64, defaultValue: 0),
89+
new Column(stringColumnName1, DbType.String, defaultValue: "Hello"),
90+
new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 }),
91+
new Column(doubleColumnName1, DbType.Double, defaultValue: 84.874596567) { Precision = 19, Scale = 10 }
92+
);
93+
94+
// Act
95+
var columns = Provider.GetColumns(testTableName);
96+
97+
// Assert
98+
var dateTimeColumn1 = columns.Single(x => x.Name.Equals(dateTimeColumnName1, StringComparison.OrdinalIgnoreCase));
99+
var dateTimeColumn2 = columns.Single(x => x.Name.Equals(dateTimeColumnName2, StringComparison.OrdinalIgnoreCase));
100+
var decimalColumn1 = columns.Single(x => x.Name.Equals(decimalColumnName1, StringComparison.OrdinalIgnoreCase));
101+
var guidColumn1 = columns.Single(x => x.Name.Equals(guidColumnName1, StringComparison.OrdinalIgnoreCase));
102+
var booleanColumn1 = columns.Single(x => x.Name.Equals(booleanColumnName1, StringComparison.OrdinalIgnoreCase));
103+
var int32Column1 = columns.Single(x => x.Name.Equals(int32ColumnName1, StringComparison.OrdinalIgnoreCase));
104+
var int64Column1 = columns.Single(x => x.Name.Equals(int64ColumnName1, StringComparison.OrdinalIgnoreCase));
105+
var int64Column2 = columns.Single(x => x.Name.Equals(int64ColumnName2, StringComparison.OrdinalIgnoreCase));
106+
var stringColumn1 = columns.Single(x => x.Name.Equals(stringColumnName1, StringComparison.OrdinalIgnoreCase));
107+
var binarycolumn1 = columns.Single(x => x.Name.Equals(binaryColumnName1, StringComparison.OrdinalIgnoreCase));
108+
var doubleColumn1 = columns.Single(x => x.Name.Equals(doubleColumnName1, StringComparison.OrdinalIgnoreCase));
109+
110+
Assert.That(dateTimeColumn1.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
111+
Assert.That(dateTimeColumn2.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
112+
Assert.That(decimalColumn1.DefaultValue, Is.EqualTo(decimalDefaultValue));
113+
Assert.That(guidColumn1.DefaultValue, Is.EqualTo(guidDefaultValue));
114+
Assert.That(booleanColumn1.DefaultValue, Is.True);
115+
Assert.That(int32Column1.DefaultValue, Is.EqualTo(43));
116+
Assert.That(int64Column1.DefaultValue, Is.EqualTo(88));
117+
Assert.That(stringColumn1.DefaultValue, Is.EqualTo("Hello"));
118+
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
119+
Assert.That(doubleColumn1.DefaultValue, Is.EqualTo(84.874596567));
120+
}
121+
54122
// 1 will coerce to true on inserts but not for default values in Postgre SQL - same for 0 to false
55123
// so we do not test it here
56124
[TestCase("true", true)]

src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumns_Tests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
using System.Threading.Tasks;
2-
using Migrator.Tests.Providers.Generic;
2+
using Migrator.Tests.Providers.Base;
33
using NUnit.Framework;
44

55
namespace Migrator.Tests.Providers.PostgreSQL;
66

77
[TestFixture]
88
[Category("Postgre")]
9-
public class PostgreSQLTransformationProvider_GetColumns_Tests : TransformationProvider_GetColumns_GenericTests
9+
public class PostgreSQLTransformationProvider_GetColumns_Tests : TransformationProviderBase
1010
{
1111
[SetUp]
1212
public async Task SetUpAsync()

src/Migrator.Tests/Providers/SQLServer/SQLServerTransformationProvider_GetColumnsTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
using System.Threading.Tasks;
2-
using Migrator.Tests.Providers.Generic;
2+
using Migrator.Tests.Providers.Base;
33
using NUnit.Framework;
44

55
namespace Migrator.Tests.Providers.SQLServer;
66

77
[TestFixture]
88
[Category("SqlServer")]
9-
public class SQLServerTransformationProvider_GetColumnsTests : TransformationProvider_GetColumns_GenericTests
9+
public class SQLServerTransformationProvider_GetColumnsTests : TransformationProviderBase
1010
{
1111
[SetUp]
1212
public async Task SetUpAsync()

src/Migrator.Tests/Providers/SQLite/SQLiteTransformationProvider_GetColumnsTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
using System.Threading.Tasks;
33
using DotNetProjects.Migrator.Framework;
44
using DotNetProjects.Migrator.Providers.Impl.SQLite;
5-
using Migrator.Tests.Providers.Generic;
5+
using Migrator.Tests.Providers.Base;
66
using NUnit.Framework;
77

88
namespace Migrator.Tests.Providers.SQLite;
99

1010
[TestFixture]
1111
[Category("SQLite")]
12-
public class SQLiteTransformationProvider_GetColumnsTests : TransformationProvider_GetColumns_GenericTests
12+
public class SQLiteTransformationProvider_GetColumnsTests : TransformationProviderBase
1313
{
1414
[SetUp]
1515
public async Task SetUpAsync()

src/Migrator/Providers/Impl/SqlServer/SqlServerTransformationProvider.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,10 @@ public override Column[] GetColumns(string table)
431431
{
432432
column.MigratorDbType = MigratorDbType.Guid;
433433
}
434+
else if (dataTypeString == "real")
435+
{
436+
column.MigratorDbType = MigratorDbType.Single;
437+
}
434438
else
435439
{
436440
throw new NotImplementedException($"The data type '{dataTypeString}' is not implemented yet. Please file an issue.");

0 commit comments

Comments
 (0)