Skip to content

Commit c1a4ee7

Browse files
Federico Aldunatefedericoaldunate
authored andcommitted
Fix reverse dependencies by using distinct
1 parent 874ec61 commit c1a4ee7

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

app/controllers/reverse_dependencies_controller.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ def index
99
@reverse_dependencies = @rubygem.reverse_dependencies
1010
.by_downloads
1111
.preload(:gem_download, :latest_version)
12+
.distinct
13+
.select("rubygems.*, gem_downloads.count")
1214

1315
@reverse_dependencies = @reverse_dependencies.legacy_search(params[:rdeps_query]) if params[:rdeps_query].is_a?(String)
1416
@reverse_dependencies = @reverse_dependencies.page(@page).without_count

test/functional/reverse_dependencies_controller_test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class ReverseDependenciesControllerTest < ActionController::TestCase
1111
@rubygem_three = @version_three.rubygem
1212
@version_four = create(:version)
1313
@rubygem_four = @version_four.rubygem
14+
@version_two_two = create(:version, rubygem: @rubygem_two, position: 0)
1415

1516
@version_two.dependencies << create(:dependency,
1617
version: @version_two,
@@ -21,6 +22,9 @@ class ReverseDependenciesControllerTest < ActionController::TestCase
2122
@version_four.dependencies << create(:dependency,
2223
version: @version_four,
2324
rubygem: @rubygem_two)
25+
@version_two_two.dependencies << create(:dependency,
26+
version: @version_two_two,
27+
rubygem: @rubygem_one)
2428
end
2529

2630
context "render template" do
@@ -43,6 +47,18 @@ class ReverseDependenciesControllerTest < ActionController::TestCase
4347
assert page.has_selector?("form#rdeps-search[action='#{form_path}']")
4448
end
4549

50+
should "show distinct reverse dependencies" do
51+
@version_two.update_column(:position, 0)
52+
get :index, params: { rubygem_id: @rubygem_one.slug }
53+
54+
assert page.has_content?(@rubygem_two.name, count: 1)
55+
refute page.has_content?(@rubygem_three.name)
56+
57+
form_path = rubygem_reverse_dependencies_path(@rubygem_one.slug)
58+
59+
assert page.has_selector?("form#rdeps-search[action='#{form_path}']")
60+
end
61+
4662
should "search reverse dependencies" do
4763
get :index,
4864
params: {

0 commit comments

Comments
 (0)