1
+ using System ;
2
+ using System . Data ;
3
+ using System . Linq ;
4
+ using System . Runtime . CompilerServices ;
5
+ using System . Threading . Tasks ;
6
+ using DotNetProjects . Migrator . Framework ;
7
+ using Migrator . Tests . Providers . Base ;
8
+ using NUnit . Framework ;
9
+
10
+ namespace Migrator . Tests . Providers . SQLServer ;
11
+
12
+ [ TestFixture ]
13
+ [ Category ( "SqlServer" ) ]
14
+ public class SQLServerTransformationProvider_GetColumns_DefaultValues_Tests : TransformationProviderBase
15
+ {
16
+ [ SetUp ]
17
+ public async Task SetUpAsync ( )
18
+ {
19
+ await BeginSQLServerTransactionAsync ( ) ;
20
+ }
21
+
22
+ [ Test ]
23
+ public void GetColumns_DefaultValues_Succeeds ( )
24
+ {
25
+ // Arrange
26
+ var dateTimeDefaultValue = new DateTime ( 2000 , 1 , 2 , 3 , 4 , 5 , DateTimeKind . Utc ) ;
27
+ var guidDefaultValue = Guid . NewGuid ( ) ;
28
+ var decimalDefaultValue = 14.56565m ;
29
+
30
+ const string testTableName = "MyDefaultTestTable" ;
31
+
32
+ const string dateTimeColumnName1 = "datetimecolumn1" ;
33
+ const string dateTimeColumnName2 = "datetimecolumn2" ;
34
+ const string decimalColumnName1 = "decimalcolumn" ;
35
+ const string guidColumnName1 = "guidcolumn1" ;
36
+ const string booleanColumnName1 = "booleancolumn1" ;
37
+ const string int32ColumnName1 = "int32column1" ;
38
+ const string int64ColumnName1 = "int64column1" ;
39
+ const string int64ColumnName2 = "int64column2" ;
40
+ const string stringColumnName1 = "stringcolumn1" ;
41
+ const string binaryColumnName1 = "binarycolumn1" ;
42
+ const string doubleColumnName1 = "doublecolumn1" ;
43
+ const string byteColumnName1 = "byteColumn1" ;
44
+
45
+ // Should be extended by remaining types
46
+ Provider . AddTable ( testTableName ,
47
+ new Column ( dateTimeColumnName1 , DbType . DateTime , dateTimeDefaultValue ) ,
48
+ new Column ( dateTimeColumnName2 , DbType . DateTime2 , dateTimeDefaultValue ) ,
49
+ new Column ( decimalColumnName1 , DbType . Decimal , decimalDefaultValue ) ,
50
+ new Column ( guidColumnName1 , DbType . Guid , guidDefaultValue ) ,
51
+
52
+ // other boolean default values are tested in another test
53
+ new Column ( booleanColumnName1 , DbType . Boolean , true ) ,
54
+
55
+ new Column ( int32ColumnName1 , DbType . Int32 , defaultValue : 43 ) ,
56
+ new Column ( int64ColumnName1 , DbType . Int64 , defaultValue : 88 ) ,
57
+ new Column ( int64ColumnName2 , DbType . Int64 , defaultValue : 0 ) ,
58
+ new Column ( stringColumnName1 , DbType . String , defaultValue : "Hello" ) ,
59
+ new Column ( binaryColumnName1 , DbType . Binary , defaultValue : new byte [ ] { 12 , 32 , 34 } ) ,
60
+ new Column ( doubleColumnName1 , DbType . Double , defaultValue : 84.874596567 ) { Precision = 19 , Scale = 10 } ,
61
+ new Column ( byteColumnName1 , DbType . Byte , defaultValue : 233 )
62
+ ) ;
63
+
64
+ // Act
65
+ var columns = Provider . GetColumns ( testTableName ) ;
66
+
67
+ // Assert
68
+ var dateTimeColumn1 = columns . Single ( x => x . Name . Equals ( dateTimeColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
69
+ var dateTimeColumn2 = columns . Single ( x => x . Name . Equals ( dateTimeColumnName2 , StringComparison . OrdinalIgnoreCase ) ) ;
70
+ var decimalColumn1 = columns . Single ( x => x . Name . Equals ( decimalColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
71
+ var guidColumn1 = columns . Single ( x => x . Name . Equals ( guidColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
72
+ var booleanColumn1 = columns . Single ( x => x . Name . Equals ( booleanColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
73
+ var int32Column1 = columns . Single ( x => x . Name . Equals ( int32ColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
74
+ var int64Column1 = columns . Single ( x => x . Name . Equals ( int64ColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
75
+ var int64Column2 = columns . Single ( x => x . Name . Equals ( int64ColumnName2 , StringComparison . OrdinalIgnoreCase ) ) ;
76
+ var stringColumn1 = columns . Single ( x => x . Name . Equals ( stringColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
77
+ var binarycolumn1 = columns . Single ( x => x . Name . Equals ( binaryColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
78
+ var doubleColumn1 = columns . Single ( x => x . Name . Equals ( doubleColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
79
+ var byteColumn1 = columns . Single ( x => x . Name . Equals ( byteColumnName1 , StringComparison . OrdinalIgnoreCase ) ) ;
80
+
81
+ Assert . That ( dateTimeColumn1 . DefaultValue , Is . EqualTo ( dateTimeDefaultValue ) ) ;
82
+ Assert . That ( dateTimeColumn2 . DefaultValue , Is . EqualTo ( dateTimeDefaultValue ) ) ;
83
+ Assert . That ( decimalColumn1 . DefaultValue , Is . EqualTo ( decimalDefaultValue ) ) ;
84
+ Assert . That ( guidColumn1 . DefaultValue , Is . EqualTo ( guidDefaultValue ) ) ;
85
+ Assert . That ( booleanColumn1 . DefaultValue , Is . True ) ;
86
+ Assert . That ( int32Column1 . DefaultValue , Is . EqualTo ( 43 ) ) ;
87
+ Assert . That ( int64Column1 . DefaultValue , Is . EqualTo ( 88 ) ) ;
88
+ Assert . That ( stringColumn1 . DefaultValue , Is . EqualTo ( "Hello" ) ) ;
89
+ Assert . That ( binarycolumn1 . DefaultValue , Is . EqualTo ( new byte [ ] { 12 , 32 , 34 } ) ) ;
90
+ Assert . That ( doubleColumn1 . DefaultValue , Is . EqualTo ( 84.874596567 ) ) ;
91
+ Assert . That ( byteColumn1 . DefaultValue , Is . EqualTo ( 233 ) ) ;
92
+ }
93
+ }
0 commit comments