From 3182513798b3a95e006b7a66602e5cf42bab61a3 Mon Sep 17 00:00:00 2001 From: carlad Date: Fri, 11 Mar 2016 14:39:28 +0100 Subject: [PATCH 1/9] add sort_by default_branch builds.id --- lib/travis/api/v3/queries/repositories.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/travis/api/v3/queries/repositories.rb b/lib/travis/api/v3/queries/repositories.rb index 6197a0c1..6605b620 100644 --- a/lib/travis/api/v3/queries/repositories.rb +++ b/lib/travis/api/v3/queries/repositories.rb @@ -1,7 +1,7 @@ module Travis::API::V3 class Queries::Repositories < Query params :active, :private, :starred, prefix: :repository - sortable_by :id, :github_id, :owner_name, :name, active: sort_condition(:active) + sortable_by :id, :github_id, :owner_name, :name, active: sort_condition(:active), default_branch: 'builds.id' def for_member(user, **options) all(user: user, **options).joins(:users).where(users: user_condition(user), invalidated_at: nil) From b784eaee82890e3e10a5b47109e4562cab8125c1 Mon Sep 17 00:00:00 2001 From: carlad Date: Fri, 11 Mar 2016 14:41:24 +0100 Subject: [PATCH 2/9] add sort_by default_branch.last_build builds.id --- lib/travis/api/v3/queries/repositories.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/travis/api/v3/queries/repositories.rb b/lib/travis/api/v3/queries/repositories.rb index 6605b620..0675d802 100644 --- a/lib/travis/api/v3/queries/repositories.rb +++ b/lib/travis/api/v3/queries/repositories.rb @@ -1,7 +1,7 @@ module Travis::API::V3 class Queries::Repositories < Query params :active, :private, :starred, prefix: :repository - sortable_by :id, :github_id, :owner_name, :name, active: sort_condition(:active), default_branch: 'builds.id' + sortable_by :id, :github_id, :owner_name, :name, active: sort_condition(:active), :'default_branch.last_build' => 'builds.id' def for_member(user, **options) all(user: user, **options).joins(:users).where(users: user_condition(user), invalidated_at: nil) From f512975e6ad0f660ffe4cce1cf4a6c0858863ee1 Mon Sep 17 00:00:00 2001 From: carlad Date: Fri, 11 Mar 2016 15:05:46 +0100 Subject: [PATCH 3/9] change sort to builds.started_at --- lib/travis/api/v3/queries/repositories.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/travis/api/v3/queries/repositories.rb b/lib/travis/api/v3/queries/repositories.rb index 0675d802..97d4cfc5 100644 --- a/lib/travis/api/v3/queries/repositories.rb +++ b/lib/travis/api/v3/queries/repositories.rb @@ -1,7 +1,7 @@ module Travis::API::V3 class Queries::Repositories < Query params :active, :private, :starred, prefix: :repository - sortable_by :id, :github_id, :owner_name, :name, active: sort_condition(:active), :'default_branch.last_build' => 'builds.id' + sortable_by :id, :github_id, :owner_name, :name, active: sort_condition(:active), :'default_branch.last_build' => 'builds.started_at' def for_member(user, **options) all(user: user, **options).joins(:users).where(users: user_condition(user), invalidated_at: nil) From 3a97ac8bfaf50a00ab9e6f3013951d357847f936 Mon Sep 17 00:00:00 2001 From: carlad Date: Fri, 11 Mar 2016 15:17:06 +0100 Subject: [PATCH 4/9] add spec for sort by default_branch.last_build --- .../services/repositories/for_owner_spec.rb | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/spec/v3/services/repositories/for_owner_spec.rb b/spec/v3/services/repositories/for_owner_spec.rb index a6856581..02be8474 100644 --- a/spec/v3/services/repositories/for_owner_spec.rb +++ b/spec/v3/services/repositories/for_owner_spec.rb @@ -103,4 +103,26 @@ describe Travis::API::V3::Services::Repositories::ForOwner do example { expect(JSON.load(body)['@href']) .to be == "/v3/repos?starred=false" } example { expect(JSON.load(body)['repositories']) .to be_empty } end + + describe "sorting by default_branch.last_build" do + before { get("/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build") } + example { expect(last_response).to be_ok } + example { expect(parsed_body["@pagination"]).to be == { + "limit" => 100, + "offset" => 0, + "count" => 0, + "is_first" => true, + "is_last" => true, + "next" => nil, + "prev" => nil, + "first" => { + "@href" => "/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build", + "offset" => 0, + "limit" => 100 }, + "last" => { + "@href" =>"/v3/owner/svenfuchs/repos?limit=100&offset=-100&sort_by=default_branch.last_build", + "offset" => -100, + "limit" => 100 }} + } + end end From 5cb5fdb8d6f6a2997b5a8134e2b7c5df74a7f830 Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 14 Mar 2016 12:14:10 +0100 Subject: [PATCH 5/9] update spec to create additional repo for sorting test --- .../services/repositories/for_owner_spec.rb | 79 ++++++++++++++----- 1 file changed, 61 insertions(+), 18 deletions(-) diff --git a/spec/v3/services/repositories/for_owner_spec.rb b/spec/v3/services/repositories/for_owner_spec.rb index 02be8474..972d7361 100644 --- a/spec/v3/services/repositories/for_owner_spec.rb +++ b/spec/v3/services/repositories/for_owner_spec.rb @@ -11,6 +11,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do before { repo.update_attribute(:private, true) } after { repo.update_attribute(:private, false) } + describe "private repository, private API, authenticated as user with access" do before { get("/v3/owner/svenfuchs/repos", {}, headers) } example { expect(last_response).to be_ok } @@ -105,24 +106,66 @@ describe Travis::API::V3::Services::Repositories::ForOwner do end describe "sorting by default_branch.last_build" do - before { get("/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build") } + before { repo2 = Travis::API::V3::Models::Repository.create(owner_name: 'svenfuchs', name: 'maximal', owner_id: 1, owner_type: "User", last_build_state: "passed", active: true, last_build_id: 1788, next_build_number: 3) } + before { get("/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build", {}, headers) } example { expect(last_response).to be_ok } - example { expect(parsed_body["@pagination"]).to be == { - "limit" => 100, - "offset" => 0, - "count" => 0, - "is_first" => true, - "is_last" => true, - "next" => nil, - "prev" => nil, - "first" => { - "@href" => "/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build", - "offset" => 0, - "limit" => 100 }, - "last" => { - "@href" =>"/v3/owner/svenfuchs/repos?limit=100&offset=-100&sort_by=default_branch.last_build", - "offset" => -100, - "limit" => 100 }} - } + example { expect(JSON.load(body)['@href']) .to be == "/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build" } + example { expect(JSON.load(body)['repositories']) .to be == [{ + "@type" => "repository", + "@href" => "/v3/repo/1", + "@representation" => "standard", + "@permissions" => { + "read" => true, + "enable" => false, + "disable" => false, + "star" => false, + "unstar" => false, + "create_request"=> false }, + "id" => 1, + "name" => "minimal", + "slug" => "svenfuchs/minimal", + "description" => nil, + "github_language" => nil, + "active" => true, + "private" => true, + "owner" => { + "@type" => "user", + "id" => 1, + "login" => "svenfuchs", + "@href" => "/v3/user/1" }, + "default_branch" => { + "@type" => "branch", + "@href" => "/v3/repo/1/branch/master", + "@representation"=>"minimal", + "name" => "master" }, + "starred" => false }, { + "@type" => "repository", + "@href" => "/v3/repo/5", + "@representation" => "standard", + "@permissions" => { + "read" => true, + "enable" => false, + "disable" => false, + "star" => false, + "unstar" => false, + "create_request"=> false }, + "id" => 5, + "name" => "maximal", + "slug" => "svenfuchs/maximal", + "description" => nil, + "github_language" => nil, + "active" => true, + "private" => false, + "owner" => { + "@type" => "user", + "id" => 1, + "login" => "svenfuchs", + "@href" => "/v3/user/1" }, + "default_branch" => { + "@type" => "branch", + "@href" => "/v3/repo/5/branch/master", + "@representation"=>"minimal", + "name" =>"master" }, + "starred"=>false}]} end end From 087788757f4f3cb06dd8b853482ffaa065bea3c6 Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 14 Mar 2016 12:56:01 +0100 Subject: [PATCH 6/9] add repo.id to spec --- spec/v3/services/repositories/for_owner_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/v3/services/repositories/for_owner_spec.rb b/spec/v3/services/repositories/for_owner_spec.rb index 972d7361..858eac46 100644 --- a/spec/v3/services/repositories/for_owner_spec.rb +++ b/spec/v3/services/repositories/for_owner_spec.rb @@ -140,7 +140,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "name" => "master" }, "starred" => false }, { "@type" => "repository", - "@href" => "/v3/repo/5", + "@href" => "/v3/repo/#{repo.id}", "@representation" => "standard", "@permissions" => { "read" => true, @@ -149,7 +149,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "star" => false, "unstar" => false, "create_request"=> false }, - "id" => 5, + "id" => repo.id, "name" => "maximal", "slug" => "svenfuchs/maximal", "description" => nil, @@ -163,7 +163,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "@href" => "/v3/user/1" }, "default_branch" => { "@type" => "branch", - "@href" => "/v3/repo/5/branch/master", + "@href" => "/v3/repo/#{repo.id}/branch/master", "@representation"=>"minimal", "name" =>"master" }, "starred"=>false}]} From 74b43d5e8993dfef74b3e4b0fc239b7b0fb48043 Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 14 Mar 2016 12:58:46 +0100 Subject: [PATCH 7/9] use repo2 --- spec/v3/services/repositories/for_owner_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/v3/services/repositories/for_owner_spec.rb b/spec/v3/services/repositories/for_owner_spec.rb index 858eac46..4aba71b7 100644 --- a/spec/v3/services/repositories/for_owner_spec.rb +++ b/spec/v3/services/repositories/for_owner_spec.rb @@ -140,7 +140,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "name" => "master" }, "starred" => false }, { "@type" => "repository", - "@href" => "/v3/repo/#{repo.id}", + "@href" => "/v3/repo/#{repo2.id}", "@representation" => "standard", "@permissions" => { "read" => true, @@ -149,7 +149,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "star" => false, "unstar" => false, "create_request"=> false }, - "id" => repo.id, + "id" => repo2.id, "name" => "maximal", "slug" => "svenfuchs/maximal", "description" => nil, @@ -163,7 +163,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "@href" => "/v3/user/1" }, "default_branch" => { "@type" => "branch", - "@href" => "/v3/repo/#{repo.id}/branch/master", + "@href" => "/v3/repo/#{repo2.id}/branch/master", "@representation"=>"minimal", "name" =>"master" }, "starred"=>false}]} From 156a6ebb9821b1f41b9755b3eab7397ea733fe64 Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 14 Mar 2016 13:04:34 +0100 Subject: [PATCH 8/9] set repo id --- spec/v3/services/repositories/for_owner_spec.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/v3/services/repositories/for_owner_spec.rb b/spec/v3/services/repositories/for_owner_spec.rb index 4aba71b7..fdf5491e 100644 --- a/spec/v3/services/repositories/for_owner_spec.rb +++ b/spec/v3/services/repositories/for_owner_spec.rb @@ -106,7 +106,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do end describe "sorting by default_branch.last_build" do - before { repo2 = Travis::API::V3::Models::Repository.create(owner_name: 'svenfuchs', name: 'maximal', owner_id: 1, owner_type: "User", last_build_state: "passed", active: true, last_build_id: 1788, next_build_number: 3) } + before { repo2 = Travis::API::V3::Models::Repository.create(id: 5, owner_name: 'svenfuchs', name: 'maximal', owner_id: 1, owner_type: "User", last_build_state: "passed", active: true, last_build_id: 1788, next_build_number: 3) } before { get("/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build", {}, headers) } example { expect(last_response).to be_ok } example { expect(JSON.load(body)['@href']) .to be == "/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build" } @@ -140,7 +140,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "name" => "master" }, "starred" => false }, { "@type" => "repository", - "@href" => "/v3/repo/#{repo2.id}", + "@href" => "/v3/repo/5", "@representation" => "standard", "@permissions" => { "read" => true, @@ -149,7 +149,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "star" => false, "unstar" => false, "create_request"=> false }, - "id" => repo2.id, + "id" => 5, "name" => "maximal", "slug" => "svenfuchs/maximal", "description" => nil, @@ -163,7 +163,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "@href" => "/v3/user/1" }, "default_branch" => { "@type" => "branch", - "@href" => "/v3/repo/#{repo2.id}/branch/master", + "@href" => "/v3/repo/5/branch/master", "@representation"=>"minimal", "name" =>"master" }, "starred"=>false}]} From 643ca01ee5c08af8a69069b068d5dcd11d42b6df Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 14 Mar 2016 13:24:01 +0100 Subject: [PATCH 9/9] user repo2 again --- spec/v3/services/repositories/for_owner_spec.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/spec/v3/services/repositories/for_owner_spec.rb b/spec/v3/services/repositories/for_owner_spec.rb index fdf5491e..0c9ac6ab 100644 --- a/spec/v3/services/repositories/for_owner_spec.rb +++ b/spec/v3/services/repositories/for_owner_spec.rb @@ -106,7 +106,8 @@ describe Travis::API::V3::Services::Repositories::ForOwner do end describe "sorting by default_branch.last_build" do - before { repo2 = Travis::API::V3::Models::Repository.create(id: 5, owner_name: 'svenfuchs', name: 'maximal', owner_id: 1, owner_type: "User", last_build_state: "passed", active: true, last_build_id: 1788, next_build_number: 3) } + let(:repo2) { Travis::API::V3::Models::Repository.create(owner_name: 'svenfuchs', name: 'maximal', owner_id: 1, owner_type: "User", last_build_state: "passed", active: true, last_build_id: 1788, next_build_number: 3) } + before { repo2.save! } before { get("/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build", {}, headers) } example { expect(last_response).to be_ok } example { expect(JSON.load(body)['@href']) .to be == "/v3/owner/svenfuchs/repos?sort_by=default_branch.last_build" } @@ -140,7 +141,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "name" => "master" }, "starred" => false }, { "@type" => "repository", - "@href" => "/v3/repo/5", + "@href" => "/v3/repo/#{repo2.id}", "@representation" => "standard", "@permissions" => { "read" => true, @@ -149,7 +150,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "star" => false, "unstar" => false, "create_request"=> false }, - "id" => 5, + "id" => repo2.id, "name" => "maximal", "slug" => "svenfuchs/maximal", "description" => nil, @@ -163,7 +164,7 @@ describe Travis::API::V3::Services::Repositories::ForOwner do "@href" => "/v3/user/1" }, "default_branch" => { "@type" => "branch", - "@href" => "/v3/repo/5/branch/master", + "@href" => "/v3/repo/#{repo2.id}/branch/master", "@representation"=>"minimal", "name" =>"master" }, "starred"=>false}]}