Skip to content

Commit b0f4516

Browse files
committed
[rail_inspector] Add test for FrameworkDefault
Now that its tested, its much easier to refactor with confidence
1 parent b951bdb commit b0f4516

File tree

3 files changed

+70
-18
lines changed

3 files changed

+70
-18
lines changed

tools/rail_inspector/lib/rail_inspector/configuring.rb

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,14 @@ def initialize(rails_path)
6464
def check
6565
[
6666
Check::GeneralConfiguration.new(self),
67-
Check::FrameworkDefaults.new(self),
67+
Check::FrameworkDefaults.new(
68+
self,
69+
framework_defaults_by_version,
70+
doc
71+
.versioned_defaults
72+
.slice_before { |line| line.start_with?("####") }
73+
.to_a,
74+
),
6875
Check::NewFrameworkDefaultsFile.new(
6976
self,
7077
framework_defaults_by_version[rails_version].keys,
@@ -77,12 +84,6 @@ def doc
7784
@doc ||= Configuring::Document.parse(files.doc_path.read)
7885
end
7986

80-
def framework_defaults_by_version
81-
@framework_defaults_by_version ||= Visitor::FrameworkDefault.new.tap { |visitor|
82-
visitor.visit(files.application_configuration.parse)
83-
}.config_map
84-
end
85-
8687
def rails_version
8788
@rails_version ||= files.rails_version.read.to_f.to_s
8889
end
@@ -98,5 +99,12 @@ def error_message
9899
"Make sure new configurations are added to configuring.md#rails-general-configuration in alphabetical order.\n" +
99100
"Errors may be autocorrectable with the --autocorrect flag"
100101
end
102+
103+
private
104+
def framework_defaults_by_version
105+
@framework_defaults_by_version ||= Visitor::FrameworkDefault.new.tap { |visitor|
106+
visitor.visit(files.application_configuration.parse)
107+
}.config_map
108+
end
101109
end
102110
end

tools/rail_inspector/lib/rail_inspector/configuring/check/framework_defaults.rb

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ module Check
88
class FrameworkDefaults
99
attr_reader :checker
1010

11-
def initialize(checker)
11+
def initialize(checker, defaults_by_version, documented_defaults)
1212
@checker = checker
13+
@defaults_by_version = defaults_by_version
14+
@documented_defaults = documented_defaults
1315
end
1416

1517
def check
16-
header, *defaults_by_version = documented_defaults
18+
header, *defaults_by_version = @documented_defaults
1719

1820
checker.doc.versioned_defaults =
1921
header +
@@ -30,7 +32,7 @@ def check_defaults(defaults)
3032
version = header.match(/\d\.\d/)[0]
3133

3234
generated_doc =
33-
checker.framework_defaults_by_version[version]
35+
@defaults_by_version[version]
3436
.map do |config, value|
3537
full_config =
3638
case config
@@ -68,14 +70,6 @@ def check_defaults(defaults)
6870

6971
[header, "", *generated_doc, ""]
7072
end
71-
72-
def documented_defaults
73-
checker
74-
.doc
75-
.versioned_defaults
76-
.slice_before { |line| line.start_with?("####") }
77-
.to_a
78-
end
7973
end
8074
end
8175
end
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# frozen_string_literal: true
2+
3+
require "test_helper"
4+
require "rail_inspector/configuring"
5+
6+
class FrameworkDefaultsTest < ActiveSupport::TestCase
7+
def test_identifies_self_when_file_uses_config
8+
defaults = {
9+
"8.0" => {
10+
"action_dispatch.strict_freshness" => "true",
11+
"Regexp.timeout" => "1"
12+
},
13+
"8.1" => {
14+
"self.yjit" => "!Rails.env.local?",
15+
"action_controller.escape_json_responses" => "false",
16+
}
17+
}
18+
19+
doc = [
20+
["### Versioned Default Values"],
21+
[
22+
"#### Default Values for Target Version 8.1",
23+
"",
24+
"- [`config.action_controller.escape_json_responses`](#config-action-controller-escape-json-responses): `false`",
25+
"- [`config.yjit`](#config-yjit): `!Rails.env.local?`",
26+
"",
27+
],
28+
[
29+
"#### Default Values for Target Version 8.0",
30+
"",
31+
"- [`Regexp.timeout`](#regexp-timeout): `1`",
32+
"- [`config.action_dispatch.strict_freshness`](#config-action-dispatch-strict-freshness): `true`",
33+
"",
34+
],
35+
]
36+
37+
check(defaults, doc).check
38+
39+
assert_empty checker.errors
40+
end
41+
42+
private
43+
def check(defaults, doc)
44+
@check ||= RailInspector::Configuring::Check::FrameworkDefaults.new(checker, defaults, doc)
45+
end
46+
47+
def checker
48+
@checker ||= RailInspector::Configuring.new("../..")
49+
end
50+
end

0 commit comments

Comments
 (0)