Merge pull request #202 from travis-ci/rkh-active-broadcasts
better broadcasts, cleaner payloads
This commit is contained in:
commit
03c982a45a
|
@ -4,5 +4,9 @@ module Travis::API::V3
|
|||
belongs_to :last_build, class_name: 'Travis::API::V3::Models::Build'.freeze
|
||||
has_many :builds, foreign_key: [:repository_id, :branch], primary_key: [:repository_id, :name], order: 'builds.id DESC'.freeze, conditions: { event_type: 'push' }
|
||||
has_many :commits, foreign_key: [:repository_id, :branch], primary_key: [:repository_id, :name], order: 'commits.id DESC'.freeze
|
||||
|
||||
def default_branch
|
||||
name == repository.default_branch_name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
module Travis::API::V3
|
||||
class Models::Broadcast < Model
|
||||
EXPIRY_TIME = 14.days
|
||||
|
||||
belongs_to :recipient, polymorphic: true
|
||||
scope :active, -> { where('created_at >= ? AND (expired IS NULL OR expired <> ?)', EXPIRY_TIME.ago, true) }
|
||||
scope :inactive, -> { where('created_at < ? OR (expired = ?)', EXPIRY_TIME.ago, true) }
|
||||
|
||||
def active?
|
||||
return false if expired?
|
||||
created_at >= EXPIRY_TIME.ago
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,13 +1,35 @@
|
|||
module Travis::API::V3
|
||||
class Queries::Broadcasts < Query
|
||||
params :active, prefix: :broadcast
|
||||
|
||||
def initialize(*)
|
||||
super
|
||||
self.active = "true".freeze if active.nil?
|
||||
end
|
||||
|
||||
def for_user(user)
|
||||
query = %(
|
||||
all.where(<<-SQL, 'Organization'.freeze, user.organization_ids, 'User'.freeze, user.id, 'Repository'.freeze, user.repository_ids)
|
||||
recipient_type IS NULL OR
|
||||
recipient_type = ? AND recipient_id IN(?) OR
|
||||
recipient_type = ? AND recipient_id = ? OR
|
||||
recipient_type = ? AND recipient_id IN (?)
|
||||
)
|
||||
Models::Broadcast.where(query, 'Organization', user.organization_ids, 'User', user.id, 'Repository', user.repository_ids)
|
||||
SQL
|
||||
end
|
||||
|
||||
def all
|
||||
@all ||= filter(Models::Broadcast)
|
||||
end
|
||||
|
||||
def filter(list)
|
||||
active = list(self.active).map { |e| bool(e) }
|
||||
|
||||
if active.include? true
|
||||
list = list.active unless active.include? false
|
||||
else
|
||||
list = list.inactive
|
||||
end
|
||||
|
||||
list
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@ require 'travis/api/v3/renderer/model_renderer'
|
|||
|
||||
module Travis::API::V3
|
||||
class Renderer::Branch < Renderer::ModelRenderer
|
||||
representation(:minimal, :name, :last_build)
|
||||
representation(:standard, :name, :repository, :last_build, :exists_on_github)
|
||||
representation(:minimal, :name)
|
||||
representation(:standard, :name, :repository, :default_branch, :exists_on_github, :last_build)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,11 @@ require 'travis/api/v3/renderer/model_renderer'
|
|||
|
||||
module Travis::API::V3
|
||||
class Renderer::Broadcast < Renderer::ModelRenderer
|
||||
representation(:minimal, :id, :recipient_id, :message, :created_at, :category)
|
||||
representation(:standard, :id, :recipient_id, :recipient_type, :category, :kind, :message, :expired, :created_at, :updated_at)
|
||||
representation(:minimal, :id, :message, :created_at, :category, :active)
|
||||
representation(:standard, :id, *representations[:minimal], :recipient)
|
||||
|
||||
def active
|
||||
model.active?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,8 +2,8 @@ require 'travis/api/v3/renderer/model_renderer'
|
|||
|
||||
module Travis::API::V3
|
||||
class Renderer::Build < Renderer::ModelRenderer
|
||||
representation(:minimal, :id, :number, :state, :duration, :event_type, :previous_state, :started_at, :finished_at, :jobs)
|
||||
representation(:standard, *representations[:minimal], :repository, :branch, :commit)
|
||||
representation(:minimal, :id, :number, :state, :duration, :event_type, :previous_state, :started_at, :finished_at)
|
||||
representation(:standard, *representations[:minimal], :repository, :branch, :commit, :jobs)
|
||||
|
||||
def jobs
|
||||
return model.jobs if include_full_jobs?
|
||||
|
|
|
@ -2,13 +2,29 @@ require 'travis/api/v3/renderer/model_renderer'
|
|||
|
||||
module Travis::API::V3
|
||||
class Renderer::Repository < Renderer::ModelRenderer
|
||||
representation(:minimal, :id, :slug, :default_branch)
|
||||
representation(:standard, :id, :name, :slug, :description, :github_language, :active, :private, :owner, :last_build, :default_branch)
|
||||
representation(:minimal, :id, :name, :slug)
|
||||
representation(:standard, :id, :name, :slug, :description, :github_language, :active, :private, :owner, :default_branch)
|
||||
|
||||
def active
|
||||
!!model.active
|
||||
end
|
||||
|
||||
def default_branch
|
||||
return model.default_branch if include_default_branch?
|
||||
{
|
||||
:@type => 'branch'.freeze,
|
||||
:@href => Renderer.href(:branch, name: model.default_branch_name, repository_id: id, script_name: script_name),
|
||||
:@representation => 'minimal'.freeze,
|
||||
:name => model.default_branch_name
|
||||
}
|
||||
end
|
||||
|
||||
def include_default_branch?
|
||||
return true if include? 'repository.default_branch'.freeze
|
||||
return true if include.any? { |i| i.start_with? 'branch'.freeze }
|
||||
return true if included.any? { |i| i.is_a? Models::Branch and i.respository_id == id and i.name == i.default_branch_name }
|
||||
end
|
||||
|
||||
def owner
|
||||
return model.owner if include_owner?
|
||||
owner_href = Renderer.href(owner_type.to_sym, id: model.owner_id, script_name: script_name)
|
||||
|
@ -35,26 +51,5 @@ module Travis::API::V3
|
|||
def owner_type
|
||||
@owner_type ||= model.owner_type.downcase if model.owner_type
|
||||
end
|
||||
|
||||
def last_build
|
||||
return nil unless model.last_build_id
|
||||
return model.last_build if include_last_build?
|
||||
{
|
||||
:@type => 'build'.freeze,
|
||||
:@href => Renderer.href(:build, script_name: script_name, id: model.last_build_id),
|
||||
:id => model.last_build_id,
|
||||
:number => model.last_build_number,
|
||||
:state => model.last_build_state.to_s,
|
||||
:duration => model.last_build_duration,
|
||||
:started_at => model.last_build_started_at,
|
||||
:finished_at => model.last_build_finished_at,
|
||||
}
|
||||
end
|
||||
|
||||
def include_last_build?
|
||||
return true if include? 'repository.last_build'.freeze
|
||||
return true if include.any? { |i| i.start_with? 'build.'.freeze }
|
||||
return true if included.any? { |i| i.is_a? Models::Build and i.id == model.last_build_id }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
module Travis::API::V3
|
||||
class Services::Broadcasts::ForCurrentUser < Service
|
||||
params :active, prefix: :broadcast
|
||||
|
||||
def run!
|
||||
raise LoginRequired unless access_control.logged_in?
|
||||
query.for_user(access_control.user)
|
||||
|
|
|
@ -14,44 +14,26 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "standard",
|
||||
"name" => "master",
|
||||
"default_branch" => true,
|
||||
"exists_on_github" => true,
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master"}},
|
||||
"name" => "minimal",
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.default_branch.last_build.id}",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.default_branch.last_build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
"id" => build.id,
|
||||
"number" => build.number,
|
||||
"state" => build.state,
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[0].id},
|
||||
{"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id},
|
||||
{"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id},
|
||||
{"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" =>jobs[3].id}]},
|
||||
"exists_on_github"=> true
|
||||
}}
|
||||
"finished_at" => nil }}}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -48,17 +48,18 @@ describe Travis::API::V3::Services::Branches::Find do
|
|||
"limit" => 1 }},
|
||||
"branches" => [{
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/#{branch.name}",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "standard",
|
||||
"name" => branch.name,
|
||||
"name" => "master",
|
||||
"default_branch" => true,
|
||||
"exists_on_github" => true,
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master"}},
|
||||
"name" => "minimal",
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
|
@ -70,28 +71,7 @@ describe Travis::API::V3::Services::Branches::Find do
|
|||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[0].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id }]},
|
||||
"exists_on_github" => true }]}
|
||||
"finished_at" => nil }}]}
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -125,17 +105,18 @@ describe Travis::API::V3::Services::Branches::Find do
|
|||
"limit" => 1 }},
|
||||
"branches" => [{
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/#{branch.name}",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "standard",
|
||||
"name" => branch.name,
|
||||
"name" => "master",
|
||||
"default_branch" => true,
|
||||
"exists_on_github" => true,
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master"}},
|
||||
"name" => "minimal",
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
|
@ -147,28 +128,7 @@ describe Travis::API::V3::Services::Branches::Find do
|
|||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[0].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id }]},
|
||||
"exists_on_github" => true }]}
|
||||
"finished_at" => nil }}]}
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ require 'spec_helper'
|
|||
|
||||
describe Travis::API::V3::Services::Broadcasts::ForCurrentUser do
|
||||
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
||||
# let(:user) { Travis::API::V3::Models::User.where(login: 'svenfuchs') }
|
||||
|
||||
let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) }
|
||||
let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }}
|
||||
|
||||
|
@ -23,61 +21,37 @@ describe Travis::API::V3::Services::Broadcasts::ForCurrentUser do
|
|||
let(:broadcasts){ Travis::API::V3::Models::Broadcast.where(recipient_id: [repo.id, org.id, repo.owner_id, nil]) }
|
||||
|
||||
|
||||
describe "authenticated as user with access" do
|
||||
describe "only active broadcasts" do
|
||||
before { get("/v3/broadcasts", {}, headers) }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(JSON.load(body)).to be == {
|
||||
"@type" => "broadcasts",
|
||||
"@href" => "/v3/broadcasts",
|
||||
"@representation" => "standard",
|
||||
"broadcasts" => [{
|
||||
"broadcasts" => []
|
||||
}}
|
||||
end
|
||||
|
||||
describe "only inactive broadcasts" do
|
||||
let(:broadcast) { broadcasts.first }
|
||||
before { get("/v3/broadcasts?broadcast.active=false", {}, headers) }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(JSON.load(body)["broadcasts"].first).to be == {
|
||||
"@type" => "broadcast",
|
||||
"@representation" => "standard",
|
||||
"id" => broadcasts[0].id,
|
||||
"recipient_id" => broadcasts[0].recipient_id,
|
||||
"recipient_type" => broadcasts[0].recipient_type,
|
||||
"category" => broadcasts[0].category,
|
||||
"kind" => nil,
|
||||
"message" => broadcasts[0].message,
|
||||
"expired" => nil,
|
||||
"id" => broadcast.id,
|
||||
"message" => broadcast.message,
|
||||
"created_at" => "2010-11-12T13:00:00Z",
|
||||
"updated_at" => "2010-11-12T13:00:00Z" },
|
||||
{
|
||||
"@type" => "broadcast",
|
||||
"@representation"=> "standard",
|
||||
"id" => broadcasts[1].id,
|
||||
"recipient_id" => broadcasts[1].recipient_id,
|
||||
"recipient_type" => broadcasts[1].recipient_type,
|
||||
"category" => broadcasts[1].category,
|
||||
"kind" => nil,
|
||||
"message" => broadcasts[1].message,
|
||||
"expired" => nil,
|
||||
"created_at" => "2010-11-12T13:00:00Z",
|
||||
"updated_at" => "2010-11-12T13:00:00Z"},
|
||||
{
|
||||
"@type" => "broadcast",
|
||||
"@representation"=> "standard",
|
||||
"id" => broadcasts[2].id,
|
||||
"recipient_id" => broadcasts[2].recipient_id,
|
||||
"recipient_type" => broadcasts[2].recipient_type,
|
||||
"category" => broadcasts[2].category,
|
||||
"kind" => nil,
|
||||
"message" => broadcasts[2].message,
|
||||
"expired" => nil,
|
||||
"created_at" => "2010-11-12T13:00:00Z",
|
||||
"updated_at" => "2010-11-12T13:00:00Z"},
|
||||
{
|
||||
"@type" => "broadcast",
|
||||
"@representation"=> "standard",
|
||||
"id" => broadcasts[3].id,
|
||||
"recipient_id" => broadcasts[3].recipient_id,
|
||||
"recipient_type" => broadcasts[3].recipient_type,
|
||||
"category" => broadcasts[3].category,
|
||||
"kind" => nil,
|
||||
"message" => broadcasts[3].message,
|
||||
"expired" => nil,
|
||||
"created_at" => "2010-11-12T13:00:00Z",
|
||||
"updated_at" => "2010-11-12T13:00:00Z"}]
|
||||
"category" => nil,
|
||||
"active" => false,
|
||||
"recipient" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"name" => repo.name,
|
||||
"slug" => repo.slug,
|
||||
}
|
||||
}}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -67,21 +67,13 @@ describe Travis::API::V3::Services::Build::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}"}}},
|
||||
"name" => repo.name,
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=> "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}" }},
|
||||
"name" => "master"},
|
||||
"commit" => {
|
||||
"@type" => "commit",
|
||||
"@representation"=> "minimal",
|
||||
|
@ -140,21 +132,13 @@ describe Travis::API::V3::Services::Build::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}"}}},
|
||||
"name" => "minimal",
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=> "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}" }},
|
||||
"name" => "master"},
|
||||
"commit" => {
|
||||
"@type" => "commit",
|
||||
"@representation"=> "minimal",
|
||||
|
|
|
@ -90,21 +90,13 @@ describe Travis::API::V3::Services::Builds::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}"}}},
|
||||
"name" => "minimal",
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=> "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}" }},
|
||||
"name" => "master"},
|
||||
"commit" => {
|
||||
"@type" => "commit",
|
||||
"@representation"=> "minimal",
|
||||
|
@ -191,21 +183,13 @@ describe Travis::API::V3::Services::Builds::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}"}}},
|
||||
"name" => "minimal",
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=> "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}" }},
|
||||
"name" => "master"},
|
||||
"commit" => {
|
||||
"@type" => "commit",
|
||||
"@representation"=> "minimal",
|
||||
|
|
|
@ -40,69 +40,15 @@ describe Travis::API::V3::Services::Job::Find do
|
|||
"event_type" => build.event_type,
|
||||
"previous_state" => build.previous_state,
|
||||
"started_at" => "2010-11-12T12:00:00Z",
|
||||
"finished_at" => "2010-11-12T12:00:10Z",
|
||||
"jobs" =>[
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[2].id},
|
||||
{
|
||||
"@href" => "/v3/job/#{jobs[3].id}"}]},
|
||||
"finished_at" => "2010-11-12T12:00:10Z"},
|
||||
"queue" => job.queue,
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => repo.slug,
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@type" =>"build",
|
||||
"@href" =>"/v3/build/#{default_branch.last_build.id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => default_branch.last_build.id,
|
||||
"number" => default_branch.last_build.number,
|
||||
"state" => default_branch.last_build.state,
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state"=>"passed",
|
||||
"started_at" =>"2010-11-12T13:00:00Z",
|
||||
"finished_at"=> nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[0].id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => def_branch_jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[3].id}]}}},
|
||||
"name" => repo.name,
|
||||
"slug" => repo.slug},
|
||||
"commit" => {
|
||||
"@type" => "commit",
|
||||
"@representation" => "minimal",
|
||||
|
@ -164,69 +110,15 @@ describe Travis::API::V3::Services::Job::Find do
|
|||
"event_type" => build.event_type,
|
||||
"previous_state" => build.previous_state,
|
||||
"started_at" => "2010-11-12T12:00:00Z",
|
||||
"finished_at" => "2010-11-12T12:00:10Z",
|
||||
"jobs" =>[
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[2].id},
|
||||
{
|
||||
"@href" => "/v3/job/#{jobs[3].id}"}]},
|
||||
"finished_at" => "2010-11-12T12:00:10Z"},
|
||||
"queue" => job.queue,
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => repo.slug,
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@type" =>"build",
|
||||
"@href" =>"/v3/build/#{default_branch.last_build.id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => default_branch.last_build.id,
|
||||
"number" => default_branch.last_build.number,
|
||||
"state" => default_branch.last_build.state,
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state"=>"passed",
|
||||
"started_at" =>"2010-11-12T13:00:00Z",
|
||||
"finished_at"=> nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[0].id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => def_branch_jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[3].id}]}}},
|
||||
"name" => repo.name,
|
||||
"slug" => repo.slug},
|
||||
"commit" => {
|
||||
"@type" => "commit",
|
||||
"@representation" => "minimal",
|
||||
|
|
|
@ -56,14 +56,12 @@ describe Travis::API::V3::Services::Owner::Find do
|
|||
"github_language" => nil,
|
||||
"active" => false,
|
||||
"private" => false,
|
||||
"last_build" => nil,
|
||||
"owner" => { "@href"=> "/v3/org/#{org.id}" },
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => nil }
|
||||
"name" => "master"}
|
||||
}]
|
||||
}}
|
||||
end
|
||||
|
@ -102,14 +100,12 @@ describe Travis::API::V3::Services::Owner::Find do
|
|||
"github_language" => nil,
|
||||
"active" => false,
|
||||
"private" => false,
|
||||
"last_build" => nil,
|
||||
"owner" => { "@href"=> "/v3/org/#{org.id}" },
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=> "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => nil }
|
||||
"name" => "master"}
|
||||
}]
|
||||
}}
|
||||
end
|
||||
|
|
|
@ -39,55 +39,11 @@ describe Travis::API::V3::Services::Owner::Repositories do
|
|||
"id" => repo.owner_id,
|
||||
"login" => "svenfuchs",
|
||||
"@href" => "/v3/user/#{repo.owner_id}" },
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.last_build.id}",
|
||||
"id" => repo.last_build_id,
|
||||
"number" => "2",
|
||||
"state" => "passed",
|
||||
"duration" => nil,
|
||||
"started_at" => "2010-11-12T12:30:00Z",
|
||||
"finished_at" => "2010-11-12T12:30:20Z"},
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.default_branch.last_build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.default_branch.last_build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id}]
|
||||
|
||||
}}}]
|
||||
}}
|
||||
"name" => "master"}}]}}
|
||||
end
|
||||
|
||||
describe "filter: private=false" do
|
||||
|
|
|
@ -39,53 +39,11 @@ describe Travis::API::V3::Services::Repositories::ForCurrentUser do
|
|||
"@href" => "/v3/user/#{repo.owner_id}",
|
||||
"id" => repo.owner_id,
|
||||
"login" => "svenfuchs" },
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.last_build_id}",
|
||||
"id" => repo.last_build_id,
|
||||
"number" => "2",
|
||||
"state" => "passed",
|
||||
"duration" => nil,
|
||||
"started_at" => "2010-11-12T12:30:00Z",
|
||||
"finished_at" => "2010-11-12T12:30:20Z"},
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.default_branch.last_build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.default_branch.last_build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id}]
|
||||
}}}]
|
||||
"name" => "master"}}]
|
||||
}}
|
||||
end
|
||||
|
||||
|
|
|
@ -47,53 +47,11 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
"login" => "svenfuchs",
|
||||
"@type" => "user",
|
||||
"@href" => "/v3/user/#{repo.owner_id}"},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.last_build_id}",
|
||||
"id" => repo.last_build_id,
|
||||
"number" => "2",
|
||||
"state" => "passed",
|
||||
"duration" => nil,
|
||||
"started_at" => "2010-11-12T12:30:00Z",
|
||||
"finished_at" => "2010-11-12T12:30:20Z"},
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.default_branch.last_build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.default_branch.last_build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id}]
|
||||
}}
|
||||
"name" => "master"}
|
||||
}}
|
||||
end
|
||||
|
||||
|
@ -163,53 +121,11 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
"login" => "svenfuchs",
|
||||
"@type" => "user",
|
||||
"@href" => "/v3/user/#{repo.owner_id}"},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.last_build_id}",
|
||||
"id" => repo.last_build_id,
|
||||
"number" => "2",
|
||||
"state" => "passed",
|
||||
"duration" => nil,
|
||||
"started_at" => "2010-11-12T12:30:00Z",
|
||||
"finished_at" => "2010-11-12T12:30:20Z"},
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.default_branch.last_build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.default_branch.last_build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id}]
|
||||
}}
|
||||
"name" => "master"}
|
||||
}}
|
||||
end
|
||||
|
||||
|
@ -264,53 +180,11 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
"login" => "svenfuchs",
|
||||
"@type" => "user",
|
||||
"@href" => "/v3/user/#{repo.owner_id}"},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.last_build_id}",
|
||||
"id" => repo.last_build_id,
|
||||
"number" => "2",
|
||||
"state" => "passed",
|
||||
"duration" => nil,
|
||||
"started_at" => "2010-11-12T12:30:00Z",
|
||||
"finished_at" => "2010-11-12T12:30:20Z"},
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.default_branch.last_build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.default_branch.last_build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id}]
|
||||
}}
|
||||
"name" => "master"}
|
||||
}}
|
||||
end
|
||||
|
||||
|
@ -371,53 +245,11 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
"login" => "svenfuchs",
|
||||
"@type" => "user",
|
||||
"@href" => "/v3/user/#{repo.owner_id}"},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.last_build_id}",
|
||||
"id" => repo.last_build_id,
|
||||
"number" => "2",
|
||||
"state" => "passed",
|
||||
"duration" => nil,
|
||||
"started_at" => "2010-11-12T12:30:00Z",
|
||||
"finished_at" => "2010-11-12T12:30:20Z"},
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation" => "minimal",
|
||||
"name" => "master",
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.default_branch.last_build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.default_branch.last_build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id}]
|
||||
}}
|
||||
"name" => "master"}
|
||||
}}
|
||||
end
|
||||
|
||||
|
@ -431,11 +263,9 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
)}
|
||||
end
|
||||
|
||||
describe "including full owner and full last build" do
|
||||
before { get("/v3/repo/#{repo.id}?include=repository.owner,repository.last_build") }
|
||||
describe "including full owner" do
|
||||
before { get("/v3/repo/#{repo.id}?include=repository.owner") }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(parsed_body['last_build']['state']).to be == 'passed' }
|
||||
example { expect(parsed_body['last_build']['repository']).to be == { "@href" => "/v3/repo/#{repo.id}" } }
|
||||
example { expect(parsed_body['owner']).to include("github_id", "is_syncing", "synced_at")}
|
||||
end
|
||||
|
||||
|
@ -458,10 +288,4 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
"error_message" => "illegal format for include parameter"
|
||||
}}
|
||||
end
|
||||
|
||||
describe "including nested objects" do
|
||||
before { get("/v3/repo/#{repo.id}?include=repository.last_build,build.branch") }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(parsed_body).to include("last_build") }
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user