Class: RoutesCoverage::Result
- Inherits:
-
Object
- Object
- RoutesCoverage::Result
- Defined in:
- lib/routes_coverage/result.rb
Instance Attribute Summary collapse
-
#route_hits ⇒ Object
readonly
Returns the value of attribute route_hits.
Instance Method Summary collapse
- #all_routes ⇒ 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 ⇒ Result
constructor
A new instance of Result.
- #pending_routes ⇒ Object
- #total_count ⇒ Object
- #touch_route(route) ⇒ Object
Constructor Details
#initialize ⇒ Result
Returns a new instance of Result.
3 4 5 |
# File 'lib/routes_coverage/result.rb', line 3 def initialize @route_hits = Hash.new(0) end |
Instance Attribute Details
#route_hits ⇒ Object (readonly)
Returns the value of attribute route_hits.
7 8 9 |
# File 'lib/routes_coverage/result.rb', line 7 def route_hits @route_hits end |
Instance Method Details
#all_routes ⇒ Object
13 14 15 |
# File 'lib/routes_coverage/result.rb', line 13 def all_routes ::Rails.application.routes.routes.routes end |
#avg_hits ⇒ Object
81 82 83 |
# File 'lib/routes_coverage/result.rb', line 81 def avg_hits (route_hits.values.sum.to_f / hit_routes_count).round(RoutesCoverage.settings.round_precision) end |
#coverage ⇒ Object
76 77 78 79 |
# File 'lib/routes_coverage/result.rb', line 76 def coverage return 'n/a' unless expected_routes.any? (hit_routes_count * 100.0 / expected_routes_count).round(RoutesCoverage.settings.round_precision) end |
#coverage_pass? ⇒ Boolean
85 86 87 |
# File 'lib/routes_coverage/result.rb', line 85 def coverage_pass? !RoutesCoverage.settings.minimum_coverage || (coverage >= RoutesCoverage.settings.minimum_coverage) end |
#excluded_routes ⇒ Object
49 50 51 52 |
# File 'lib/routes_coverage/result.rb', line 49 def excluded_routes expected_routes @excluded_routes end |
#excluded_routes_count ⇒ Object
68 69 70 |
# File 'lib/routes_coverage/result.rb', line 68 def excluded_routes_count excluded_routes.size end |
#expected_routes ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/routes_coverage/result.rb', line 17 def expected_routes return @expected_routes if @expected_routes routes = all_routes.dup if defined?(::Sprockets) && defined?(::Sprockets::Environment) routes.reject!{|r| r.app.is_a?(::Sprockets::Environment) } end excluded_routes = [] regex = Regexp.union(RoutesCoverage.settings.exclude_patterns) routes.reject!{|r| if "#{r.verb.to_s[8..-3]} #{r.path.spec}".strip =~ regex excluded_routes << r end } namespaces_regex = Regexp.union(RoutesCoverage.settings.exclude_namespaces.map{|n| /^\/#{n}/}) routes.reject!{|r| if r.path.spec.to_s =~ namespaces_regex excluded_routes << r end } @excluded_routes = excluded_routes @expected_routes = routes end |
#expected_routes_count ⇒ Object
64 65 66 |
# File 'lib/routes_coverage/result.rb', line 64 def expected_routes_count expected_routes.size end |
#hit_routes ⇒ Object
54 55 56 57 |
# File 'lib/routes_coverage/result.rb', line 54 def hit_routes #TODO: sort? route_hits.keys end |
#hit_routes_count ⇒ Object
60 61 62 |
# File 'lib/routes_coverage/result.rb', line 60 def hit_routes_count route_hits.size end |
#pending_routes ⇒ Object
45 46 47 |
# File 'lib/routes_coverage/result.rb', line 45 def pending_routes expected_routes - hit_routes end |
#total_count ⇒ Object
72 73 74 |
# File 'lib/routes_coverage/result.rb', line 72 def total_count all_routes.size end |
#touch_route(route) ⇒ Object
9 10 11 |
# File 'lib/routes_coverage/result.rb', line 9 def touch_route route @route_hits[route] += 1 end |