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