From 3dad4c2d828d71ab3e014c9f28e394bf13d6267a Mon Sep 17 00:00:00 2001 From: sonalkr132 Date: Tue, 24 May 2016 17:35:13 +0530 Subject: [PATCH] Add the missing fields to the dependency api response --- app/models/gem_dependent.rb | 12 ++- .../api/v1/dependencies_controller_test.rb | 82 ++++++++++++------- test/unit/gem_dependent_test.rb | 32 +++++--- 3 files changed, 78 insertions(+), 48 deletions(-) diff --git a/app/models/gem_dependent.rb b/app/models/gem_dependent.rb index b8b30f3c92e..62189148805 100644 --- a/app/models/gem_dependent.rb +++ b/app/models/gem_dependent.rb @@ -39,10 +39,14 @@ def fetch_dependency_from_db(gem_name) version_deps = version.dependencies.select { |d| d.scope == 'runtime' } { - name: gem_name, - number: version.number, - platform: version.platform, - dependencies: version_deps.map { |d| [d.name, d.requirements] } + name: gem_name, + number: version.number, + platform: version.platform, + rubygems_version: version.rubygems_version, + ruby_version: version.ruby_version, + checksum: version.sha256, + created_at: version.created_at, + dependencies: version_deps.map { |d| [d.name, d.requirements] } } end end diff --git a/test/functional/api/v1/dependencies_controller_test.rb b/test/functional/api/v1/dependencies_controller_test.rb index 7974ccddf36..4797e2120df 100644 --- a/test/functional/api/v1/dependencies_controller_test.rb +++ b/test/functional/api/v1/dependencies_controller_test.rb @@ -34,8 +34,8 @@ class Api::V1::DependenciesControllerTest < ActionController::TestCase # WITH GEMS: context "On GET to index --> with gems --> JSON" do setup do - @rubygem = create(:rubygem, name: "rails") - @version = create(:version, number: "1.0.0", rubygem_id: @rubygem.id) + rubygem = create(:rubygem, name: "rails") + create(:version, number: "1.0.0", created_at: Date.new(2016, 05, 24), rubygem_id: rubygem.id) get :index, gems: "rails", format: "json" end @@ -45,10 +45,14 @@ class Api::V1::DependenciesControllerTest < ActionController::TestCase should "return body" do result = [{ - "name" => 'rails', - "number" => '1.0.0', - "platform" => 'ruby', - "dependencies" => [] + 'name' => 'rails', + 'number' => '1.0.0', + 'platform' => 'ruby', + 'rubygems_version' => '>= 2.6.3', + 'ruby_version' => '>= 2.0.0', + 'checksum' => 'tdQEXD9Gb6kf4sxqvnkjKhpXzfEE96JucW4KHieJ33g=', + 'created_at' => '2016-05-24T00:00:00.000Z', + 'dependencies' => [] }] assert_equal result, MultiJson.load(response.body) @@ -58,11 +62,11 @@ class Api::V1::DependenciesControllerTest < ActionController::TestCase # WITH COMPLEX GEMS: context "on GET to index --> with complex gems --> JSON" do setup do - @rubygem1 = create(:rubygem, name: "myrails") - @rubygem2 = create(:rubygem, name: "mybundler") - @version = create(:version, number: "1.0.0", rubygem_id: @rubygem1.id) - @version = create(:version, number: "2.0.0", rubygem_id: @rubygem2.id) - @version = create(:version, number: "3.0.0", rubygem_id: @rubygem1.id) + rubygem1 = create(:rubygem, name: "myrails") + rubygem2 = create(:rubygem, name: "mybundler") + create(:version, number: "1.0.0", created_at: Date.new(2016, 05, 24), rubygem_id: rubygem1.id) + create(:version, number: "2.0.0", created_at: Date.new(2016, 05, 24), rubygem_id: rubygem2.id) + create(:version, number: "3.0.0", created_at: Date.new(2016, 05, 24), rubygem_id: rubygem1.id) get :index, gems: "myrails,mybundler", format: "json" end @@ -73,24 +77,36 @@ class Api::V1::DependenciesControllerTest < ActionController::TestCase should "return body" do result = [ { - "name" => 'myrails', - "number" => '3.0.0', - "platform" => 'ruby', - "dependencies" => [] + 'name' => 'myrails', + 'number' => '3.0.0', + 'platform' => 'ruby', + 'rubygems_version' => '>= 2.6.3', + 'ruby_version' => '>= 2.0.0', + 'checksum' => 'tdQEXD9Gb6kf4sxqvnkjKhpXzfEE96JucW4KHieJ33g=', + 'created_at' => '2016-05-24T00:00:00.000Z', + 'dependencies' => [] }, { - "name" => 'myrails', - "number" => '1.0.0', - "platform" => 'ruby', - "dependencies" => [] + 'name' => 'myrails', + 'number' => '1.0.0', + 'platform' => 'ruby', + 'rubygems_version' => '>= 2.6.3', + 'ruby_version' => '>= 2.0.0', + 'checksum' => 'tdQEXD9Gb6kf4sxqvnkjKhpXzfEE96JucW4KHieJ33g=', + 'created_at' => '2016-05-24T00:00:00.000Z', + 'dependencies' => [] }, { - "name" => 'mybundler', - "number" => '2.0.0', - "platform" => 'ruby', - "dependencies" => [] + 'name' => 'mybundler', + 'number' => '2.0.0', + 'platform' => 'ruby', + 'rubygems_version' => '>= 2.6.3', + 'ruby_version' => '>= 2.0.0', + 'checksum' => 'tdQEXD9Gb6kf4sxqvnkjKhpXzfEE96JucW4KHieJ33g=', + 'created_at' => '2016-05-24T00:00:00.000Z', + 'dependencies' => [] } ] @@ -123,8 +139,8 @@ class Api::V1::DependenciesControllerTest < ActionController::TestCase # NO GEMS: context "On GET to index --> with no gems --> Marshal" do setup do - @rubygem = create(:rubygem, name: "testgem") - @version = create(:version, number: "1.0.0", rubygem_id: @rubygem.id) + rubygem = create(:rubygem, name: "testgem") + @version = create(:version, number: "1.0.0", rubygem_id: rubygem.id) get :index, gems: "", format: "marshal" end @@ -140,8 +156,8 @@ class Api::V1::DependenciesControllerTest < ActionController::TestCase # WITH GEMS: context "On GET to index --> with gems --> Marshal" do setup do - @rubygem = create(:rubygem, name: "testgem") - @version = create(:version, number: "1.0.0", rubygem_id: @rubygem.id) + rubygem = create(:rubygem, name: "testgem") + create(:version, number: "1.0.0", created_at: Date.new(2016, 05, 24), rubygem_id: rubygem.id) get :index, gems: "testgem", format: "marshal" end @@ -151,10 +167,14 @@ class Api::V1::DependenciesControllerTest < ActionController::TestCase should "return body" do result = [{ - name: 'testgem', - number: '1.0.0', - platform: 'ruby', - dependencies: [] + name: 'testgem', + number: '1.0.0', + platform: 'ruby', + rubygems_version: '>= 2.6.3', + ruby_version: '>= 2.0.0', + checksum: 'tdQEXD9Gb6kf4sxqvnkjKhpXzfEE96JucW4KHieJ33g=', + created_at: Date.new(2016, 05, 24), + dependencies: [] }] assert_equal result, Marshal.load(response.body) diff --git a/test/unit/gem_dependent_test.rb b/test/unit/gem_dependent_test.rb index 2cbd65004ad..0cf98019770 100644 --- a/test/unit/gem_dependent_test.rb +++ b/test/unit/gem_dependent_test.rb @@ -27,26 +27,32 @@ class GemDependentTest < ActiveSupport::TestCase create(:version, number: "0.0.2", rubygem_id: @gem.id) @gem2 = create(:rubygem, name: "rack2") - create(:version, number: "0.0.1", rubygem_id: @gem2.id) + create(:version, number: "0.0.1", created_at: Date.new(2016, 05, 24), rubygem_id: @gem2.id) end - should "return an array with dependencies" do + should "return rack2" do + result = { + name: "rack2", + number: "0.0.1", + platform: "ruby", + rubygems_version: ">= 2.6.3", + ruby_version: ">= 2.0.0", + checksum: "tdQEXD9Gb6kf4sxqvnkjKhpXzfEE96JucW4KHieJ33g=", + created_at: Date.new(2016, 05, 24), + dependencies: [] + } + deps = GemDependent.new(["rack2"]).to_a - assert_equal( - [{ name: "rack2", number: "0.0.1", platform: "ruby", dependencies: [] }], - deps - ) + result.each_pair do |k, v| + assert_equal v, deps.first[k] + end end should "return all versions for a gem" do + result = %w(0.0.2 0.0.1) + deps = GemDependent.new(["rack"]).to_a - assert_equal( - [ - { name: "rack", number: "0.0.2", platform: "ruby", dependencies: [] }, - { name: "rack", number: "0.0.1", platform: "ruby", dependencies: [] } - ], - deps - ) + assert_equal result, deps.map { |x| x[:number] } end end