@@ -41,22 +41,26 @@ def mock_foreign_key(name, from_column, to_table, to_column = 'id', constraints
41
41
on_update : constraints [ :on_update ] )
42
42
end
43
43
44
- def mock_connection ( indexes = [ ] , foreign_keys = [ ] )
45
- double ( 'Conn' ,
46
- indexes : indexes ,
47
- foreign_keys : foreign_keys ,
48
- supports_foreign_keys? : true )
44
+ def mock_connection ( options )
45
+ default_options = {
46
+ indexes : [ ] ,
47
+ foreign_keys : [ ] ,
48
+ supports_foreign_keys? : true ,
49
+ table_comment : nil
50
+ }
51
+
52
+ double ( 'Conn' , default_options . merge ( options ) )
49
53
end
50
54
51
- def mock_class ( table_name , primary_key , columns , indexes = [ ] , foreign_keys = [ ] )
55
+ def mock_class ( table_name , primary_key , columns , connection_options : { } )
52
56
options = {
53
- connection : mock_connection ( indexes , foreign_keys ) ,
54
- table_exists? : true ,
55
- table_name : table_name ,
56
- primary_key : primary_key ,
57
- column_names : columns . map { |col | col . name . to_s } ,
58
- columns : columns ,
59
- column_defaults : Hash [ columns . map { |col | [ col . name , col . default ] } ] ,
57
+ connection : mock_connection ( connection_options ) ,
58
+ table_exists? : true ,
59
+ table_name : table_name ,
60
+ primary_key : primary_key ,
61
+ column_names : columns . map { |col | col . name . to_s } ,
62
+ columns : columns ,
63
+ column_defaults : Hash [ columns . map { |col | [ col . name , col . default ] } ] ,
60
64
table_name_prefix : ''
61
65
}
62
66
@@ -217,7 +221,14 @@ def mock_column(name, type, options = {})
217
221
end
218
222
219
223
let :klass do
220
- mock_class ( :users , primary_key , columns , indexes , foreign_keys )
224
+ mock_class ( :users ,
225
+ primary_key ,
226
+ columns ,
227
+ connection_options : {
228
+ indexes : indexes ,
229
+ foreign_keys : foreign_keys ,
230
+ table_comment : table_comment
231
+ } )
221
232
end
222
233
223
234
let :indexes do
@@ -228,6 +239,10 @@ def mock_column(name, type, options = {})
228
239
[ ]
229
240
end
230
241
242
+ let :table_comment do
243
+ nil
244
+ end
245
+
231
246
context 'when option is not present' do
232
247
let :options do
233
248
{ }
@@ -400,7 +415,13 @@ def mock_column(name, type, options = {})
400
415
end
401
416
402
417
let :klass do
403
- mock_class ( :posts , primary_key , columns , indexes , foreign_keys ) . tap do |mock_klass |
418
+ mock_class ( :posts ,
419
+ primary_key ,
420
+ columns ,
421
+ connection_options : {
422
+ indexes : indexes ,
423
+ foreign_keys : foreign_keys
424
+ } ) . tap do |mock_klass |
404
425
allow ( mock_klass ) . to receive ( :translation_class ) . and_return ( translation_klass )
405
426
end
406
427
end
@@ -1061,6 +1082,33 @@ def mock_column(name, type, options = {})
1061
1082
{ with_comment : 'yes' }
1062
1083
end
1063
1084
1085
+ context 'when table have comments' do
1086
+ let :table_comment do
1087
+ 'users table comment'
1088
+ end
1089
+
1090
+ let :columns do
1091
+ [
1092
+ mock_column ( :id , :integer , limit : 8 ) ,
1093
+ ]
1094
+ end
1095
+
1096
+ let :expected_result do
1097
+ <<~EOS
1098
+ # Schema Info
1099
+ #
1100
+ # Table name: users(users table comment)
1101
+ #
1102
+ # id :integer not null, primary key
1103
+ #
1104
+ EOS
1105
+ end
1106
+
1107
+ it 'works with option "with_comment"' do
1108
+ is_expected . to eq expected_result
1109
+ end
1110
+ end
1111
+
1064
1112
context 'when columns have comments' do
1065
1113
let :columns do
1066
1114
[
@@ -2566,14 +2614,16 @@ def annotate_one_file(options = {})
2566
2614
mock_column ( :id , :integer ) ,
2567
2615
mock_column ( :foreign_thing_id , :integer )
2568
2616
] ,
2569
- [ ] ,
2570
- [
2571
- mock_foreign_key ( 'fk_rails_cf2568e89e' ,
2572
- 'foreign_thing_id' ,
2573
- 'foreign_things' ,
2574
- 'id' ,
2575
- on_delete : :cascade )
2576
- ] )
2617
+ connection_options : {
2618
+ indexes : [ ] ,
2619
+ foreign_keys : [
2620
+ mock_foreign_key ( 'fk_rails_cf2568e89e' ,
2621
+ 'foreign_thing_id' ,
2622
+ 'foreign_things' ,
2623
+ 'id' ,
2624
+ on_delete : :cascade )
2625
+ ]
2626
+ } )
2577
2627
@schema_info = AnnotateModels . get_schema_info ( klass , '== Schema Info' , show_foreign_keys : true )
2578
2628
annotate_one_file
2579
2629
end
@@ -2585,14 +2635,16 @@ def annotate_one_file(options = {})
2585
2635
mock_column ( :id , :integer ) ,
2586
2636
mock_column ( :foreign_thing_id , :integer )
2587
2637
] ,
2588
- [ ] ,
2589
- [
2590
- mock_foreign_key ( 'fk_rails_cf2568e89e' ,
2591
- 'foreign_thing_id' ,
2592
- 'foreign_things' ,
2593
- 'id' ,
2594
- on_delete : :restrict )
2595
- ] )
2638
+ connection_options : {
2639
+ indexes : [ ] ,
2640
+ foreign_keys : [
2641
+ mock_foreign_key ( 'fk_rails_cf2568e89e' ,
2642
+ 'foreign_thing_id' ,
2643
+ 'foreign_things' ,
2644
+ 'id' ,
2645
+ on_delete : :restrict )
2646
+ ]
2647
+ } )
2596
2648
@schema_info = AnnotateModels . get_schema_info ( klass , '== Schema Info' , show_foreign_keys : true )
2597
2649
annotate_one_file
2598
2650
expect ( File . read ( @model_file_name ) ) . to eq ( "#{ @schema_info } #{ @file_content } " )
0 commit comments