Skip to content

Commit 69afb8c

Browse files
JaBistDuNarrischJaBistDuNarrisch
authored andcommitted
GetColumns tests
1 parent c3d24ad commit 69afb8c

12 files changed

+178
-145
lines changed

src/Migrator.Tests/Providers/Base/TransformationProviderBase.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,41 @@ namespace Migrator.Tests.Providers.Base;
2222
/// </summary>
2323
public abstract class TransformationProviderBase
2424
{
25+
[TearDown]
26+
public virtual void TearDown()
27+
{
28+
DropTestTables();
29+
30+
Provider?.Rollback();
31+
}
32+
33+
protected void DropTestTables()
34+
{
35+
// Because MySql doesn't support schema transaction
36+
// we got to remove the tables manually... sad...
37+
try
38+
{
39+
Provider.RemoveTable("TestTwo");
40+
}
41+
catch (Exception)
42+
{
43+
}
44+
try
45+
{
46+
Provider.RemoveTable("Test");
47+
}
48+
catch (Exception)
49+
{
50+
}
51+
try
52+
{
53+
Provider.RemoveTable("SchemaInfo");
54+
}
55+
catch (Exception)
56+
{
57+
}
58+
}
59+
2560
protected ITransformationProvider Provider;
2661

2762
protected async Task BeginOracleTransactionAsync()

src/Migrator.Tests/Providers/Base/TransformationProviderSimpleBase.cs

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,41 +7,6 @@ namespace Migrator.Tests.Providers.Base;
77

88
public abstract class TransformationProviderSimpleBase : TransformationProviderBase
99
{
10-
[TearDown]
11-
public virtual void TearDown()
12-
{
13-
DropTestTables();
14-
15-
Provider?.Rollback();
16-
}
17-
18-
protected void DropTestTables()
19-
{
20-
// Because MySql doesn't support schema transaction
21-
// we got to remove the tables manually... sad...
22-
try
23-
{
24-
Provider.RemoveTable("TestTwo");
25-
}
26-
catch (Exception)
27-
{
28-
}
29-
try
30-
{
31-
Provider.RemoveTable("Test");
32-
}
33-
catch (Exception)
34-
{
35-
}
36-
try
37-
{
38-
Provider.RemoveTable("SchemaInfo");
39-
}
40-
catch (Exception)
41-
{
42-
}
43-
}
44-
4510
public void AddDefaultTable()
4611
{
4712
Provider.AddTable("TestTwo",

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

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -12,74 +12,6 @@ namespace Migrator.Tests.Providers.Generic;
1212
/// </summary>
1313
public abstract class TransformationProviderGenericMiscTests : TransformationProviderSimpleBase
1414
{
15-
[Test]
16-
public void GetColumns_DefaultValues_Succeeds()
17-
{
18-
// Arrange
19-
var dateTimeDefaultValue = new DateTime(2000, 1, 2, 3, 4, 5, DateTimeKind.Utc);
20-
var guidDefaultValue = Guid.NewGuid();
21-
var decimalDefaultValue = 14.56565m;
22-
23-
const string testTableName = "MyDefaultTestTable";
24-
25-
const string dateTimeColumnName1 = "datetimecolumn1";
26-
const string dateTimeColumnName2 = "datetimecolumn2";
27-
const string decimalColumnName1 = "decimalcolumn";
28-
const string guidColumnName1 = "guidcolumn1";
29-
const string booleanColumnName1 = "booleancolumn1";
30-
const string int32ColumnName1 = "int32column1";
31-
const string int64ColumnName1 = "int64column1";
32-
const string int64ColumnName2 = "int64column2";
33-
const string stringColumnName1 = "stringcolumn1";
34-
const string binaryColumnName1 = "binarycolumn1";
35-
const string doubleColumnName1 = "doublecolumn1";
36-
37-
// Should be extended by remaining types
38-
Provider.AddTable(testTableName,
39-
new Column(dateTimeColumnName1, DbType.DateTime, dateTimeDefaultValue),
40-
new Column(dateTimeColumnName2, DbType.DateTime2, dateTimeDefaultValue),
41-
new Column(decimalColumnName1, DbType.Decimal, decimalDefaultValue),
42-
new Column(guidColumnName1, DbType.Guid, guidDefaultValue),
43-
44-
// other boolean default values are tested in another test
45-
new Column(booleanColumnName1, DbType.Boolean, true),
46-
47-
new Column(int32ColumnName1, DbType.Int32, defaultValue: 43),
48-
new Column(int64ColumnName1, DbType.Int64, defaultValue: 88),
49-
new Column(int64ColumnName2, DbType.Int64, defaultValue: 0),
50-
new Column(stringColumnName1, DbType.String, defaultValue: "Hello"),
51-
new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 }),
52-
new Column(doubleColumnName1, DbType.Double, defaultValue: 84.874596565)
53-
);
54-
55-
// Act
56-
var columns = Provider.GetColumns(testTableName);
57-
58-
// Assert
59-
var dateTimeColumn1 = columns.Single(x => x.Name == dateTimeColumnName1);
60-
var dateTimeColumn2 = columns.Single(x => x.Name == dateTimeColumnName2);
61-
var decimalColumn1 = columns.Single(x => x.Name == decimalColumnName1);
62-
var guidColumn1 = columns.Single(x => x.Name == guidColumnName1);
63-
var booleanColumn1 = columns.Single(x => x.Name == booleanColumnName1);
64-
var int32Column1 = columns.Single(x => x.Name == int32ColumnName1);
65-
var int64Column1 = columns.Single(x => x.Name == int64ColumnName1);
66-
var int64Column2 = columns.Single(x => x.Name == int64ColumnName2);
67-
var stringColumn1 = columns.Single(x => x.Name == stringColumnName1);
68-
var binarycolumn1 = columns.Single(x => x.Name == binaryColumnName1);
69-
var doubleColumn1 = columns.Single(x => x.Name == doubleColumnName1);
70-
71-
Assert.That(dateTimeColumn1.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
72-
Assert.That(dateTimeColumn2.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
73-
Assert.That(decimalColumn1.DefaultValue, Is.EqualTo(decimalDefaultValue));
74-
Assert.That(guidColumn1.DefaultValue, Is.EqualTo(guidDefaultValue));
75-
Assert.That(booleanColumn1.DefaultValue, Is.True);
76-
Assert.That(int32Column1.DefaultValue, Is.EqualTo(43));
77-
Assert.That(int64Column1.DefaultValue, Is.EqualTo(88));
78-
Assert.That(stringColumn1.DefaultValue, Is.EqualTo("Hello"));
79-
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
80-
Assert.That(doubleColumn1.DefaultValue, Is.EqualTo(84.874596565));
81-
}
82-
8315
[Test]
8416
public void TableExistsWorks()
8517
{
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
using System;
2+
using System.Data;
3+
using System.Linq;
4+
using DotNetProjects.Migrator.Framework;
5+
using Migrator.Tests.Providers.Base;
6+
using NUnit.Framework;
7+
8+
namespace Migrator.Tests.Providers.Generic;
9+
10+
/// <summary>
11+
/// Base class for provider tests.
12+
/// </summary>
13+
public abstract class TransformationProvider_GetColumns_GenericTests : TransformationProviderBase
14+
{
15+
[Test]
16+
public void GetColumns_DefaultValues_Succeeds()
17+
{
18+
// Arrange
19+
var dateTimeDefaultValue = new DateTime(2000, 1, 2, 3, 4, 5, DateTimeKind.Utc);
20+
var guidDefaultValue = Guid.NewGuid();
21+
var decimalDefaultValue = 14.56565m;
22+
23+
const string testTableName = "MyDefaultTestTable";
24+
25+
const string dateTimeColumnName1 = "datetimecolumn1";
26+
const string dateTimeColumnName2 = "datetimecolumn2";
27+
const string decimalColumnName1 = "decimalcolumn";
28+
const string guidColumnName1 = "guidcolumn1";
29+
const string booleanColumnName1 = "booleancolumn1";
30+
const string int32ColumnName1 = "int32column1";
31+
const string int64ColumnName1 = "int64column1";
32+
const string int64ColumnName2 = "int64column2";
33+
const string stringColumnName1 = "stringcolumn1";
34+
const string binaryColumnName1 = "binarycolumn1";
35+
const string doubleColumnName1 = "doublecolumn1";
36+
37+
// Should be extended by remaining types
38+
Provider.AddTable(testTableName,
39+
new Column(dateTimeColumnName1, DbType.DateTime, dateTimeDefaultValue),
40+
new Column(dateTimeColumnName2, DbType.DateTime2, dateTimeDefaultValue),
41+
new Column(decimalColumnName1, DbType.Decimal, decimalDefaultValue),
42+
new Column(guidColumnName1, DbType.Guid, guidDefaultValue),
43+
44+
// other boolean default values are tested in another test
45+
new Column(booleanColumnName1, DbType.Boolean, true),
46+
47+
new Column(int32ColumnName1, DbType.Int32, defaultValue: 43),
48+
new Column(int64ColumnName1, DbType.Int64, defaultValue: 88),
49+
new Column(int64ColumnName2, DbType.Int64, defaultValue: 0),
50+
new Column(stringColumnName1, DbType.String, defaultValue: "Hello"),
51+
new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 }),
52+
new Column(doubleColumnName1, DbType.Double, defaultValue: 84.874596565)
53+
);
54+
55+
// Act
56+
var columns = Provider.GetColumns(testTableName);
57+
58+
// Assert
59+
var dateTimeColumn1 = columns.Single(x => x.Name == dateTimeColumnName1);
60+
var dateTimeColumn2 = columns.Single(x => x.Name == dateTimeColumnName2);
61+
var decimalColumn1 = columns.Single(x => x.Name == decimalColumnName1);
62+
var guidColumn1 = columns.Single(x => x.Name == guidColumnName1);
63+
var booleanColumn1 = columns.Single(x => x.Name == booleanColumnName1);
64+
var int32Column1 = columns.Single(x => x.Name == int32ColumnName1);
65+
var int64Column1 = columns.Single(x => x.Name == int64ColumnName1);
66+
var int64Column2 = columns.Single(x => x.Name == int64ColumnName2);
67+
var stringColumn1 = columns.Single(x => x.Name == stringColumnName1);
68+
var binarycolumn1 = columns.Single(x => x.Name == binaryColumnName1);
69+
var doubleColumn1 = columns.Single(x => x.Name == doubleColumnName1);
70+
71+
Assert.That(dateTimeColumn1.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
72+
Assert.That(dateTimeColumn2.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
73+
Assert.That(decimalColumn1.DefaultValue, Is.EqualTo(decimalDefaultValue));
74+
Assert.That(guidColumn1.DefaultValue, Is.EqualTo(guidDefaultValue));
75+
Assert.That(booleanColumn1.DefaultValue, Is.True);
76+
Assert.That(int32Column1.DefaultValue, Is.EqualTo(43));
77+
Assert.That(int64Column1.DefaultValue, Is.EqualTo(88));
78+
Assert.That(stringColumn1.DefaultValue, Is.EqualTo("Hello"));
79+
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
80+
Assert.That(doubleColumn1.DefaultValue, Is.EqualTo(84.874596565));
81+
}
82+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System.Threading.Tasks;
2+
using Migrator.Tests.Providers.Generic;
3+
using NUnit.Framework;
4+
5+
namespace Migrator.Tests.Providers.OracleProvider;
6+
7+
[TestFixture]
8+
[Category("Oracle")]
9+
public class OracleTransformationProvider_GetColumns_Tests : TransformationProvider_GetColumns_GenericTests
10+
{
11+
[SetUp]
12+
public async Task SetUpAsync()
13+
{
14+
await BeginOracleTransactionAsync();
15+
}
16+
}

src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumnContentSizeTests.cs renamed to src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumnContent_SizeTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace Migrator.Tests.Providers.PostgreSQL;
77

88
[TestFixture]
99
[Category("Postgre")]
10-
public class PostgreSQLTransformationProvider_GetColumnContentSizeTests : PostgreSQLTransformationProviderTestBase
10+
public class PostgreSQLTransformationProvider_GetColumnContentSize_Tests : PostgreSQLTransformationProviderTestBase
1111
{
1212
[Test]
1313
public void GetColumnContentSize_UseStringColumn_MaxContentLengthIsCorrect()

src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumnsDefaultValueTests.cs renamed to src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumns_DefaultValueTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Migrator.Tests.Providers.PostgreSQL;
99

1010
[TestFixture]
1111
[Category("Postgre")]
12-
public class PostgreSQLTransformationProvider_GetColumnsDefaultTypeTests : PostgreSQLTransformationProviderTestBase
12+
public class PostgreSQLTransformationProvider_GetColumns_DefaultTypeTests : PostgreSQLTransformationProviderTestBase
1313
{
1414
/// <summary>
1515
/// More tests for GetColumns <see cref="ITransformationProvider.GetColumns"/> in <see cref="TransformationProviderBase"/>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System.Threading.Tasks;
2+
using Migrator.Tests.Providers.Generic;
3+
using NUnit.Framework;
4+
5+
namespace Migrator.Tests.Providers.PostgreSQL;
6+
7+
[TestFixture]
8+
[Category("Postgre")]
9+
public class PostgreSQLTransformationProvider_GetColumns_Tests : TransformationProvider_GetColumns_GenericTests
10+
{
11+
[SetUp]
12+
public async Task SetUpAsync()
13+
{
14+
await BeginPostgreSQLTransactionAsync();
15+
}
16+
}

src/Migrator.Tests/Providers/SQLServer/Base/SQLServerTransformationProviderTestBase.cs

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
using System.Threading;
21
using System.Threading.Tasks;
3-
using DotNetProjects.Migrator.Providers;
4-
using DotNetProjects.Migrator.Providers.Impl.SqlServer;
5-
using DryIoc;
6-
using Migrator.Tests.Database;
7-
using Migrator.Tests.Database.Interfaces;
82
using Migrator.Tests.Providers.Base;
9-
using Migrator.Tests.Settings;
10-
using Migrator.Tests.Settings.Config;
11-
using Migrator.Tests.Settings.Models;
123
using NUnit.Framework;
134

145
namespace Migrator.Tests.Providers.SQLServer.Base;
@@ -20,26 +11,7 @@ public abstract class SQLServerTransformationProviderTestBase : TransformationPr
2011
[SetUp]
2112
public async Task SetUpAsync()
2213
{
23-
var configReader = new ConfigurationReader();
24-
25-
var databaseConnectionConfig = configReader.GetDatabaseConnectionConfigById(DatabaseConnectionConfigIds.SQLServerId);
26-
27-
var connectionString = databaseConnectionConfig?.ConnectionString;
28-
29-
if (string.IsNullOrEmpty(connectionString))
30-
{
31-
throw new IgnoreException($"No SQL Server {nameof(DatabaseConnectionConfig.ConnectionString)} is set.");
32-
}
33-
34-
DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", () => Microsoft.Data.SqlClient.SqlClientFactory.Instance);
35-
36-
using var container = new Container();
37-
container.RegisterDatabaseIntegrationTestService();
38-
var databaseIntegrationTestServiceFactory = container.Resolve<IDatabaseIntegrationTestServiceFactory>();
39-
var sqlServerIntegrationTestService = databaseIntegrationTestServiceFactory.Create(DatabaseProviderType.SQLServer);
40-
var databaseInfo = await sqlServerIntegrationTestService.CreateTestDatabaseAsync(databaseConnectionConfig, CancellationToken.None);
41-
42-
Provider = new SqlServerTransformationProvider(new SqlServerDialect(), databaseInfo.DatabaseConnectionConfig.ConnectionString, "dbo", "default", "Microsoft.Data.SqlClient");
14+
await BeginSQLServerTransactionAsync();
4315

4416
AddDefaultTable();
4517
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System.Threading.Tasks;
2+
using Migrator.Tests.Providers.Generic;
3+
using NUnit.Framework;
4+
5+
namespace Migrator.Tests.Providers.SQLServer;
6+
7+
[TestFixture]
8+
[Category("SqlServer")]
9+
public class SQLServerTransformationProvider_GetColumnsTests : TransformationProvider_GetColumns_GenericTests
10+
{
11+
[SetUp]
12+
public async Task SetUpAsync()
13+
{
14+
await BeginSQLServerTransactionAsync();
15+
}
16+
}

0 commit comments

Comments
 (0)