@@ -31,7 +31,7 @@ public void CanParseColumnDefForNotNull()
3131 }
3232
3333 [ Test ]
34- public void RemoveDefaultValue_Success ( )
34+ public void RemoveDefaultValue_Succeeds ( )
3535 {
3636 // Arrange
3737 var testTableName = "MyDefaultTestTable" ;
@@ -59,7 +59,7 @@ public void RemoveDefaultValue_Success()
5959 }
6060
6161 [ Test ]
62- public void AddPrimaryKey_CompositePrimaryKey_Success ( )
62+ public void AddPrimaryKey_CompositePrimaryKey_Succeeds ( )
6363 {
6464 // Arrange
6565 var testTableName = "MyDefaultTestTable" ;
@@ -92,7 +92,7 @@ public void AddPrimaryKey_CompositePrimaryKey_Success()
9292 }
9393
9494 [ Test ]
95- public void AddTable_AddingColumnPropertyUnique_AddsUniqe ( )
95+ public void AddPrimaryKey_HavingColumnPropertyUniqueAndIndex_RebuildSucceeds ( )
9696 {
9797 // Arrange
9898 var testTableName = "MyDefaultTestTable" ;
@@ -114,15 +114,107 @@ public void AddTable_AddingColumnPropertyUnique_AddsUniqe()
114114 ( ( SQLiteTransformationProvider ) _provider ) . AddPrimaryKey ( "MyPrimaryKeyName" , testTableName , [ propertyName1 ] ) ;
115115
116116 // Assert
117+ using var command = _provider . GetCommand ( ) ;
118+ using var reader = _provider . ExecuteQuery ( command , $ "SELECT COUNT(*) as Count from { testTableName } ") ;
119+ reader . Read ( ) ;
120+ var count = reader . GetInt32 ( reader . GetOrdinal ( "Count" ) ) ;
121+ Assert . That ( count , Is . EqualTo ( 1 ) ) ;
122+
117123 var tableInfoAfter = ( ( SQLiteTransformationProvider ) _provider ) . GetSQLiteTableInfo ( testTableName ) ;
118124
119125 Assert . That ( tableInfoBefore . Columns . Single ( x => x . Name == propertyName1 ) . ColumnProperty . HasFlag ( ColumnProperty . PrimaryKey ) , Is . False ) ;
120126 Assert . That ( tableInfoBefore . Columns . Single ( x => x . Name == propertyName2 ) . ColumnProperty . HasFlag ( ColumnProperty . PrimaryKey ) , Is . False ) ;
127+
121128 Assert . That ( tableInfoAfter . Columns . Single ( x => x . Name == propertyName1 ) . ColumnProperty . HasFlag ( ColumnProperty . PrimaryKey ) , Is . True ) ;
122129 Assert . That ( tableInfoAfter . Columns . Single ( x => x . Name == propertyName2 ) . ColumnProperty . HasFlag ( ColumnProperty . PrimaryKey ) , Is . False ) ;
123130
124131 var indexAfter = tableInfoAfter . Indexes . Single ( ) ;
125132 Assert . That ( indexAfter . Name , Is . EqualTo ( indexName ) ) ;
126133 CollectionAssert . AreEquivalent ( indexAfter . KeyColumns , new string [ ] { propertyName1 , propertyName2 } ) ;
127134 }
135+
136+ [ Test ]
137+ public void RemovePrimaryKey_HavingColumnPropertyUniqueAndIndex_RebuildSucceeds ( )
138+ {
139+ // Arrange
140+ var testTableName = "MyDefaultTestTable" ;
141+ var propertyName1 = "Color1" ;
142+ var propertyName2 = "Color2" ;
143+ var indexName = "MyIndexName" ;
144+
145+ _provider . AddTable ( testTableName ,
146+ new Column ( propertyName1 , DbType . Int32 , ColumnProperty . PrimaryKey ) ,
147+ new Column ( propertyName2 , DbType . Int32 , ColumnProperty . Unique )
148+ ) ;
149+
150+ _provider . AddIndex ( indexName , testTableName , [ propertyName1 , propertyName2 ] ) ;
151+ var tableInfoBefore = ( ( SQLiteTransformationProvider ) _provider ) . GetSQLiteTableInfo ( testTableName ) ;
152+
153+ _provider . ExecuteNonQuery ( $ "INSERT INTO { testTableName } ({ propertyName1 } , { propertyName2 } ) VALUES (1, 2)") ;
154+
155+ // Act
156+ ( ( SQLiteTransformationProvider ) _provider ) . RemovePrimaryKey ( tableName : testTableName ) ;
157+
158+ // Assert
159+ using var command = _provider . GetCommand ( ) ;
160+ using var reader = _provider . ExecuteQuery ( command , $ "SELECT COUNT(*) as Count from { testTableName } ") ;
161+ reader . Read ( ) ;
162+ var count = reader . GetInt32 ( reader . GetOrdinal ( "Count" ) ) ;
163+ Assert . That ( count , Is . EqualTo ( 1 ) ) ;
164+
165+ var tableInfoAfter = ( ( SQLiteTransformationProvider ) _provider ) . GetSQLiteTableInfo ( testTableName ) ;
166+
167+ Assert . That ( tableInfoBefore . Columns . Single ( x => x . Name == propertyName1 ) . ColumnProperty . HasFlag ( ColumnProperty . PrimaryKey ) , Is . True ) ;
168+ Assert . That ( tableInfoBefore . Columns . Single ( x => x . Name == propertyName2 ) . ColumnProperty . HasFlag ( ColumnProperty . Unique ) , Is . True ) ;
169+
170+ Assert . That ( tableInfoAfter . Columns . Single ( x => x . Name == propertyName1 ) . ColumnProperty . HasFlag ( ColumnProperty . PrimaryKey ) , Is . False ) ;
171+ Assert . That ( tableInfoAfter . Columns . Single ( x => x . Name == propertyName2 ) . ColumnProperty . HasFlag ( ColumnProperty . Unique ) , Is . True ) ;
172+
173+ var indexAfter = tableInfoAfter . Indexes . Single ( ) ;
174+ Assert . That ( indexAfter . Name , Is . EqualTo ( indexName ) ) ;
175+ CollectionAssert . AreEquivalent ( indexAfter . KeyColumns , new string [ ] { propertyName1 , propertyName2 } ) ;
176+ }
177+
178+ [ Test ]
179+ public void RemoveAllIndexes_HavingIndexAndUnique_RebuildSucceeds ( )
180+ {
181+ // Arrange
182+ var testTableName = "MyDefaultTestTable" ;
183+ var propertyName1 = "Color1" ;
184+ var propertyName2 = "Color2" ;
185+ var indexName = "MyIndexName" ;
186+
187+ _provider . AddTable ( testTableName ,
188+ new Column ( propertyName1 , DbType . Int32 , ColumnProperty . PrimaryKey ) ,
189+ new Column ( propertyName2 , DbType . Int32 )
190+ ) ;
191+
192+ _provider . AddIndex ( indexName , testTableName , [ propertyName1 , propertyName2 ] ) ;
193+ _provider . AddUniqueConstraint ( "MyConstraint" , testTableName , [ propertyName1 , propertyName2 ] ) ;
194+ var tableInfoBefore = ( ( SQLiteTransformationProvider ) _provider ) . GetSQLiteTableInfo ( testTableName ) ;
195+
196+ _provider . AddUniqueConstraint ( "MyUniqueConstraintName" , testTableName , [ propertyName1 , propertyName2 ] ) ;
197+
198+ _provider . ExecuteNonQuery ( $ "INSERT INTO { testTableName } ({ propertyName1 } , { propertyName2 } ) VALUES (1, 2)") ;
199+
200+ // Act
201+ ( ( SQLiteTransformationProvider ) _provider ) . RemoveAllIndexes ( tableName : testTableName ) ;
202+
203+ // Assert
204+ using var command = _provider . GetCommand ( ) ;
205+ using var reader = _provider . ExecuteQuery ( command , $ "SELECT COUNT(*) as Count from { testTableName } ") ;
206+ reader . Read ( ) ;
207+ var count = reader . GetInt32 ( reader . GetOrdinal ( "Count" ) ) ;
208+ Assert . That ( count , Is . EqualTo ( 1 ) ) ;
209+
210+ var tableInfoAfter = ( ( SQLiteTransformationProvider ) _provider ) . GetSQLiteTableInfo ( testTableName ) ;
211+
212+ Assert . That ( tableInfoBefore . Columns . Single ( x => x . Name == propertyName1 ) . ColumnProperty . HasFlag ( ColumnProperty . PrimaryKey ) , Is . True ) ;
213+ Assert . That ( tableInfoAfter . Columns . Single ( x => x . Name == propertyName1 ) . ColumnProperty . HasFlag ( ColumnProperty . PrimaryKey ) , Is . True ) ;
214+
215+ Assert . That ( tableInfoBefore . Uniques , Is . Not . Empty ) ;
216+ Assert . That ( tableInfoBefore . Indexes , Is . Not . Empty ) ;
217+ Assert . That ( tableInfoAfter . Uniques , Is . Empty ) ;
218+ Assert . That ( tableInfoAfter . Indexes , Is . Empty ) ;
219+ }
128220}
0 commit comments