coverband 5.2.5.rc.2 → 5.2.5.rc.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29c141e8e62eabb26244757e45620d7167ecff2e54b6be387afc02af325270af
4
- data.tar.gz: 7dda0bea9109e8c36175d6b45ddae9470590fe45d60ed53f284b7f6a64d769f3
3
+ metadata.gz: 371f700add3ee62e62457c7637526f35af0804eb2174d23e7ce0f838dfe3dbe1
4
+ data.tar.gz: 7e8d14239826ad9eb501afb37dca1fd5f26b5f3d9452c4d3baee57f5cfef5b6d
5
5
  SHA512:
6
- metadata.gz: 22c115d68356bc5c238c97ab5ef8e9fb6fc37769a91559cfbf254e0266f8a997fa00e53d4a0b3d6b8195d69633c08765327d8b1283094bbd34242966d1ef1421
7
- data.tar.gz: 29722490a0d2a3b0af5cf37e67d976b73e12bd50b4649af8f9d3f332a4a07193399ffc2300cb2c02b83effd94dc36c5a7e37eb1a585be2e86cd30bb4062f5cc1
6
+ metadata.gz: 75fbb3421bab3ece39c76ef607e8fd4d79644a4fc97989c973ff28605b88acfbfd335ee448474388e0722d6b5ec0e1c7bcaa48f637b5b4da617111948ca02dc5
7
+ data.tar.gz: 7fbca23b6649391422521350b704731aad4052235f6cf3b2366b409310b2ed0feed78445df2f2466deb4ffc523d7d99e26dc26151a45b86af0de2257872044a0
@@ -27,7 +27,7 @@ module Coverband
27
27
  action: route.defaults[:action],
28
28
  url_path: route.path.spec.to_s.gsub("(.:format)", ""),
29
29
  verb: route.verb
30
- }.to_s
30
+ }
31
31
  end
32
32
  else
33
33
  []
@@ -62,9 +62,9 @@ module Coverband
62
62
  }
63
63
  else
64
64
  {
65
- controller: payload[:controller],
65
+ controller: payload[:params]["controller"],
66
66
  action: payload[:action],
67
- url_path: payload[:path],
67
+ url_path: nil,
68
68
  verb: payload[:method]
69
69
  }
70
70
  end
@@ -81,16 +81,13 @@ module Coverband
81
81
  end
82
82
 
83
83
  def all_routes
84
- all_routes = []
85
- target.each do |route|
86
- all_routes << route
87
- end
88
- all_routes.uniq
84
+ target.uniq
89
85
  end
90
86
 
91
87
  def unused_routes(used_routes = nil)
92
88
  recently_used_routes = (used_routes || self.used_routes).keys
93
- all_routes - recently_used_routes
89
+ # NOTE: we match with or without path to handle paths with named params like `/user/:user_id` to used routes filling with all the variable named paths
90
+ all_routes.reject { |r| recently_used_routes.include?(r.to_s) || recently_used_routes.include?(r.merge(url_path: nil).to_s) }
94
91
  end
95
92
 
96
93
  def as_json
@@ -5,5 +5,5 @@
5
5
  # use format "4.2.1.rc.1" ~> 4.2.1.rc to prerelease versions like v4.2.1.rc.2 and v4.2.1.rc.3
6
6
  ###
7
7
  module Coverband
8
- VERSION = "5.2.5.rc.2"
8
+ VERSION = "5.2.5.rc.3"
9
9
  end
@@ -42,10 +42,11 @@ class RouterTrackerTest < Minitest::Test
42
42
 
43
43
  test "track controller routes" do
44
44
  store = fake_store
45
- route_hash = {controller: "SomeController", action: "index", url_path: "path", verb: "GET"}
45
+ route_hash = {controller: "some/controller", action: "index", url_path: nil, verb: "GET"}
46
46
  store.raw_store.expects(:hset).with(tracker_key, route_hash.to_s, anything)
47
47
  tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
48
48
  payload = {
49
+ params: {"controller" => "some/controller"},
49
50
  controller: "SomeController",
50
51
  action: "index",
51
52
  path: "path",
@@ -58,9 +59,10 @@ class RouterTrackerTest < Minitest::Test
58
59
 
59
60
  test "report used routes" do
60
61
  store = fake_store
61
- route_hash = {controller: "SomeController", action: "index", url_path: "path", verb: "GET"}
62
+ route_hash = {controller: "some/controller", action: "index", url_path: nil, verb: "GET"}
62
63
  tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
63
64
  payload = {
65
+ params: {"controller" => "some/controller"},
64
66
  controller: "SomeController",
65
67
  action: "index",
66
68
  path: "path",
@@ -73,8 +75,23 @@ class RouterTrackerTest < Minitest::Test
73
75
 
74
76
  test "report unused routes" do
75
77
  store = fake_store
76
- tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
78
+ app_routes = [
79
+ {
80
+ controller: "some/controller",
81
+ action: "show",
82
+ url_path: "some/controller/show",
83
+ verb: "GET"
84
+ },
85
+ {
86
+ controller: "some/controller",
87
+ action: "index",
88
+ url_path: "some/controller/show",
89
+ verb: "GET"
90
+ }
91
+ ]
92
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir", target: app_routes)
77
93
  payload = {
94
+ params: {"controller" => "some/controller"},
78
95
  controller: "SomeController",
79
96
  action: "index",
80
97
  path: "path",
@@ -82,12 +99,36 @@ class RouterTrackerTest < Minitest::Test
82
99
  }
83
100
  tracker.track_routes("name", "start", "finish", "id", payload)
84
101
  tracker.report_routes_tracked
102
+ assert_equal [app_routes.first], tracker.unused_routes
103
+ end
104
+
105
+ test "report unused routes pulls out parameterized routes" do
106
+ store = fake_store
107
+ app_routes = [
108
+ {
109
+ controller: "some/controller",
110
+ action: "show",
111
+ url_path: "some/controller/:user_id",
112
+ verb: "GET"
113
+ }
114
+ ]
115
+ tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir", target: app_routes)
116
+ payload = {
117
+ params: {"controller" => "some/controller"},
118
+ controller: "SomeController",
119
+ action: "show",
120
+ path: "some/controller/123",
121
+ method: "GET"
122
+ }
123
+ tracker.track_routes("name", "start", "finish", "id", payload)
124
+ tracker.report_routes_tracked
85
125
  assert_equal [], tracker.unused_routes
86
126
  end
87
127
 
88
128
  test "reset store" do
89
129
  store = fake_store
90
130
  payload = {
131
+ params: {"controller" => "some/controller"},
91
132
  controller: "SomeController",
92
133
  action: "index",
93
134
  path: "path",
@@ -102,9 +143,10 @@ class RouterTrackerTest < Minitest::Test
102
143
 
103
144
  test "clear_file" do
104
145
  store = fake_store
105
- route_hash = {controller: "SomeController", action: "index", url_path: "path", verb: "GET"}
146
+ route_hash = {controller: "some/controller", action: "index", url_path: nil, verb: "GET"}
106
147
  tracker = Coverband::Collectors::RouteTracker.new(store: store, roots: "dir")
107
148
  payload = {
149
+ params: {"controller" => "some/controller"},
108
150
  controller: "SomeController",
109
151
  action: "index",
110
152
  path: "path",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coverband
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.5.rc.2
4
+ version: 5.2.5.rc.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Mayer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-11-02 00:00:00.000000000 Z
12
+ date: 2022-11-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: benchmark-ips