Class: RoutesCoverage::Result
- Inherits:
-
Object
- Object
- RoutesCoverage::Result
- Defined in:
- lib/routes_coverage/result.rb
Defined Under Namespace
Classes: Inspector
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.
6 7 8 9 10 |
# File 'lib/routes_coverage/result.rb', line 6 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.
12 13 14 |
# File 'lib/routes_coverage/result.rb', line 12 def all_routes @all_routes end |
#route_hit_counts ⇒ Object (readonly)
Returns the value of attribute route_hit_counts.
14 15 16 |
# File 'lib/routes_coverage/result.rb', line 14 def route_hit_counts @route_hit_counts end |
Instance Method Details
#all_routes_with_hits ⇒ Object
77 78 79 80 81 82 83 |
# File 'lib/routes_coverage/result.rb', line 77 def all_routes_with_hits res = Inspector.new(all_routes).collect_all_routes res.each{|val| val[:hits] = @route_hit_counts[val[:original]] || 0 } res end |
#avg_hits ⇒ Object
69 70 71 |
# File 'lib/routes_coverage/result.rb', line 69 def avg_hits (@route_hit_counts.values.sum.to_f / hit_routes_count).round(@settings.round_precision) end |
#coverage ⇒ Object
64 65 66 67 |
# File 'lib/routes_coverage/result.rb', line 64 def coverage return 'n/a' unless expected_routes.any? (hit_routes_count * 100.0 / expected_routes_count).round(@settings.round_precision) end |
#coverage_pass? ⇒ Boolean
73 74 75 |
# File 'lib/routes_coverage/result.rb', line 73 def coverage_pass? !@settings.minimum_coverage || (coverage.to_f >= @settings.minimum_coverage) end |
#excluded_routes ⇒ Object
37 38 39 40 |
# File 'lib/routes_coverage/result.rb', line 37 def excluded_routes expected_routes @excluded_routes end |
#excluded_routes_count ⇒ Object
56 57 58 |
# File 'lib/routes_coverage/result.rb', line 56 def excluded_routes_count excluded_routes.size end |
#expected_routes ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/routes_coverage/result.rb', line 16 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
52 53 54 |
# File 'lib/routes_coverage/result.rb', line 52 def expected_routes_count expected_routes.size end |
#hit_routes ⇒ Object
42 43 44 45 |
# File 'lib/routes_coverage/result.rb', line 42 def hit_routes #TODO: sort? @route_hit_counts.keys end |
#hit_routes_count ⇒ Object
48 49 50 |
# File 'lib/routes_coverage/result.rb', line 48 def hit_routes_count @route_hit_counts.size end |
#pending_routes ⇒ Object
33 34 35 |
# File 'lib/routes_coverage/result.rb', line 33 def pending_routes expected_routes - hit_routes end |
#total_count ⇒ Object
60 61 62 |
# File 'lib/routes_coverage/result.rb', line 60 def total_count all_routes.size end |