diff --git a/app/models/version.rb b/app/models/version.rb index 5244be3e845..eb668513c28 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -21,6 +21,7 @@ class Version < ActiveRecord::Base def self.reverse_dependencies(name) joins(dependencies: :rubygem) + .indexed .where(rubygems: { name: name }) end diff --git a/test/factories.rb b/test/factories.rb index aa0f07eb392..074ce5291f8 100644 --- a/test/factories.rb +++ b/test/factories.rb @@ -96,6 +96,10 @@ rubygem size 1024 sha256 "tdQEXD9Gb6kf4sxqvnkjKhpXzfEE96JucW4KHieJ33g=" + + trait :yanked do + indexed false + end end factory :version_history do diff --git a/test/unit/rubygem_test.rb b/test/unit/rubygem_test.rb index cd94f885184..4ac762b8a9d 100644 --- a/test/unit/rubygem_test.rb +++ b/test/unit/rubygem_test.rb @@ -199,12 +199,14 @@ class RubygemTest < ActiveSupport::TestCase @gem_two = create(:rubygem) @gem_three = create(:rubygem) @gem_four = create(:rubygem) + @gem_five = create(:rubygem) @version_one_latest = create(:version, rubygem: @gem_one, number: '0.2') @version_one_earlier = create(:version, rubygem: @gem_one, number: '0.1') @version_two_latest = create(:version, rubygem: @gem_two, number: '1.0') @version_two_earlier = create(:version, rubygem: @gem_two, number: '0.5') @version_three = create(:version, rubygem: @gem_three, number: '1.7') @version_four = create(:version, rubygem: @gem_four, number: '3.9') + @version_five = create(:version, :yanked, rubygem: @gem_five, number: '6.66') @version_one_latest.dependencies << create(:dependency, version: @version_one_latest, @@ -215,9 +217,12 @@ class RubygemTest < ActiveSupport::TestCase @version_three.dependencies << create(:dependency, version: @version_three, rubygem: @dep_rubygem) + @version_five.dependencies << create(:dependency, + version: @version_five, + rubygem: @dep_rubygem) end - should "return all depended rubygems" do + should "return all depended rubygems except yanked versions" do gem_list = Rubygem.reverse_dependencies(@dep_rubygem.name) assert_equal 3, gem_list.size @@ -226,6 +231,7 @@ class RubygemTest < ActiveSupport::TestCase assert gem_list.include?(@gem_two) assert gem_list.include?(@gem_three) assert !gem_list.include?(@gem_four) + assert !gem_list.include?(@gem_five) end end