Class: RoutesCoverage::Result
- Inherits:
-
Object
- Object
- RoutesCoverage::Result
- Defined in:
- lib/routes_coverage/result.rb
Instance Attribute Summary collapse
-
#all_routes ⇒ Object
readonly
Returns the value of attribute all_routes.
-
#route_hit_counts ⇒ Object
readonly
Returns the value of attribute route_hit_counts.
Instance Method Summary collapse
- #all_routes_with_hits ⇒ Object
- #avg_hits ⇒ Object
- #coverage ⇒ Object
- #coverage_pass? ⇒ Boolean
- #excluded_routes ⇒ Object
- #excluded_routes_count ⇒ Object
- #expected_routes ⇒ Object
- #expected_routes_count ⇒ Object
- #hit_routes ⇒ Object
- #hit_routes_count ⇒ Object
-
#initialize(all_routes, hit_routes, settings) ⇒ Result
constructor
A new instance of Result.
- #pending_routes ⇒ Object
- #total_count ⇒ Object
Constructor Details
#initialize(all_routes, hit_routes, settings) ⇒ Result
Returns a new instance of Result.
89 90 91 92 93 |
# File 'lib/routes_coverage/result.rb', line 89 def initialize all_routes, hit_routes, settings @all_routes = all_routes @route_hit_counts = hit_routes @settings = settings end |
Instance Attribute Details
#all_routes ⇒ Object (readonly)
Returns the value of attribute all_routes.
95 96 97 |
# File 'lib/routes_coverage/result.rb', line 95 def all_routes @all_routes end |
#route_hit_counts ⇒ Object (readonly)
Returns the value of attribute route_hit_counts.
97 98 99 |
# File 'lib/routes_coverage/result.rb', line 97 def route_hit_counts @route_hit_counts end |
Instance Method Details
#all_routes_with_hits ⇒ Object
160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/routes_coverage/result.rb', line 160 def all_routes_with_hits if Inspector::NEW_RAILS res = Inspector.new(all_routes).collect_all_routes else res = Inspector.new.collect_all_routes(all_routes) end res.each{|val| val[:hits] = @route_hit_counts[val[:original]] || 0 } res end |
#avg_hits ⇒ Object
152 153 154 |
# File 'lib/routes_coverage/result.rb', line 152 def avg_hits (@route_hit_counts.values.sum.to_f / hit_routes_count).round(@settings.round_precision) end |
#coverage ⇒ Object
147 148 149 150 |
# File 'lib/routes_coverage/result.rb', line 147 def coverage return 0 unless expected_routes.any? (hit_routes_count * 100.0 / expected_routes_count).round(@settings.round_precision) end |
#coverage_pass? ⇒ Boolean
156 157 158 |
# File 'lib/routes_coverage/result.rb', line 156 def coverage_pass? !@settings.minimum_coverage || (coverage.to_f >= @settings.minimum_coverage) end |
#excluded_routes ⇒ Object
120 121 122 123 |
# File 'lib/routes_coverage/result.rb', line 120 def excluded_routes expected_routes @excluded_routes end |
#excluded_routes_count ⇒ Object
139 140 141 |
# File 'lib/routes_coverage/result.rb', line 139 def excluded_routes_count excluded_routes.size end |
#expected_routes ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/routes_coverage/result.rb', line 99 def expected_routes return @expected_routes if @expected_routes filter_regex = Regexp.union(@settings.exclude_patterns) namespaces_regex = Regexp.union(@settings.exclude_namespaces.map{|n| /^\/#{n}/}) routes_groups = all_routes.group_by{|r| !!( ("#{r.verb.to_s[8..-3]} #{r.path.spec}".strip =~ filter_regex) || (r.path.spec.to_s =~ namespaces_regex) ) } @excluded_routes = routes_groups[true] || [] @expected_routes = routes_groups[false] || [] end |
#expected_routes_count ⇒ Object
135 136 137 |
# File 'lib/routes_coverage/result.rb', line 135 def expected_routes_count expected_routes.size end |
#hit_routes ⇒ Object
125 126 127 128 |
# File 'lib/routes_coverage/result.rb', line 125 def hit_routes #TODO: sort? @route_hit_counts.keys end |
#hit_routes_count ⇒ Object
131 132 133 |
# File 'lib/routes_coverage/result.rb', line 131 def hit_routes_count @route_hit_counts.size end |
#pending_routes ⇒ Object
116 117 118 |
# File 'lib/routes_coverage/result.rb', line 116 def pending_routes expected_routes - hit_routes end |
#total_count ⇒ Object
143 144 145 |
# File 'lib/routes_coverage/result.rb', line 143 def total_count all_routes.size end |