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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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