1- using DotNetProjects . Migrator . Framework ;
1+ using System . Linq ;
22using DotNetProjects . Migrator . Providers . Impl . SQLite ;
33using Migrator . Framework ;
44using Migrator . Tests . Providers . SQLite . Base ;
@@ -11,17 +11,123 @@ namespace Migrator.Tests.Providers.SQLite;
1111public class SQLiteTransformationProvider_GetColumnsTests : SQLiteTransformationProviderTestBase
1212{
1313 [ Test ]
14- public void CheckForeignKeyIntegrity_IntegrityViolated_ReturnsFalse ( )
14+ public void GetColumns_UniqueButNotPrimaryKey_ReturnsFalse ( )
1515 {
16+ // Arrange
1617 const string tableName = "GetColumnsTest" ;
18+ _provider . AddTable ( tableName , new Column ( "Id" , System . Data . DbType . Int32 , ColumnProperty . Unique ) ) ;
19+
20+ // Act
21+ var columns = _provider . GetColumns ( tableName ) ;
1722
23+ // Assert
24+ Assert . That ( columns . Single ( ) . ColumnProperty , Is . EqualTo ( ColumnProperty . Null | ColumnProperty . Unique ) ) ;
25+ }
26+
27+ [ Test ]
28+ public void GetColumns_PrimaryAndUnique_ReturnsFalse ( )
29+ {
1830 // Arrange
19- _provider . AddTable ( tableName , new Column ( "Id" , System . Data . DbType . Int32 , ColumnProperty . Unique ) ) ;
31+ const string tableName = "GetColumnsTest" ;
32+ _provider . AddTable ( tableName , new Column ( "Id" , System . Data . DbType . Int32 , ColumnProperty . Unique | ColumnProperty . PrimaryKey ) ) ;
33+
34+ // Act
35+ var columns = _provider . GetColumns ( tableName ) ;
36+
37+ // Assert
38+ Assert . That ( columns . Single ( ) . ColumnProperty , Is . EqualTo (
39+ ColumnProperty . Null |
40+ ColumnProperty . Unique |
41+ ColumnProperty . PrimaryKey ) ) ;
42+ }
43+
44+ [ Test ]
45+ public void GetColumns_Primary_ColumnPropertyOk ( )
46+ {
47+ // Arrange
48+ const string tableName = "GetColumnsTest" ;
49+ _provider . AddTable ( tableName , new Column ( "Id" , System . Data . DbType . Int32 , ColumnProperty . PrimaryKey ) ) ;
50+ _provider . GetColumns ( tableName ) ;
51+
52+ // Act
53+ var columns = _provider . GetColumns ( tableName ) ;
54+
55+ // Assert
56+ Assert . That ( columns . Single ( ) . ColumnProperty , Is . EqualTo (
57+ ColumnProperty . Null |
58+ ColumnProperty . PrimaryKey ) ) ;
59+ }
60+
61+ [ Test ]
62+ public void GetColumns_PrimaryKey_ContainsPrimaryKey ( )
63+ {
64+ // Arrange
65+ const string tableName = "GetColumnsTest" ;
66+ _provider . AddTable ( tableName , new Column ( "Id" , System . Data . DbType . Int32 , ColumnProperty . PrimaryKey ) ) ;
67+
68+ _provider . GetColumns ( tableName ) ;
69+
70+ // Act
71+ var columns = _provider . GetColumns ( tableName ) ;
72+
73+ // Assert
74+ Assert . That ( columns . Single ( ) . ColumnProperty , Is . EqualTo (
75+ ColumnProperty . Null |
76+ ColumnProperty . PrimaryKey ) ) ;
77+ }
78+
79+ [ Test ]
80+ public void GetColumns_PrimaryKeyOnTwoColumns_BothColumnsHavePrimaryKeyAndAreNotNull ( )
81+ {
82+ // Arrange
83+ const string tableName = "GetColumnsTest" ;
84+
85+ _provider . AddTable ( tableName ,
86+ new Column ( "Id" , System . Data . DbType . Int32 , ColumnProperty . PrimaryKey ) ,
87+ new Column ( "Id2" , System . Data . DbType . Int32 , ColumnProperty . PrimaryKey )
88+ ) ;
89+
90+ _provider . GetColumns ( tableName ) ;
91+
92+ // Act
93+ var columns = _provider . GetColumns ( tableName ) ;
94+
95+ // Assert
96+ Assert . That ( columns [ 0 ] . ColumnProperty , Is . EqualTo ( ColumnProperty . PrimaryKey | ColumnProperty . NotNull ) ) ;
97+ Assert . That ( columns [ 1 ] . ColumnProperty , Is . EqualTo ( ColumnProperty . PrimaryKey | ColumnProperty . NotNull ) ) ;
98+ }
99+
100+ [ Test ]
101+ public void GetColumns_AddUniqueWithTwoColumns_NoUniqueOnColumnLevel ( )
102+ {
103+ // Arrange
104+ const string tableName = "GetColumnsTest" ;
105+ _provider . AddTable ( tableName , new Column ( "Bla1" , System . Data . DbType . Int32 ) , new Column ( "Bla2" , System . Data . DbType . Int32 ) ) ;
106+
107+ _provider . AddUniqueConstraint ( "Index name not used in SQLite" , tableName , "Bla1, Bla2" ) ;
20108
21109 // Act
22110 var columns = _provider . GetColumns ( tableName ) ;
23111
24112 // Assert
113+ Assert . That ( columns [ 0 ] . ColumnProperty , Is . EqualTo ( ColumnProperty . Null ) ) ;
114+ }
115+
116+ [ Test , Description ( "Add index. Should be added and detected as index" ) ]
117+ public void GetSQLiteTableInfo_GetIndexesAndColumnsWithIndex_NoUniqueOnTheColumnsAndIndexExists ( )
118+ {
119+ // Arrange
120+ const string tableName = "GetColumnsTest" ;
121+ _provider . AddTable ( tableName , new Column ( "Bla1" , System . Data . DbType . Int32 ) , new Column ( "Bla2" , System . Data . DbType . Int32 ) ) ;
122+ _provider . AddIndex ( "IndexName" , tableName , [ "Bla1" , "Bla2" ] ) ;
123+
124+ // Act
125+ var sqliteInfo = ( ( SQLiteTransformationProvider ) _provider ) . GetSQLiteTableInfo ( tableName ) ;
25126
127+ // Assert
128+ Assert . That ( sqliteInfo . Columns [ 0 ] . ColumnProperty , Is . EqualTo ( ColumnProperty . Null ) ) ;
129+ Assert . That ( sqliteInfo . Columns [ 1 ] . ColumnProperty , Is . EqualTo ( ColumnProperty . Null ) ) ;
130+ Assert . That ( sqliteInfo . Uniques , Is . Empty ) ;
131+ Assert . That ( sqliteInfo . Indexes . Single ( ) . Unique , Is . False ) ;
26132 }
27133}
0 commit comments