@@ -160,5 +160,83 @@ public void Does_DoesColumnExist()
160160 exists = db . ColumnExists < Signal > ( x => x . Code ) ;
161161 Assert . That ( exists ) ;
162162 }
163+
164+ [ Test ]
165+ public void Can_create_table_with_custom_field_order ( )
166+ {
167+ using ( var db = OpenDbConnection ( ) )
168+ {
169+ var modelDefinition = typeof ( ModelWithCustomFiledOrder ) . GetModelMetadata ( ) ;
170+ db . DropAndCreateTable < ModelWithCustomFiledOrder > ( ) ;
171+ var defs = db . SqlList < ( string field , string type , string @null , string key , string @default , string extra ) > ( "desc " + modelDefinition . Name ) ;
172+ Assert . AreEqual ( nameof ( ModelWithCustomFiledOrder . Filed1 ) , defs [ 0 ] . field ) ;
173+ Assert . AreEqual ( nameof ( ModelWithCustomFiledOrder . Filed3 ) , defs [ 1 ] . field ) ;
174+ Assert . AreEqual ( nameof ( ModelWithCustomFiledOrder . Filed2 ) , defs [ 2 ] . field ) ;
175+ Assert . AreEqual ( nameof ( ModelWithCustomFiledOrder . Id ) , defs [ 3 ] . field ) ;
176+ }
177+ }
178+
179+ [ Test ]
180+ public void Can_create_table_without_custom_field_order ( )
181+ {
182+ using ( var db = OpenDbConnection ( ) )
183+ {
184+ var modelDefinition = typeof ( ModelWithoutCustomFiledOrder ) . GetModelMetadata ( ) ;
185+ db . DropAndCreateTable < ModelWithoutCustomFiledOrder > ( ) ;
186+ var defs = db . SqlList < ( string field , string type , string @null , string key , string @default , string extra ) > ( "desc " + modelDefinition . Name ) ;
187+ Assert . AreEqual ( nameof ( ModelWithoutCustomFiledOrder . Id ) , defs [ 0 ] . field ) ;
188+ Assert . AreEqual ( nameof ( ModelWithoutCustomFiledOrder . Filed1 ) , defs [ 1 ] . field ) ;
189+ Assert . AreEqual ( nameof ( ModelWithoutCustomFiledOrder . Filed2 ) , defs [ 2 ] . field ) ;
190+ Assert . AreEqual ( nameof ( ModelWithoutCustomFiledOrder . Filed3 ) , defs [ 3 ] . field ) ;
191+ }
192+ }
193+
194+ [ Test ]
195+ public void model_definition_without_custom_order ( )
196+ {
197+ var modelDefinition = typeof ( ModelWithoutCustomFiledOrder ) . GetModelMetadata ( ) ;
198+ Assert . AreEqual ( 4 , modelDefinition . FieldDefinitions . Count ) ;
199+ Assert . AreEqual ( 0 , modelDefinition . FieldDefinitions . Find ( fd => fd . Name == nameof ( ModelWithoutCustomFiledOrder . Id ) ) . Order ) ;
200+ Assert . AreEqual ( 1 , modelDefinition . FieldDefinitions . Find ( fd => fd . Name == nameof ( ModelWithoutCustomFiledOrder . Filed1 ) ) . Order ) ;
201+ Assert . AreEqual ( 2 , modelDefinition . FieldDefinitions . Find ( fd => fd . Name == nameof ( ModelWithoutCustomFiledOrder . Filed2 ) ) . Order ) ;
202+ Assert . AreEqual ( 3 , modelDefinition . FieldDefinitions . Find ( fd => fd . Name == nameof ( ModelWithoutCustomFiledOrder . Filed3 ) ) . Order ) ;
203+ }
204+
205+ [ Test ]
206+ public void model_definition_with_custom_order ( )
207+ {
208+ var modelDefinition = typeof ( ModelWithCustomFiledOrder ) . GetModelMetadata ( ) ;
209+ Assert . AreEqual ( 4 , modelDefinition . FieldDefinitions . Count ) ;
210+ Assert . AreEqual ( 100 , modelDefinition . FieldDefinitions . Find ( fd => fd . Name == nameof ( ModelWithoutCustomFiledOrder . Id ) ) . Order ) ;
211+ Assert . AreEqual ( 5 , modelDefinition . FieldDefinitions . Find ( fd => fd . Name == nameof ( ModelWithoutCustomFiledOrder . Filed1 ) ) . Order ) ;
212+ Assert . AreEqual ( 13 , modelDefinition . FieldDefinitions . Find ( fd => fd . Name == nameof ( ModelWithoutCustomFiledOrder . Filed2 ) ) . Order ) ;
213+ Assert . AreEqual ( 8 , modelDefinition . FieldDefinitions . Find ( fd => fd . Name == nameof ( ModelWithoutCustomFiledOrder . Filed3 ) ) . Order ) ;
214+ }
215+
216+ public class ModelWithoutCustomFiledOrder
217+ {
218+ [ PrimaryKey ]
219+ [ AutoIncrement ]
220+ public int Id { get ; set ; }
221+
222+ public int Filed1 { get ; set ; }
223+ public string Filed2 { get ; set ; }
224+ public float Filed3 { get ; set ; }
225+ }
226+
227+ public class ModelWithCustomFiledOrder
228+ {
229+ [ PrimaryKey ]
230+ [ AutoIncrement ]
231+ [ CustomField ( Order = 100 ) ]
232+ public int Id { get ; set ; }
233+
234+ [ CustomField ( Order = 5 ) ]
235+ public int Filed1 { get ; set ; }
236+ [ CustomField ( Order = 13 ) ]
237+ public string Filed2 { get ; set ; }
238+ [ CustomField ( Order = 8 ) ]
239+ public float Filed3 { get ; set ; }
240+ }
163241 }
164242}
0 commit comments