v3: SQL "NOT IN ()" never matches
This commit is contained in:
parent
24d5efda95
commit
afb6fe286b
|
@ -369,6 +369,3 @@ DEPENDENCIES
|
|||
travis-yaml!
|
||||
unicorn
|
||||
yard-sinatra!
|
||||
|
||||
BUNDLED WITH
|
||||
1.10.6
|
||||
|
|
|
@ -24,7 +24,7 @@ module Travis::API::V3
|
|||
if user and not starred.nil?
|
||||
if bool(starred)
|
||||
list = list.joins(:stars).where(stars: { user_id: user.id })
|
||||
else
|
||||
elsif user.starred_repository_ids.any?
|
||||
list = list.where("repositories.id NOT IN (?)", user.starred_repository_ids)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -87,10 +87,10 @@ describe Travis::API::V3::Services::Repositories::ForCurrentUser do
|
|||
end
|
||||
|
||||
describe "filter: starred=true" do
|
||||
before { Travis::API::V3::Models::Star.create(user: repo.owner, repository: repo) }
|
||||
before { get("/v3/repos", {"starred" => "true"}, headers) }
|
||||
after { repo.owner.stars.each(&:destroy) }
|
||||
example { expect(last_response) .to be_ok }
|
||||
before { Travis::API::V3::Models::Star.create(user: repo.owner, repository: repo) }
|
||||
before { get("/v3/repos", {"starred" => "true"}, headers) }
|
||||
after { repo.owner.stars.each(&:destroy) }
|
||||
example { expect(last_response) .to be_ok }
|
||||
example { expect(JSON.load(body)['@href']) .to be == "/v3/repos?starred=true" }
|
||||
example { expect(JSON.load(body)['repositories']) .to be == [{
|
||||
"@type" => "repository",
|
||||
|
@ -128,6 +128,15 @@ describe Travis::API::V3::Services::Repositories::ForCurrentUser do
|
|||
before { get("/v3/repos", {"starred" => "false"}, headers) }
|
||||
example { expect(last_response) .to be_ok }
|
||||
example { expect(JSON.load(body)['@href']) .to be == "/v3/repos?starred=false" }
|
||||
example { expect(JSON.load(body)['repositories']) .to be == ["all the unstarred repos"] }
|
||||
example { expect(JSON.load(body)['repositories']) .not_to be_empty }
|
||||
end
|
||||
|
||||
describe "filter: starred=false but no unstarred repos" do
|
||||
before { Travis::API::V3::Models::Star.create(user: repo.owner, repository: repo) }
|
||||
after { repo.owner.stars.each(&:destroy) }
|
||||
before { get("/v3/repos", {"starred" => "false"}, headers) }
|
||||
example { expect(last_response) .to be_ok }
|
||||
example { expect(JSON.load(body)['@href']) .to be == "/v3/repos?starred=false" }
|
||||
example { expect(JSON.load(body)['repositories']) .to be_empty }
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user