Skip to content

Commit af56450

Browse files
JaBistDuNarrischJaBistDuNarrisch
authored andcommitted
PostgreSQL GetColumns with default columns are green
1 parent b693821 commit af56450

File tree

3 files changed

+45
-4
lines changed

3 files changed

+45
-4
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
using System;
2+
using System.Data;
3+
using System.Linq;
14
using System.Threading.Tasks;
5+
using DotNetProjects.Migrator.Framework;
26
using Migrator.Tests.Providers.Generic;
37
using NUnit.Framework;
48

@@ -13,4 +17,29 @@ public async Task SetUpAsync()
1317
{
1418
await BeginOracleTransactionAsync();
1519
}
20+
21+
/// <summary>
22+
/// Since SQLite does not support binary default values in the generic file a separate test is needed for Oracle
23+
/// Find the generic test in the base class.
24+
/// </summary>
25+
[Test]
26+
public void GetColumns_Oracle_DefaultValues_Succeeds()
27+
{
28+
// Arrange
29+
const string testTableName = "MyDefaultTestTable";
30+
const string binaryColumnName1 = "binarycolumn1";
31+
32+
// Should be extended by remaining types
33+
Provider.AddTable(testTableName,
34+
new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 })
35+
);
36+
37+
// Act
38+
var columns = Provider.GetColumns(testTableName);
39+
40+
// Assert
41+
var binarycolumn1 = columns.Single(x => x.Name.Equals(binaryColumnName1, StringComparison.OrdinalIgnoreCase));
42+
43+
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
44+
}
1645
}

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

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,41 @@
11
using System;
22
using System.Data;
33
using System.Linq;
4+
using System.Threading.Tasks;
45
using DotNetProjects.Migrator.Framework;
56
using Migrator.Tests.Providers.Base;
7+
using Migrator.Tests.Providers.Generic;
68
using NUnit.Framework;
79

810
namespace Migrator.Tests.Providers.PostgreSQL;
911

1012
[TestFixture]
1113
[Category("Postgre")]
12-
public class PostgreSQLTransformationProvider_GetColumns_DefaultTypeTests : PostgreSQLTransformationProviderTestBase
14+
public class PostgreSQLTransformationProvider_GetColumns_DefaultTypeTests : TransformationProvider_GetColumns_GenericTests
1315
{
16+
[SetUp]
17+
public async Task SetUpAsync()
18+
{
19+
await BeginPostgreSQLTransactionAsync();
20+
}
21+
1422
/// <summary>
1523
/// More tests for GetColumns <see cref="ITransformationProvider.GetColumns"/> in <see cref="TransformationProviderBase"/>
1624
/// </summary>
1725
[Test]
18-
public void GetColumns_DefaultValuesInterval_Succeeds()
26+
public void GetColumns_Postgres_DefaultValues_Succeeds()
1927
{
2028
// Arrange
2129
const string testTableName = "MyDefaultTestTable";
2230
const string intervalColumnName1 = "intervalcolumn1";
2331
const string intervalColumnName2 = "intervalcolumn2";
32+
const string binaryColumnName1 = "binarycolumn1";
2433

2534
// Should be extended by remaining types
2635
Provider.AddTable(testTableName,
2736
new Column(intervalColumnName1, MigratorDbType.Interval, defaultValue: new TimeSpan(100000, 3, 4, 5, 666)),
28-
new Column(intervalColumnName2, MigratorDbType.Interval, defaultValue: new TimeSpan(0, 0, 0, 0, 666))
37+
new Column(intervalColumnName2, MigratorDbType.Interval, defaultValue: new TimeSpan(0, 0, 0, 0, 666)),
38+
new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 })
2939
);
3040

3141
// Act
@@ -34,9 +44,11 @@ public void GetColumns_DefaultValuesInterval_Succeeds()
3444
// Assert
3545
var intervalColumn1 = columns.Single(x => x.Name == intervalColumnName1);
3646
var intervalColumn2 = columns.Single(x => x.Name == intervalColumnName2);
47+
var binarycolumn1 = columns.Single(x => x.Name.Equals(binaryColumnName1, StringComparison.OrdinalIgnoreCase));
3748

3849
Assert.That(intervalColumn1.DefaultValue, Is.EqualTo(new TimeSpan(100000, 3, 4, 5, 666)));
3950
Assert.That(intervalColumn2.DefaultValue, Is.EqualTo(new TimeSpan(0, 0, 0, 0, 666)));
51+
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
4052
}
4153

4254
// 1 will coerce to true on inserts but not for default values in Postgre SQL - same for 0 to false

src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLDialect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public override string Default(object defaultValue)
124124
else if (defaultValue is byte[] byteArray)
125125
{
126126
var convertedString = BitConverter.ToString(byteArray).Replace("-", "").ToLower();
127-
return $"'\\x{convertedString}'";
127+
return @$"DEFAULT E'\\x{convertedString}'";
128128
}
129129

130130
return base.Default(defaultValue);

0 commit comments

Comments
 (0)