diff --git a/lib/travis/api/v3/models/build.rb b/lib/travis/api/v3/models/build.rb index 78f1b697..cecf242d 100644 --- a/lib/travis/api/v3/models/build.rb +++ b/lib/travis/api/v3/models/build.rb @@ -6,9 +6,9 @@ module Travis::API::V3 belongs_to :repository, autosave: true belongs_to :owner, polymorphic: true - has_many :jobs, - as: :source, - order: :id, + has_many :jobs, + as: :source, + order: :id, dependent: :destroy has_one :branch, diff --git a/lib/travis/api/v3/renderer/build.rb b/lib/travis/api/v3/renderer/build.rb index fd251fd4..a57e5136 100644 --- a/lib/travis/api/v3/renderer/build.rb +++ b/lib/travis/api/v3/renderer/build.rb @@ -2,7 +2,7 @@ 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, :job_ids) - representation(:standard, *representations[:minimal], :repository, :branch, :commit, :jobs) + representation(:minimal, :id, :number, :state, :duration, :event_type, :previous_state, :started_at, :finished_at, :jobs) + representation(:standard, *representations[:minimal], :repository, :branch, :commit ) end end diff --git a/lib/travis/api/v3/renderer/job.rb b/lib/travis/api/v3/renderer/job.rb index 62981477..bb04fda0 100644 --- a/lib/travis/api/v3/renderer/job.rb +++ b/lib/travis/api/v3/renderer/job.rb @@ -2,7 +2,7 @@ require 'travis/api/v3/renderer/model_renderer' module Travis::API::V3 class Renderer::Job < Renderer::ModelRenderer - representation(:minimal, :id, :number, :state, :started_at, :finished_at) - representation(:standard, *representations[:minimal], :build, :queue, :repository, :commit, :owner ) + representation(:minimal, :id) + representation(:standard, *representations[:minimal], :number, :state, :started_at, :finished_at, :build, :queue, :repository, :commit, :owner ) end end diff --git a/spec/v3/extensions/belongs_to_spec.rb b/spec/v3/extensions/belongs_to_spec.rb index b7a28042..dabac0fd 100644 --- a/spec/v3/extensions/belongs_to_spec.rb +++ b/spec/v3/extensions/belongs_to_spec.rb @@ -12,7 +12,7 @@ describe Travis::API::V3::Extensions::BelongsTo do after { repo.destroy; user.destroy } example { expect(repo.owner).to be_a(Travis::API::V3::Models::User) } - example { expect(::Repository.find(repo.id).owner).to be_a(::User) } + example { expect(Travis::API::V3::Models::Repository.find(repo.id).owner).to be_a(Travis::API::V3::Models::User) } example { expect(user.repositories).to include(repo) } end -end \ No newline at end of file +end diff --git a/spec/v3/services/accounts/for_current_user_spec.rb b/spec/v3/services/accounts/for_current_user_spec.rb index 823e2361..e81a4f59 100644 --- a/spec/v3/services/accounts/for_current_user_spec.rb +++ b/spec/v3/services/accounts/for_current_user_spec.rb @@ -1,15 +1,15 @@ require 'spec_helper' describe Travis::API::V3::Services::Accounts::ForCurrentUser do - let(:repo) { Repository.by_slug('svenfuchs/minimal').first } + let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} - before { Permission.create(repository: repo, user: repo.owner, pull: true) } + before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true) } before { repo.update_attribute(:private, true) } after { repo.update_attribute(:private, false) } - let(:org) { Organization.new(login: 'example-org', github_id: 42) } + let(:org) { Travis::API::V3::Models::Organization.new(login: 'example-org', github_id: 42) } before { org.save! } before { org.memberships.create(user: repo.owner) } after { org.delete } diff --git a/spec/v3/services/branch/find_spec.rb b/spec/v3/services/branch/find_spec.rb index dd424226..5fb56102 100644 --- a/spec/v3/services/branch/find_spec.rb +++ b/spec/v3/services/branch/find_spec.rb @@ -2,6 +2,8 @@ require 'spec_helper' describe Travis::API::V3::Services::Repository::Find do let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } + let(:build) { repo.builds.first } + let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs } before { repo.default_branch.save! } describe "public repository, existing branch" do @@ -30,7 +32,23 @@ describe Travis::API::V3::Services::Repository::Find do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => repo.default_branch.last_build.cached_matrix_ids[1...-1].split(",").map(&:to_i) } + "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}]} }} end end diff --git a/spec/v3/services/build/find_spec.rb b/spec/v3/services/build/find_spec.rb index 422d5546..05ffd26f 100644 --- a/spec/v3/services/build/find_spec.rb +++ b/spec/v3/services/build/find_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' describe Travis::API::V3::Services::Build::Find do - let(:repo) { Repository.by_slug('svenfuchs/minimal').first } - let(:build) { repo.builds.last } + let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } + let(:build) { repo.builds.first } let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs } let(:parsed_body) { JSON.load(body) } @@ -30,14 +30,34 @@ describe Travis::API::V3::Services::Build::Find do "@href" => "/v3/build/#{build.id}", "@representation" => "standard", "id" => build.id, - "number" => "3", - "state" => "configured", + "number" => build.number, + "state" => build.state, "duration" => nil, "event_type" => "push", - "previous_state" => "passed", + "previous_state" => build.previous_state, "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => build.cached_matrix_ids, + "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}], "repository" => { "@type" => "repository", "@href" => "/v3/repo/#{repo.id}", @@ -59,68 +79,47 @@ describe Travis::API::V3::Services::Build::Find do "ref" => "refs/heads/master", "message" => "unignore Gemfile.lock", "compare_url" => "https://github.com/svenfuchs/minimal/compare/master...develop", - "committed_at" => "2010-11-12T12:55:00Z"}, - "jobs" =>[ - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[0].id}", - "@representation"=> "minimal", - "id" => jobs[0].id, - "number" => jobs[0].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[1].id}", - "@representation"=> "minimal", - "id" => jobs[1].id, - "number" => jobs[1].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[2].id}", - "@representation"=> "minimal", - "id" => jobs[2].id, - "number" => jobs[2].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[3].id}", - "@representation"=> "minimal", - "id" => jobs[3].id, - "number" => jobs[3].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}] + "committed_at" => "2010-11-12T12:55:00Z"} }} end describe "build private repository, private API, authenticated as user with access" do let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} - before { Permission.create(repository: repo, user: repo.owner, pull: true) } + before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true) } before { repo.update_attribute(:private, true) } before { get("/v3/build/#{build.id}", {}, headers) } after { repo.update_attribute(:private, false) } - example { expect(last_response).to be_ok } + example { expect(last_response).to be_ok } example { expect(parsed_body).to be == { "@type" => "build", "@href" => "/v3/build/#{build.id}", "@representation" => "standard", "id" => build.id, - "number" => "3", - "state" => "configured", + "number" => build.number, + "state" => build.state, "duration" => nil, "event_type" => "push", - "previous_state" => "passed", + "previous_state" => build.previous_state, "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => build.cached_matrix_ids, + "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}], "repository" => { "@type" => "repository", "@href" => "/v3/repo/#{repo.id}", @@ -142,44 +141,7 @@ describe Travis::API::V3::Services::Build::Find do "ref" => "refs/heads/master", "message" => "unignore Gemfile.lock", "compare_url" => "https://github.com/svenfuchs/minimal/compare/master...develop", - "committed_at" => "2010-11-12T12:55:00Z"}, - "jobs" =>[ - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[0].id}", - "@representation"=> "minimal", - "id" => jobs[0].id, - "number" => jobs[0].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[1].id}", - "@representation"=> "minimal", - "id" => jobs[1].id, - "number" => jobs[1].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[2].id}", - "@representation"=> "minimal", - "id" => jobs[2].id, - "number" => jobs[2].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[3].id}", - "@representation"=> "minimal", - "id" => jobs[3].id, - "number" => jobs[3].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}] + "committed_at" => "2010-11-12T12:55:00Z"} }} end end diff --git a/spec/v3/services/builds/find_spec.rb b/spec/v3/services/builds/find_spec.rb index 9d0a9cea..65801147 100644 --- a/spec/v3/services/builds/find_spec.rb +++ b/spec/v3/services/builds/find_spec.rb @@ -60,7 +60,27 @@ describe Travis::API::V3::Services::Builds::Find do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => build.cached_matrix_ids, + "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}], "repository" => { "@type" => "repository", "@href" => "/v3/repo/#{repo.id}", @@ -83,43 +103,6 @@ describe Travis::API::V3::Services::Builds::Find do "message" => "unignore Gemfile.lock", "compare_url" => "https://github.com/svenfuchs/minimal/compare/master...develop", "committed_at" => "2010-11-12T12:55:00Z"}, - "jobs" =>[ - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[0].id}", - "@representation"=> "minimal", - "id" => jobs[0].id, - "number" => jobs[0].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[1].id}", - "@representation"=> "minimal", - "id" => jobs[1].id, - "number" => jobs[1].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[2].id}", - "@representation"=> "minimal", - "id" => jobs[2].id, - "number" => jobs[2].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[3].id}", - "@representation"=> "minimal", - "id" => jobs[3].id, - "number" => jobs[3].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}] }] }} end @@ -127,7 +110,7 @@ describe Travis::API::V3::Services::Builds::Find do describe "builds private repository, private API, authenticated as user with access" do let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} - before { Permission.create(repository: repo, user: repo.owner, pull: true) } + before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true) } before { repo.update_attribute(:private, true) } before { get("/v3/repo/#{repo.id}/builds?limit=1", {}, headers) } after { repo.update_attribute(:private, false) } @@ -167,7 +150,27 @@ describe Travis::API::V3::Services::Builds::Find do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => build.cached_matrix_ids, + "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}], "repository" => { "@type" => "repository", "@href" => "/v3/repo/#{repo.id}", @@ -189,44 +192,7 @@ describe Travis::API::V3::Services::Builds::Find do "ref" => "refs/heads/master", "message" => "unignore Gemfile.lock", "compare_url" => "https://github.com/svenfuchs/minimal/compare/master...develop", - "committed_at" => "2010-11-12T12:55:00Z"}, - "jobs" =>[ - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[0].id}", - "@representation"=> "minimal", - "id" => jobs[0].id, - "number" => jobs[0].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[1].id}", - "@representation"=> "minimal", - "id" => jobs[1].id, - "number" => jobs[1].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[2].id}", - "@representation"=> "minimal", - "id" => jobs[2].id, - "number" => jobs[2].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}, - { - "@type" => "job", - "@href" => "/v3/job/#{jobs[3].id}", - "@representation"=> "minimal", - "id" => jobs[3].id, - "number" => jobs[3].number, - "state" => "configured", - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => nil}] + "committed_at" => "2010-11-12T12:55:00Z"} }] }} end diff --git a/spec/v3/services/job/find_spec.rb b/spec/v3/services/job/find_spec.rb index c388c7b0..fba9c4f0 100644 --- a/spec/v3/services/job/find_spec.rb +++ b/spec/v3/services/job/find_spec.rb @@ -1,11 +1,12 @@ require 'spec_helper' describe Travis::API::V3::Services::Job::Find do - let(:repo) { Repository.by_slug('svenfuchs/minimal').first } + let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } let(:owner_href) { repo.owner_type.downcase } let(:owner_type) { repo.owner_type.constantize } let(:owner) { owner_type.find(repo.owner_id)} let(:build) { repo.builds.last } + let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs } let(:job) { Travis::API::V3::Models::Build.find(build.id).jobs.last } let(:commit) { job.commit } let(:parsed_body) { JSON.load(body) } @@ -20,8 +21,8 @@ describe Travis::API::V3::Services::Job::Find do "id" => job.id, "number" => job.number, "state" => job.state, - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => job.finished_at, + "started_at" => "2010-11-12T12:00:00Z", + "finished_at" => "2010-11-12T12:00:10Z", "build" => { "@type" => "build", "@href" => "/v3/build/#{build.id}", @@ -32,9 +33,26 @@ describe Travis::API::V3::Services::Job::Find do "duration" => build.duration, "event_type" => build.event_type, "previous_state" => build.previous_state, - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => build.finished_at, - "job_ids" => build.cached_matrix_ids}, + "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}"}]}, "queue" => job.queue, "repository" => { "@type" => "repository", @@ -50,7 +68,7 @@ describe Travis::API::V3::Services::Job::Find do "ref" => commit.ref, "message" => commit.message, "compare_url" => commit.compare_url, - "committed_at" => "2010-11-12T12:55:00Z"}, + "committed_at" => "2010-11-12T11:50:00Z"}, "owner" => { "@type" => owner_type.to_s.downcase, "@href" => "/v3/#{owner_href}/#{owner.id}", @@ -74,9 +92,9 @@ describe Travis::API::V3::Services::Job::Find do describe "fetching job on private repository, private API, authenticated as user with access" do let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} - before { Permission.create(repository: repo, user: repo.owner, pull: true) } + before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true) } before { repo.update_attribute(:private, true) } - before { get("/v3/job/#{job.id}", {}, headers) } + before { get("/v3/job/#{job.id}", {}, headers) } after { repo.update_attribute(:private, false) } example { expect(last_response).to be_ok } example { expect(parsed_body).to be == { @@ -86,8 +104,8 @@ describe Travis::API::V3::Services::Job::Find do "id" => job.id, "number" => job.number, "state" => job.state, - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => job.finished_at, + "started_at" => "2010-11-12T12:00:00Z", + "finished_at" => "2010-11-12T12:00:10Z", "build" => { "@type" => "build", "@href" => "/v3/build/#{build.id}", @@ -98,9 +116,26 @@ describe Travis::API::V3::Services::Job::Find do "duration" => build.duration, "event_type" => build.event_type, "previous_state" => build.previous_state, - "started_at" => "2010-11-12T13:00:00Z", - "finished_at" => build.finished_at, - "job_ids" => build.cached_matrix_ids}, + "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}"}]}, "queue" => job.queue, "repository" => { "@type" => "repository", @@ -116,7 +151,7 @@ describe Travis::API::V3::Services::Job::Find do "ref" => commit.ref, "message" => commit.message, "compare_url" => commit.compare_url, - "committed_at" => "2010-11-12T12:55:00Z"}, + "committed_at" => "2010-11-12T11:50:00Z"}, "owner" => { "@type" => owner_type.to_s.downcase, "@href" => "/v3/#{owner_href}/#{owner.id}", diff --git a/spec/v3/services/organization/find_spec.rb b/spec/v3/services/organization/find_spec.rb index c0b2e3e4..216265f6 100644 --- a/spec/v3/services/organization/find_spec.rb +++ b/spec/v3/services/organization/find_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe Travis::API::V3::Services::Organization::Find do - let(:org) { Organization.new(login: 'example-org') } + let(:org) { Travis::API::V3::Models::Organization.new(login: 'example-org') } before { org.save! } after { org.delete } diff --git a/spec/v3/services/organizations/for_current_user_spec.rb b/spec/v3/services/organizations/for_current_user_spec.rb index 04e5dd0e..eb978cac 100644 --- a/spec/v3/services/organizations/for_current_user_spec.rb +++ b/spec/v3/services/organizations/for_current_user_spec.rb @@ -1,15 +1,15 @@ require 'spec_helper' describe Travis::API::V3::Services::Organizations::ForCurrentUser do - let(:repo) { Repository.by_slug('svenfuchs/minimal').first } + let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} - before { Permission.create(repository: repo, user: repo.owner, pull: true) } + before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true) } before { repo.update_attribute(:private, true) } after { repo.update_attribute(:private, false) } - let(:org) { Organization.new(login: 'example-org') } + let(:org) { Travis::API::V3::Models::Organization.new(login: 'example-org') } before { org.save! } before { org.memberships.create(user: repo.owner) } after { org.delete } diff --git a/spec/v3/services/owner/find_spec.rb b/spec/v3/services/owner/find_spec.rb index 61f253ce..2399d2c6 100644 --- a/spec/v3/services/owner/find_spec.rb +++ b/spec/v3/services/owner/find_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' describe Travis::API::V3::Services::Owner::Find do describe "organization" do - let(:org) { Organization.new(login: 'example-org') } + let(:org) { Travis::API::V3::Models::Organization.new(login: 'example-org') } before { org.save! } after { org.delete } @@ -23,7 +23,7 @@ describe Travis::API::V3::Services::Owner::Find do end describe 'eager loading repositories via organization.repositories' do - let(:repo) { Repository.new(name: 'example-repo', owner_name: 'example-org', owner_id: org.id, owner_type: 'Organization')} + let(:repo) { Travis::API::V3::Models::Repository.new(name: 'example-repo', owner_name: 'example-org', owner_id: org.id, owner_type: 'Organization')} before { repo.save! } after { repo.destroy } @@ -69,7 +69,7 @@ describe Travis::API::V3::Services::Owner::Find do end describe 'eager loading repositories via owner.repositories' do - let(:repo) { Repository.new(name: 'example-repo', owner_name: 'example-org', owner_id: org.id, owner_type: 'Organization')} + let(:repo) { Travis::API::V3::Models::Repository.new(name: 'example-repo', owner_name: 'example-org', owner_id: org.id, owner_type: 'Organization')} before { repo.save! } after { repo.destroy } @@ -131,7 +131,7 @@ describe Travis::API::V3::Services::Owner::Find do end describe "does not allow overriding org id" do - let(:other) { Organization.new(login: 'other-org') } + let(:other) { Travis::API::V3::Models::Organization.new(login: 'other-org') } before { other.save! } after { other.delete } @@ -157,7 +157,7 @@ describe Travis::API::V3::Services::Owner::Find do end describe "user" do - let(:user) { User.new(login: 'example-user') } + let(:user) { Travis::API::V3::Models::User.new(login: 'example-user') } before { user.save! } after { user.delete } @@ -198,7 +198,7 @@ describe Travis::API::V3::Services::Owner::Find do end describe "does not allow overriding user id" do - let(:other) { User.new(login: 'other-user') } + let(:other) { Travis::API::V3::Models::User.new(login: 'other-user') } before { other.save! } after { other.delete } diff --git a/spec/v3/services/owner/repositories_spec.rb b/spec/v3/services/owner/repositories_spec.rb index 107254f9..48c4673b 100644 --- a/spec/v3/services/owner/repositories_spec.rb +++ b/spec/v3/services/owner/repositories_spec.rb @@ -1,11 +1,13 @@ require 'spec_helper' describe Travis::API::V3::Services::Owner::Repositories do - let(:repo) { Repository.by_slug('svenfuchs/minimal').first } + let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } + let(:build) { repo.builds.first } + let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs } let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} - before { Permission.create(repository: repo, user: repo.owner, pull: true) } + before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true) } before { repo.update_attribute(:private, true) } after { repo.update_attribute(:private, false) } @@ -34,12 +36,12 @@ describe Travis::API::V3::Services::Owner::Repositories do "private" => true, "owner" => { "@type" => "user", - "@href" => "/v3/user/#{repo.owner_id}", "id" => repo.owner_id, - "login" => "svenfuchs" }, + "login" => "svenfuchs", + "@href" => "/v3/user/#{repo.owner_id}" }, "last_build" => { "@type" => "build", - "@href" => "/v3/build/#{repo.last_build_id}", + "@href" => "/v3/build/#{repo.last_build.id}", "id" => repo.last_build_id, "number" => "2", "state" => "passed", @@ -53,9 +55,9 @@ describe Travis::API::V3::Services::Owner::Repositories do "name" => "master", "last_build" => { "@type" => "build", - "@href" => "/v3/build/#{repo.last_build.id}", + "@href" => "/v3/build/#{repo.default_branch.last_build.id}", "@representation"=> "minimal", - "id" => repo.last_build.id, + "id" => repo.default_branch.last_build.id, "number" => "3", "state" => "configured", "duration" => nil, @@ -63,7 +65,28 @@ describe Travis::API::V3::Services::Owner::Repositories do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => repo.last_build.cached_matrix_ids}}}] + "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}] + + }}}] }} end diff --git a/spec/v3/services/repositories/for_current_user_spec.rb b/spec/v3/services/repositories/for_current_user_spec.rb index c89fec91..79138a7c 100644 --- a/spec/v3/services/repositories/for_current_user_spec.rb +++ b/spec/v3/services/repositories/for_current_user_spec.rb @@ -1,11 +1,13 @@ require 'spec_helper' describe Travis::API::V3::Services::Repositories::ForCurrentUser do - let(:repo) { Repository.by_slug('svenfuchs/minimal').first } + let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } + let(:build) { repo.builds.first } + let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs } let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} - before { Permission.create(repository: repo, user: repo.owner, pull: true, push: true) } + before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true, push: true) } before { repo.update_attribute(:private, true) } after { repo.update_attribute(:private, false) } @@ -53,9 +55,9 @@ describe Travis::API::V3::Services::Repositories::ForCurrentUser do "name" => "master", "last_build" => { "@type" => "build", - "@href" => "/v3/build/#{repo.last_build.id}", + "@href" => "/v3/build/#{repo.default_branch.last_build.id}", "@representation"=> "minimal", - "id" => repo.last_build.id, + "id" => repo.default_branch.last_build.id, "number" => "3", "state" => "configured", "duration" => nil, @@ -63,7 +65,27 @@ describe Travis::API::V3::Services::Repositories::ForCurrentUser do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => repo.last_build.cached_matrix_ids}}}] + "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}] + }}}] }} end diff --git a/spec/v3/services/repository/find_spec.rb b/spec/v3/services/repository/find_spec.rb index 8c48e252..9bc6b750 100644 --- a/spec/v3/services/repository/find_spec.rb +++ b/spec/v3/services/repository/find_spec.rb @@ -1,7 +1,9 @@ require 'spec_helper' describe Travis::API::V3::Services::Repository::Find do - let(:repo) { Repository.by_slug('svenfuchs/minimal').first } + let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } + let(:build) { repo.builds.first } + let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs } let(:parsed_body) { JSON.load(body) } describe "fetching a public repository by slug" do @@ -41,10 +43,10 @@ describe Travis::API::V3::Services::Repository::Find do "active" => true, "private" => false, "owner" => { - "@type" => "user", - "@href" => "/v3/user/#{repo.owner_id}", "id" => repo.owner_id, - "login" => "svenfuchs" }, + "login" => "svenfuchs", + "@type" => "user", + "@href" => "/v3/user/#{repo.owner_id}"}, "last_build" => { "@type" => "build", "@href" => "/v3/build/#{repo.last_build_id}", @@ -61,9 +63,9 @@ describe Travis::API::V3::Services::Repository::Find do "name" => "master", "last_build" => { "@type" => "build", - "@href" => "/v3/build/#{repo.last_build.id}", + "@href" => "/v3/build/#{repo.default_branch.last_build.id}", "@representation"=> "minimal", - "id" => repo.last_build.id, + "id" => repo.default_branch.last_build.id, "number" => "3", "state" => "configured", "duration" => nil, @@ -71,7 +73,27 @@ describe Travis::API::V3::Services::Repository::Find do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => repo.last_build.cached_matrix_ids}} + "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}] + }} }} end @@ -115,7 +137,7 @@ describe Travis::API::V3::Services::Repository::Find do describe "private repository, private API, authenticated as user with access" do let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} - before { Permission.create(repository: repo, user: repo.owner, pull: true) } + before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true) } before { repo.update_attribute(:private, true) } before { get("/v3/repo/#{repo.id}", {}, headers) } after { repo.update_attribute(:private, false) } @@ -137,10 +159,10 @@ describe Travis::API::V3::Services::Repository::Find do "active" => true, "private" => true, "owner" => { - "@type" => "user", - "@href" => "/v3/user/#{repo.owner_id}", "id" => repo.owner_id, - "login" => "svenfuchs" }, + "login" => "svenfuchs", + "@type" => "user", + "@href" => "/v3/user/#{repo.owner_id}"}, "last_build" => { "@type" => "build", "@href" => "/v3/build/#{repo.last_build_id}", @@ -157,9 +179,9 @@ describe Travis::API::V3::Services::Repository::Find do "name" => "master", "last_build" => { "@type" => "build", - "@href" => "/v3/build/#{repo.last_build.id}", + "@href" => "/v3/build/#{repo.default_branch.last_build.id}", "@representation"=> "minimal", - "id" => repo.last_build.id, + "id" => repo.default_branch.last_build.id, "number" => "3", "state" => "configured", "duration" => nil, @@ -167,7 +189,27 @@ describe Travis::API::V3::Services::Repository::Find do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => repo.last_build.cached_matrix_ids}} + "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}] + }} }} end @@ -218,10 +260,10 @@ describe Travis::API::V3::Services::Repository::Find do "active" => true, "private" => true, "owner" => { - "@type" => "user", - "@href" => "/v3/user/#{repo.owner_id}", "id" => repo.owner_id, - "login" => "svenfuchs" }, + "login" => "svenfuchs", + "@type" => "user", + "@href" => "/v3/user/#{repo.owner_id}"}, "last_build" => { "@type" => "build", "@href" => "/v3/build/#{repo.last_build_id}", @@ -238,9 +280,9 @@ describe Travis::API::V3::Services::Repository::Find do "name" => "master", "last_build" => { "@type" => "build", - "@href" => "/v3/build/#{repo.last_build.id}", + "@href" => "/v3/build/#{repo.default_branch.last_build.id}", "@representation"=> "minimal", - "id" => repo.last_build.id, + "id" => repo.default_branch.last_build.id, "number" => "3", "state" => "configured", "duration" => nil, @@ -248,7 +290,27 @@ describe Travis::API::V3::Services::Repository::Find do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => repo.last_build.cached_matrix_ids}} + "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}] + }} }} end @@ -305,10 +367,10 @@ describe Travis::API::V3::Services::Repository::Find do "active" => true, "private" => true, "owner" => { - "@type" => "user", - "@href" => "/v3/user/#{repo.owner_id}", "id" => repo.owner_id, - "login" => "svenfuchs" }, + "login" => "svenfuchs", + "@type" => "user", + "@href" => "/v3/user/#{repo.owner_id}"}, "last_build" => { "@type" => "build", "@href" => "/v3/build/#{repo.last_build_id}", @@ -325,9 +387,9 @@ describe Travis::API::V3::Services::Repository::Find do "name" => "master", "last_build" => { "@type" => "build", - "@href" => "/v3/build/#{repo.last_build.id}", + "@href" => "/v3/build/#{repo.default_branch.last_build.id}", "@representation"=> "minimal", - "id" => repo.last_build.id, + "id" => repo.default_branch.last_build.id, "number" => "3", "state" => "configured", "duration" => nil, @@ -335,7 +397,27 @@ describe Travis::API::V3::Services::Repository::Find do "previous_state" => "passed", "started_at" => "2010-11-12T13:00:00Z", "finished_at" => nil, - "job_ids" => repo.last_build.cached_matrix_ids}} + "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}] + }} }} end diff --git a/spec/v3/services/user/current_spec.rb b/spec/v3/services/user/current_spec.rb index ac6d38cc..4557ee2b 100644 --- a/spec/v3/services/user/current_spec.rb +++ b/spec/v3/services/user/current_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe Travis::API::V3::Services::User::Current do - let(:user) { User.find_by_login('svenfuchs') } + let(:user) { Travis::API::V3::Models::User.find_by_login('svenfuchs') } let(:token) { Travis::Api::App::AccessToken.create(user: user, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} diff --git a/spec/v3/services/user/find_spec.rb b/spec/v3/services/user/find_spec.rb index 1c0517ec..9155cb63 100644 --- a/spec/v3/services/user/find_spec.rb +++ b/spec/v3/services/user/find_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe Travis::API::V3::Services::User::Find do - let(:user) { User.find_by_login('svenfuchs') } + let(:user) { Travis::API::V3::Models::User.find_by_login('svenfuchs') } let(:token) { Travis::Api::App::AccessToken.create(user: user, app_id: 1) } let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }}