@@ -5,6 +5,8 @@ def test_missing_foreign_key_is_reported
55 Context . create_table ( :companies )
66 Context . create_table ( :users ) do |t |
77 t . references :company , foreign_key : false
8+ end . define_model do
9+ belongs_to :company
810 end
911
1012 assert_problems ( <<~OUTPUT )
@@ -16,14 +18,29 @@ def test_present_foreign_key_is_not_reported
1618 Context . create_table ( :companies )
1719 Context . create_table ( :users ) do |t |
1820 t . references :company , foreign_key : true
21+ end . define_model do
22+ belongs_to :company
1923 end
2024
2125 refute_problems
2226 end
2327
24- def test_non_integer_missing_foreign_key_is_reported
28+ def test_missing_foreign_key_on_abstract_class_is_not_reported
29+ Context . create_table ( :companies )
30+ Context . create_table ( :users ) do |t |
31+ t . references :company , foreign_key : false
32+ end . define_model do
33+ self . abstract_class = true
34+ belongs_to :company
35+ end
36+
37+ refute_problems
38+ end
39+
40+ def test_missing_foreign_key_without_belongs_to_is_not_reported
41+ Context . create_table ( :companies )
2542 Context . create_table ( :users ) do |t |
26- t . string :external_id
43+ t . references :company , foreign_key : false
2744 end
2845
2946 refute_problems
@@ -32,8 +49,13 @@ def test_non_integer_missing_foreign_key_is_reported
3249 def test_uuid_missing_foreign_key_is_reported
3350 require_uuid_column_type!
3451
52+ Context . create_table ( :companies ) do |t |
53+ t . uuid :id , default : "gen_random_uuid()"
54+ end
3555 Context . create_table ( :users ) do |t |
36- t . uuid :company_id
56+ t . references :company , type : :uuid , foreign_key : false
57+ end . define_model do
58+ belongs_to :company
3759 end
3860
3961 assert_problems ( <<~OUTPUT )
@@ -60,12 +82,14 @@ def test_config_ignore_models
6082 Context . create_table ( :companies )
6183 Context . create_table ( :users ) do |t |
6284 t . references :company , foreign_key : false
85+ end . define_model do
86+ belongs_to :company
6387 end
6488
6589 config_file ( <<-CONFIG )
6690 ActiveRecordDoctor.configure do |config|
6791 config.detector :missing_foreign_keys,
68- ignore_tables : ["users" ]
92+ ignore_models : [Context::User ]
6993 end
7094 CONFIG
7195
@@ -76,11 +100,13 @@ def test_global_ignore_models
76100 Context . create_table ( :companies )
77101 Context . create_table ( :users ) do |t |
78102 t . references :company , foreign_key : false
103+ end . define_model do
104+ belongs_to :company
79105 end
80106
81107 config_file ( <<-CONFIG )
82108 ActiveRecordDoctor.configure do |config|
83- config.global :ignore_tables , ["users" ]
109+ config.global :ignore_models , [Context::User ]
84110 end
85111 CONFIG
86112
@@ -102,4 +128,15 @@ def test_config_ignore_columns
102128
103129 refute_problems
104130 end
131+
132+ def test_polymorphic_association_is_not_reported
133+ Context . create_table ( :companies )
134+ Context . create_table ( :users ) do |t |
135+ t . references :commentable , polymorphic : true , foreign_key : false
136+ end . define_model do
137+ belongs_to :commentable , polymorphic : true
138+ end
139+
140+ refute_problems
141+ end
105142end
0 commit comments