From cc4ef4da11d46761ab0ce4fbd6b032a7e01baba9 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Date: Wed, 9 Sep 2015 14:17:16 +0200 Subject: [PATCH] Refactor CI tests --- spec/ci/six.tar.gz | Bin 61937 -> 0 bytes .../ci/projects_controller_spec.rb | 18 ++--- spec/factories/ci/trigger_requests.rb | 4 +- spec/factories/ci/triggers.rb | 2 +- .../ci}/admin/builds_spec.rb | 0 .../ci}/admin/events_spec.rb | 0 .../ci}/admin/projects_spec.rb | 0 .../ci}/admin/runners_spec.rb | 0 .../features => features/ci}/builds_spec.rb | 0 .../features => features/ci}/commits_spec.rb | 0 .../features => features/ci}/events_spec.rb | 0 .../{ci/features => features/ci}/lint_spec.rb | 0 .../features => features/ci}/projects_spec.rb | 0 .../features => features/ci}/runners_spec.rb | 0 .../features => features/ci}/triggers_spec.rb | 0 .../ci}/variables_spec.rb | 0 .../ci}/application_helper_spec.rb | 2 +- .../ci}/runners_helper_spec.rb | 2 +- .../ci}/user_helper_spec.rb | 2 +- .../ci}/user_sessions_helper_spec.rb | 2 +- spec/{ci/lib => lib/ci}/ansi2html_spec.rb | 0 spec/{ci/lib => lib/ci}/charts_spec.rb | 0 .../ci}/gitlab_ci_yaml_processor_spec.rb | 0 spec/{ci/lib => lib/ci}/upgrader_spec.rb | 0 .../{ci/mailers => mailers/ci}/notify_spec.rb | 0 spec/{ci/models => models/ci}/build_spec.rb | 50 ++++++------- spec/{ci/models => models/ci}/commit_spec.rb | 70 +++++++++--------- .../models => models/ci}/mail_service_spec.rb | 40 +++++----- spec/{ci/models => models/ci}/network_spec.rb | 0 .../project_services/hip_chat_message_spec.rb | 10 +-- .../project_services/hip_chat_service_spec.rb | 2 +- .../project_services/slack_message_spec.rb | 6 +- .../project_services/slack_service_spec.rb | 2 +- spec/{ci/models => models/ci}/project_spec.rb | 0 .../ci}/runner_project_spec.rb | 2 +- spec/{ci/models => models/ci}/runner_spec.rb | 2 +- spec/{ci/models => models/ci}/service_spec.rb | 2 +- spec/{ci/models => models/ci}/trigger_spec.rb | 2 +- spec/{ci/models => models/ci}/user_spec.rb | 2 +- .../{ci/models => models/ci}/variable_spec.rb | 2 +- .../{ci/models => models/ci}/web_hook_spec.rb | 2 +- .../ci}/api/builds_spec.rb | 2 +- .../ci}/api/commits_spec.rb | 2 +- .../ci}/api/forks_spec.rb | 2 +- .../ci}/api/projects_spec.rb | 8 +- .../ci}/api/runners_spec.rb | 2 +- .../ci}/api/triggers_spec.rb | 2 +- .../requests => requests/ci}/builds_spec.rb | 0 .../requests => requests/ci}/commits_spec.rb | 0 .../ci}/create_commit_service_spec.rb | 0 .../ci}/create_project_service_spec.rb | 0 .../create_trigger_request_service_spec.rb | 0 .../ci}/event_service_spec.rb | 0 .../ci}/image_for_build_service_spec.rb | 0 .../ci}/register_build_service_spec.rb | 0 .../ci}/web_hook_service_spec.rb | 0 56 files changed, 122 insertions(+), 122 deletions(-) delete mode 100644 spec/ci/six.tar.gz rename spec/{ci/features => features/ci}/admin/builds_spec.rb (100%) rename spec/{ci/features => features/ci}/admin/events_spec.rb (100%) rename spec/{ci/features => features/ci}/admin/projects_spec.rb (100%) rename spec/{ci/features => features/ci}/admin/runners_spec.rb (100%) rename spec/{ci/features => features/ci}/builds_spec.rb (100%) rename spec/{ci/features => features/ci}/commits_spec.rb (100%) rename spec/{ci/features => features/ci}/events_spec.rb (100%) rename spec/{ci/features => features/ci}/lint_spec.rb (100%) rename spec/{ci/features => features/ci}/projects_spec.rb (100%) rename spec/{ci/features => features/ci}/runners_spec.rb (100%) rename spec/{ci/features => features/ci}/triggers_spec.rb (100%) rename spec/{ci/features => features/ci}/variables_spec.rb (100%) rename spec/{ci/helpers => helpers/ci}/application_helper_spec.rb (96%) rename spec/{ci/helpers => helpers/ci}/runners_helper_spec.rb (94%) rename spec/{ci/helpers => helpers/ci}/user_helper_spec.rb (98%) rename spec/{ci/helpers => helpers/ci}/user_sessions_helper_spec.rb (98%) rename spec/{ci/lib => lib/ci}/ansi2html_spec.rb (100%) rename spec/{ci/lib => lib/ci}/charts_spec.rb (100%) rename spec/{ci/lib => lib/ci}/gitlab_ci_yaml_processor_spec.rb (100%) rename spec/{ci/lib => lib/ci}/upgrader_spec.rb (100%) rename spec/{ci/mailers => mailers/ci}/notify_spec.rb (100%) rename spec/{ci/models => models/ci}/build_spec.rb (84%) rename spec/{ci/models => models/ci}/commit_spec.rb (72%) rename spec/{ci/models => models/ci}/mail_service_spec.rb (74%) rename spec/{ci/models => models/ci}/network_spec.rb (100%) rename spec/{ci/models => models/ci}/project_services/hip_chat_message_spec.rb (96%) rename spec/{ci/models => models/ci}/project_services/hip_chat_service_spec.rb (98%) rename spec/{ci/models => models/ci}/project_services/slack_message_spec.rb (97%) rename spec/{ci/models => models/ci}/project_services/slack_service_spec.rb (98%) rename spec/{ci/models => models/ci}/project_spec.rb (100%) rename spec/{ci/models => models/ci}/runner_project_spec.rb (91%) rename spec/{ci/models => models/ci}/runner_spec.rb (98%) rename spec/{ci/models => models/ci}/service_spec.rb (97%) rename spec/{ci/models => models/ci}/trigger_spec.rb (95%) rename spec/{ci/models => models/ci}/user_spec.rb (99%) rename spec/{ci/models => models/ci}/variable_spec.rb (97%) rename spec/{ci/models => models/ci}/web_hook_spec.rb (98%) rename spec/{ci/requests => requests/ci}/api/builds_spec.rb (99%) rename spec/{ci/requests => requests/ci}/api/commits_spec.rb (98%) rename spec/{ci/requests => requests/ci}/api/forks_spec.rb (98%) rename spec/{ci/requests => requests/ci}/api/projects_spec.rb (99%) rename spec/{ci/requests => requests/ci}/api/runners_spec.rb (98%) rename spec/{ci/requests => requests/ci}/api/triggers_spec.rb (99%) rename spec/{ci/requests => requests/ci}/builds_spec.rb (100%) rename spec/{ci/requests => requests/ci}/commits_spec.rb (100%) rename spec/{ci/services => services/ci}/create_commit_service_spec.rb (100%) rename spec/{ci/services => services/ci}/create_project_service_spec.rb (100%) rename spec/{ci/services => services/ci}/create_trigger_request_service_spec.rb (100%) rename spec/{ci/services => services/ci}/event_service_spec.rb (100%) rename spec/{ci/services => services/ci}/image_for_build_service_spec.rb (100%) rename spec/{ci/services => services/ci}/register_build_service_spec.rb (100%) rename spec/{ci/services => services/ci}/web_hook_service_spec.rb (100%) diff --git a/spec/ci/six.tar.gz b/spec/ci/six.tar.gz deleted file mode 100644 index 80a8c6644e4c9e187a5c8f54f6cf189c76e7b122..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61937 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\k;AQz)$p_Vghu&oBo@d{K^0O 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 diff --git a/spec/controllers/ci/projects_controller_spec.rb b/spec/controllers/ci/projects_controller_spec.rb index 0069a782511..9af766eff33 100644 --- a/spec/controllers/ci/projects_controller_spec.rb +++ b/spec/controllers/ci/projects_controller_spec.rb @@ -1,8 +1,8 @@ require "spec_helper" -describe ProjectsController do +describe Ci::ProjectsController do before do - @project = FactoryGirl.create :project + @project = FactoryGirl.create :ci_project end describe "POST #build" do @@ -55,25 +55,25 @@ describe ProjectsController do end let(:user) do - User.new(user_data) + Ci::User.new(user_data) end it "creates project" do allow(controller).to receive(:reset_cache) { true } allow(controller).to receive(:current_user) { user } - Network.any_instance.stub(:enable_ci).and_return(true) - Network.any_instance.stub(:project_hooks).and_return(true) + allow_any_instance_of(Ci::Network).to receive(:enable_ci).and_return(true) + allow_any_instance_of(Ci::Network).to receive(:project_hooks).and_return(true) post :create, { project: JSON.dump(project_dump.to_h) }.with_indifferent_access expect(response.code).to eq('302') - expect(assigns(:project)).not_to be_a_new(Project) + expect(assigns(:project)).not_to be_a_new(Ci::Project) end it "shows error" do allow(controller).to receive(:reset_cache) { true } allow(controller).to receive(:current_user) { user } - User.any_instance.stub(:can_manage_project?).and_return(false) + allow_any_instance_of(Ci::User).to receive(:can_manage_project?).and_return(false) post :create, { project: JSON.dump(project_dump.to_h) }.with_indifferent_access @@ -91,13 +91,13 @@ describe ProjectsController do end let(:user) do - User.new(user_data) + Ci::User.new(user_data) end it "searches projects" do allow(controller).to receive(:reset_cache) { true } allow(controller).to receive(:current_user) { user } - Network.any_instance.should_receive(:projects).with(hash_including(search: 'str'), :authorized) + allow_any_instance_of(Ci::Network).to receive(:projects).with(hash_including(search: 'str'), :authorized) xhr :get, :gitlab, { search: "str", format: "js" }.with_indifferent_access diff --git a/spec/factories/ci/trigger_requests.rb b/spec/factories/ci/trigger_requests.rb index c85d1027ce6..da8b7342fcf 100644 --- a/spec/factories/ci/trigger_requests.rb +++ b/spec/factories/ci/trigger_requests.rb @@ -1,8 +1,8 @@ # Read about factories at https://github.com/thoughtbot/factory_girl FactoryGirl.define do - factory :trigger_request do - factory :trigger_request_with_variables do + factory :ci_trigger_request do + factory :ci_trigger_request_with_variables do variables do { TRIGGER_KEY: 'TRIGGER_VALUE' diff --git a/spec/factories/ci/triggers.rb b/spec/factories/ci/triggers.rb index 38cd3cbceb6..fd3afdb1ec2 100644 --- a/spec/factories/ci/triggers.rb +++ b/spec/factories/ci/triggers.rb @@ -2,7 +2,7 @@ FactoryGirl.define do factory :ci_trigger_without_token, class: Ci::Trigger do - factory :trigger do + factory :ci_trigger do token 'token' end end diff --git a/spec/ci/features/admin/builds_spec.rb b/spec/features/ci/admin/builds_spec.rb similarity index 100% rename from spec/ci/features/admin/builds_spec.rb rename to spec/features/ci/admin/builds_spec.rb diff --git a/spec/ci/features/admin/events_spec.rb b/spec/features/ci/admin/events_spec.rb similarity index 100% rename from spec/ci/features/admin/events_spec.rb rename to spec/features/ci/admin/events_spec.rb diff --git a/spec/ci/features/admin/projects_spec.rb b/spec/features/ci/admin/projects_spec.rb similarity index 100% rename from spec/ci/features/admin/projects_spec.rb rename to spec/features/ci/admin/projects_spec.rb diff --git a/spec/ci/features/admin/runners_spec.rb b/spec/features/ci/admin/runners_spec.rb similarity index 100% rename from spec/ci/features/admin/runners_spec.rb rename to spec/features/ci/admin/runners_spec.rb diff --git a/spec/ci/features/builds_spec.rb b/spec/features/ci/builds_spec.rb similarity index 100% rename from spec/ci/features/builds_spec.rb rename to spec/features/ci/builds_spec.rb diff --git a/spec/ci/features/commits_spec.rb b/spec/features/ci/commits_spec.rb similarity index 100% rename from spec/ci/features/commits_spec.rb rename to spec/features/ci/commits_spec.rb diff --git a/spec/ci/features/events_spec.rb b/spec/features/ci/events_spec.rb similarity index 100% rename from spec/ci/features/events_spec.rb rename to spec/features/ci/events_spec.rb diff --git a/spec/ci/features/lint_spec.rb b/spec/features/ci/lint_spec.rb similarity index 100% rename from spec/ci/features/lint_spec.rb rename to spec/features/ci/lint_spec.rb diff --git a/spec/ci/features/projects_spec.rb b/spec/features/ci/projects_spec.rb similarity index 100% rename from spec/ci/features/projects_spec.rb rename to spec/features/ci/projects_spec.rb diff --git a/spec/ci/features/runners_spec.rb b/spec/features/ci/runners_spec.rb similarity index 100% rename from spec/ci/features/runners_spec.rb rename to spec/features/ci/runners_spec.rb diff --git a/spec/ci/features/triggers_spec.rb b/spec/features/ci/triggers_spec.rb similarity index 100% rename from spec/ci/features/triggers_spec.rb rename to spec/features/ci/triggers_spec.rb diff --git a/spec/ci/features/variables_spec.rb b/spec/features/ci/variables_spec.rb similarity index 100% rename from spec/ci/features/variables_spec.rb rename to spec/features/ci/variables_spec.rb diff --git a/spec/ci/helpers/application_helper_spec.rb b/spec/helpers/ci/application_helper_spec.rb similarity index 96% rename from spec/ci/helpers/application_helper_spec.rb rename to spec/helpers/ci/application_helper_spec.rb index c2b1058a8fa..478c0266770 100644 --- a/spec/ci/helpers/application_helper_spec.rb +++ b/spec/helpers/ci/application_helper_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe ApplicationHelper do +describe Ci::ApplicationHelper do describe "#duration_in_words" do it "returns minutes and seconds" do intervals_in_words = { diff --git a/spec/ci/helpers/runners_helper_spec.rb b/spec/helpers/ci/runners_helper_spec.rb similarity index 94% rename from spec/ci/helpers/runners_helper_spec.rb rename to spec/helpers/ci/runners_helper_spec.rb index 02d497b40d2..e7681df10bd 100644 --- a/spec/ci/helpers/runners_helper_spec.rb +++ b/spec/helpers/ci/runners_helper_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe RunnersHelper do +describe Ci::RunnersHelper do it "returns - not contacted yet" do runner = FactoryGirl.build :runner runner_status_icon(runner).should include("not connected yet") diff --git a/spec/ci/helpers/user_helper_spec.rb b/spec/helpers/ci/user_helper_spec.rb similarity index 98% rename from spec/ci/helpers/user_helper_spec.rb rename to spec/helpers/ci/user_helper_spec.rb index 7215dc41a85..f95bfb355ed 100644 --- a/spec/ci/helpers/user_helper_spec.rb +++ b/spec/helpers/ci/user_helper_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe UserHelper do +describe Ci::UserHelper do describe :user_avatar_url do let (:user) { User.new({'avatar_url' => avatar_url}) } diff --git a/spec/ci/helpers/user_sessions_helper_spec.rb b/spec/helpers/ci/user_sessions_helper_spec.rb similarity index 98% rename from spec/ci/helpers/user_sessions_helper_spec.rb rename to spec/helpers/ci/user_sessions_helper_spec.rb index a2ab1f1e023..5f654866d99 100644 --- a/spec/ci/helpers/user_sessions_helper_spec.rb +++ b/spec/helpers/ci/user_sessions_helper_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe UserSessionsHelper do +describe Ci::UserSessionsHelper do describe :generate_oauth_hmac do let (:salt) { 'a' } let (:salt2) { 'b' } diff --git a/spec/ci/lib/ansi2html_spec.rb b/spec/lib/ci/ansi2html_spec.rb similarity index 100% rename from spec/ci/lib/ansi2html_spec.rb rename to spec/lib/ci/ansi2html_spec.rb diff --git a/spec/ci/lib/charts_spec.rb b/spec/lib/ci/charts_spec.rb similarity index 100% rename from spec/ci/lib/charts_spec.rb rename to spec/lib/ci/charts_spec.rb diff --git a/spec/ci/lib/gitlab_ci_yaml_processor_spec.rb b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb similarity index 100% rename from spec/ci/lib/gitlab_ci_yaml_processor_spec.rb rename to spec/lib/ci/gitlab_ci_yaml_processor_spec.rb diff --git a/spec/ci/lib/upgrader_spec.rb b/spec/lib/ci/upgrader_spec.rb similarity index 100% rename from spec/ci/lib/upgrader_spec.rb rename to spec/lib/ci/upgrader_spec.rb diff --git a/spec/ci/mailers/notify_spec.rb b/spec/mailers/ci/notify_spec.rb similarity index 100% rename from spec/ci/mailers/notify_spec.rb rename to spec/mailers/ci/notify_spec.rb diff --git a/spec/ci/models/build_spec.rb b/spec/models/ci/build_spec.rb similarity index 84% rename from spec/ci/models/build_spec.rb rename to spec/models/ci/build_spec.rb index 733398176bf..d1e58438f7b 100644 --- a/spec/ci/models/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -25,10 +25,10 @@ require 'spec_helper' -describe Build do - let(:project) { FactoryGirl.create :project } - let(:commit) { FactoryGirl.create :commit, project: project } - let(:build) { FactoryGirl.create :build, commit: commit } +describe Ci::Build do + let(:project) { FactoryGirl.create :ci_project } + let(:commit) { FactoryGirl.create :ci_commit, project: project } + let(:build) { FactoryGirl.create :ci_build, commit: commit } it { should belong_to(:commit) } it { should validate_presence_of :status } @@ -40,12 +40,12 @@ describe Build do it { should respond_to :trace_html } describe :first_pending do - let(:first) { FactoryGirl.create :build, commit: commit, status: 'pending', created_at: Date.yesterday } - let(:second) { FactoryGirl.create :build, commit: commit, status: 'pending' } + let(:first) { FactoryGirl.create :ci_build, commit: commit, status: 'pending', created_at: Date.yesterday } + let(:second) { FactoryGirl.create :ci_build, commit: commit, status: 'pending' } before { first; second } - subject { Build.first_pending } + subject { Ci::Build.first_pending } - it { should be_a(Build) } + it { should be_a(Ci::Build) } it('returns with the first pending build') { should eq(first) } end @@ -54,12 +54,12 @@ describe Build do build.status = 'success' build.save end - let(:create_from_build) { Build.create_from build } + let(:create_from_build) { Ci::Build.create_from build } it ('there should be a pending task') do - expect(Build.pending.count(:all)).to eq 0 + expect(Ci::Build.pending.count(:all)).to eq 0 create_from_build - expect(Build.pending.count(:all)).to be > 0 + expect(Ci::Build.pending.count(:all)).to be > 0 end end @@ -69,14 +69,14 @@ describe Build do context 'without started_at' do before { build.started_at = nil } - it { should be_false } + it { should be_falsey } end %w(running success failed).each do |status| context "if build status is #{status}" do before { build.status = status } - it { should be_true } + it { should be_truthy } end end @@ -84,7 +84,7 @@ describe Build do context "if build status is #{status}" do before { build.status = status } - it { should be_false } + it { should be_falsey } end end end @@ -96,7 +96,7 @@ describe Build do context "if build.status is #{state}" do before { build.status = state } - it { should be_true } + it { should be_truthy } end end @@ -104,7 +104,7 @@ describe Build do context "if build.status is #{state}" do before { build.status = state } - it { should be_false } + it { should be_falsey } end end end @@ -116,7 +116,7 @@ describe Build do context "if build.status is #{state}" do before { build.status = state } - it { should be_true } + it { should be_truthy } end end @@ -124,7 +124,7 @@ describe Build do context "if build.status is #{state}" do before { build.status = state } - it { should be_false } + it { should be_falsey } end end end @@ -138,13 +138,13 @@ describe Build do context 'and build.status is success' do before { build.status = 'success' } - it { should be_false } + it { should be_falsey } end context 'and build.status is failed' do before { build.status = 'failed' } - it { should be_false } + it { should be_falsey } end end @@ -154,13 +154,13 @@ describe Build do context 'and build.status is success' do before { build.status = 'success' } - it { should be_false } + it { should be_falsey } end context 'and build.status is failed' do before { build.status = 'failed' } - it { should be_true } + it { should be_truthy } end end end @@ -324,14 +324,14 @@ describe Build do } before do - build.project.variables << Variable.new(key: 'SECRET_KEY', value: 'secret_value') + build.project.variables << Ci::Variable.new(key: 'SECRET_KEY', value: 'secret_value') end it { should eq(variables + secure_variables) } context 'and trigger variables' do - let(:trigger) { FactoryGirl.create :trigger, project: project } - let(:trigger_request) { FactoryGirl.create :trigger_request_with_variables, commit: commit, trigger: trigger } + let(:trigger) { FactoryGirl.create :ci_trigger, project: project } + let(:trigger_request) { FactoryGirl.create :ci_trigger_request_with_variables, commit: commit, trigger: trigger } let(:trigger_variables) { [ {key: :TRIGGER_KEY, value: 'TRIGGER_VALUE', public: false} diff --git a/spec/ci/models/commit_spec.rb b/spec/models/ci/commit_spec.rb similarity index 72% rename from spec/ci/models/commit_spec.rb rename to spec/models/ci/commit_spec.rb index 6f644d20aaf..6d5b0597e13 100644 --- a/spec/ci/models/commit_spec.rb +++ b/spec/models/ci/commit_spec.rb @@ -17,10 +17,10 @@ require 'spec_helper' -describe Commit do - let(:project) { FactoryGirl.create :project } - let(:commit) { FactoryGirl.create :commit, project: project } - let(:commit_with_project) { FactoryGirl.create :commit, project: project } +describe Ci::Commit do + let(:project) { FactoryGirl.create :ci_project } + let(:commit) { FactoryGirl.create :ci_commit, project: project } + let(:commit_with_project) { FactoryGirl.create :ci_commit, project: project } let(:config_processor) { GitlabCiYamlProcessor.new(gitlab_ci_yaml) } it { should belong_to(:project) } @@ -37,18 +37,18 @@ describe Commit do describe :last_build do subject { commit.last_build } before do - @first = FactoryGirl.create :build, commit: commit, created_at: Date.yesterday - @second = FactoryGirl.create :build, commit: commit + @first = FactoryGirl.create :ci_build, commit: commit, created_at: Date.yesterday + @second = FactoryGirl.create :ci_build, commit: commit end - it { should be_a(Build) } + it { should be_a(Ci::Build) } it('returns with the most recently created build') { should eq(@second) } end describe :retry do before do - @first = FactoryGirl.create :build, commit: commit, created_at: Date.yesterday - @second = FactoryGirl.create :build, commit: commit + @first = FactoryGirl.create :ci_build, commit: commit, created_at: Date.yesterday + @second = FactoryGirl.create :ci_build, commit: commit end it "creates new build" do @@ -62,38 +62,38 @@ describe Commit do context 'always sending notification' do it 'should return commit_pusher_email as only recipient when no additional recipients are given' do - project = FactoryGirl.create :project, + project = FactoryGirl.create :ci_project, email_add_pusher: true, email_recipients: '' - commit = FactoryGirl.create :commit, project: project + commit = FactoryGirl.create :ci_commit, project: project expected = 'commit_pusher_email' commit.stub(:push_data) { { user_email: expected } } commit.project_recipients.should == [expected] end it 'should return commit_pusher_email and additional recipients' do - project = FactoryGirl.create :project, + project = FactoryGirl.create :ci_project, email_add_pusher: true, email_recipients: 'rec1 rec2' - commit = FactoryGirl.create :commit, project: project + commit = FactoryGirl.create :ci_commit, project: project expected = 'commit_pusher_email' commit.stub(:push_data) { { user_email: expected } } commit.project_recipients.should == ['rec1', 'rec2', expected] end it 'should return recipients' do - project = FactoryGirl.create :project, + project = FactoryGirl.create :ci_project, email_add_pusher: false, email_recipients: 'rec1 rec2' - commit = FactoryGirl.create :commit, project: project + commit = FactoryGirl.create :ci_commit, project: project commit.project_recipients.should == ['rec1', 'rec2'] end it 'should return unique recipients only' do - project = FactoryGirl.create :project, + project = FactoryGirl.create :ci_project, email_add_pusher: true, email_recipients: 'rec1 rec1 rec2' - commit = FactoryGirl.create :commit, project: project + commit = FactoryGirl.create :ci_commit, project: project expected = 'rec2' commit.stub(:push_data) { { user_email: expected } } commit.project_recipients.should == ['rec1', 'rec2'] @@ -168,8 +168,8 @@ describe Commit do end context 'for build triggers' do - let(:trigger) { FactoryGirl.create :trigger, project: project } - let(:trigger_request) { FactoryGirl.create :trigger_request, commit: commit, trigger: trigger } + let(:trigger) { FactoryGirl.create :ci_trigger, project: project } + let(:trigger_request) { FactoryGirl.create :ci_trigger_request, commit: commit, trigger: trigger } it 'creates builds' do commit.create_builds(trigger_request).should be_true @@ -215,49 +215,49 @@ describe Commit do end describe "#finished_at" do - let(:project) { FactoryGirl.create :project } - let(:commit) { FactoryGirl.create :commit, project: project } + let(:project) { FactoryGirl.create :ci_project } + let(:commit) { FactoryGirl.create :ci_commit, project: project } it "returns finished_at of latest build" do - build = FactoryGirl.create :build, commit: commit, finished_at: Time.now - 60 - build1 = FactoryGirl.create :build, commit: commit, finished_at: Time.now - 120 + build = FactoryGirl.create :ci_build, commit: commit, finished_at: Time.now - 60 + build1 = FactoryGirl.create :ci_build, commit: commit, finished_at: Time.now - 120 commit.finished_at.to_i.should == build.finished_at.to_i end it "returns nil if there is no finished build" do - build = FactoryGirl.create :not_started_build, commit: commit + build = FactoryGirl.create :ci_not_started_build, commit: commit commit.finished_at.should be_nil end end describe "coverage" do - let(:project) { FactoryGirl.create :project, coverage_regex: "/.*/" } - let(:commit) { FactoryGirl.create :commit, project: project } + let(:project) { FactoryGirl.create :ci_project, coverage_regex: "/.*/" } + let(:commit) { FactoryGirl.create :ci_commit, project: project } it "calculates average when there are two builds with coverage" do - FactoryGirl.create :build, name: "rspec", coverage: 30, commit: commit - FactoryGirl.create :build, name: "rubocop", coverage: 40, commit: commit + FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit + FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit commit.coverage.should == "35.00" end it "calculates average when there are two builds with coverage and one with nil" do - FactoryGirl.create :build, name: "rspec", coverage: 30, commit: commit - FactoryGirl.create :build, name: "rubocop", coverage: 40, commit: commit - FactoryGirl.create :build, commit: commit + FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit + FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit + FactoryGirl.create :ci_build, commit: commit commit.coverage.should == "35.00" end it "calculates average when there are two builds with coverage and one is retried" do - FactoryGirl.create :build, name: "rspec", coverage: 30, commit: commit - FactoryGirl.create :build, name: "rubocop", coverage: 30, commit: commit - FactoryGirl.create :build, name: "rubocop", coverage: 40, commit: commit + FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit + FactoryGirl.create :ci_build, name: "rubocop", coverage: 30, commit: commit + FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit commit.coverage.should == "35.00" end it "calculates average when there is one build without coverage" do - FactoryGirl.create :build, commit: commit + FactoryGirl.create :ci_build, commit: commit commit.coverage.should be_nil end end diff --git a/spec/ci/models/mail_service_spec.rb b/spec/models/ci/mail_service_spec.rb similarity index 74% rename from spec/ci/models/mail_service_spec.rb rename to spec/models/ci/mail_service_spec.rb index d66a6591f8f..4830d98bdf8 100644 --- a/spec/ci/models/mail_service_spec.rb +++ b/spec/models/ci/mail_service_spec.rb @@ -14,7 +14,7 @@ require 'spec_helper' -describe MailService do +describe Ci::MailService do describe "Associations" do it { should belong_to :project } end @@ -28,12 +28,12 @@ describe MailService do end describe 'Sends email for' do - let(:mail) { MailService.new } + let(:mail) { Ci::MailService.new } describe 'failed build' do - let(:project) { FactoryGirl.create(:project, email_add_pusher: true) } - let(:commit) { FactoryGirl.create(:commit, project: project) } - let(:build) { FactoryGirl.create(:build, status: :failed, commit: commit) } + let(:project) { FactoryGirl.create(:ci_project, email_add_pusher: true) } + let(:commit) { FactoryGirl.create(:ci_commit, project: project) } + let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit) } before do mail.stub( @@ -53,9 +53,9 @@ describe MailService do end describe 'successfull build' do - let(:project) { FactoryGirl.create(:project, email_add_pusher: true, email_only_broken_builds: false) } - let(:commit) { FactoryGirl.create(:commit, project: project) } - let(:build) { FactoryGirl.create(:build, status: :success, commit: commit) } + let(:project) { FactoryGirl.create(:ci_project, email_add_pusher: true, email_only_broken_builds: false) } + let(:commit) { FactoryGirl.create(:ci_commit, project: project) } + let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } before do mail.stub( @@ -76,13 +76,13 @@ describe MailService do describe 'successfull build and project has email_recipients' do let(:project) { - FactoryGirl.create(:project, + FactoryGirl.create(:ci_project, email_add_pusher: true, email_only_broken_builds: false, email_recipients: "jeroen@example.com") } - let(:commit) { FactoryGirl.create(:commit, project: project) } - let(:build) { FactoryGirl.create(:build, status: :success, commit: commit) } + let(:commit) { FactoryGirl.create(:ci_commit, project: project) } + let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } before do mail.stub( @@ -104,13 +104,13 @@ describe MailService do describe 'successful build and notify only broken builds' do let(:project) { - FactoryGirl.create(:project, + FactoryGirl.create(:ci_project, email_add_pusher: true, email_only_broken_builds: true, email_recipients: "jeroen@example.com") } - let(:commit) { FactoryGirl.create(:commit, project: project) } - let(:build) { FactoryGirl.create(:build, status: :success, commit: commit) } + let(:commit) { FactoryGirl.create(:ci_commit, project: project) } + let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } before do mail.stub( @@ -132,13 +132,13 @@ describe MailService do describe 'successful build and can test service' do let(:project) { - FactoryGirl.create(:project, + FactoryGirl.create(:ci_project, email_add_pusher: true, email_only_broken_builds: false, email_recipients: "jeroen@example.com") } - let(:commit) { FactoryGirl.create(:commit, project: project) } - let(:build) { FactoryGirl.create(:build, status: :success, commit: commit) } + let(:commit) { FactoryGirl.create(:ci_commit, project: project) } + let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } before do mail.stub( @@ -154,13 +154,13 @@ describe MailService do describe 'retried build should not receive email' do let(:project) { - FactoryGirl.create(:project, + FactoryGirl.create(:ci_project, email_add_pusher: true, email_only_broken_builds: true, email_recipients: "jeroen@example.com") } - let(:commit) { FactoryGirl.create(:commit, project: project) } - let(:build) { FactoryGirl.create(:build, status: :failed, commit: commit) } + let(:commit) { FactoryGirl.create(:ci_commit, project: project) } + let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit) } before do mail.stub( diff --git a/spec/ci/models/network_spec.rb b/spec/models/ci/network_spec.rb similarity index 100% rename from spec/ci/models/network_spec.rb rename to spec/models/ci/network_spec.rb diff --git a/spec/ci/models/project_services/hip_chat_message_spec.rb b/spec/models/ci/project_services/hip_chat_message_spec.rb similarity index 96% rename from spec/ci/models/project_services/hip_chat_message_spec.rb rename to spec/models/ci/project_services/hip_chat_message_spec.rb index f1ad875ebcf..3571cb94793 100644 --- a/spec/ci/models/project_services/hip_chat_message_spec.rb +++ b/spec/models/ci/project_services/hip_chat_message_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe HipChatMessage do +describe Ci::HipChatMessage do subject { HipChatMessage.new(build) } let(:project) { FactoryGirl.create(:project) } @@ -8,7 +8,7 @@ describe HipChatMessage do context "One build" do let(:commit) { FactoryGirl.create(:commit_with_one_job, project: project) } - let(:build) do + let(:build) do commit.create_builds commit.builds.first end @@ -16,7 +16,7 @@ describe HipChatMessage do context 'when build succeeds' do it 'returns a successful message' do build.update(status: "success") - + expect( subject.status_color ).to eq 'green' expect( subject.notify? ).to be_false expect( subject.to_s ).to match(/Build '[^']+' #\d+/) @@ -39,7 +39,7 @@ describe HipChatMessage do context "Several builds" do let(:commit) { FactoryGirl.create(:commit_with_two_jobs, project: project) } - let(:build) do + let(:build) do commit.builds.first end @@ -63,7 +63,7 @@ describe HipChatMessage do second_build = commit.builds.last first_build.update(status: "success") second_build.update(status: "failed") - + expect( subject.status_color ).to eq 'red' expect( subject.notify? ).to be_true expect( subject.to_s ).to match(/Commit #\d+/) diff --git a/spec/ci/models/project_services/hip_chat_service_spec.rb b/spec/models/ci/project_services/hip_chat_service_spec.rb similarity index 98% rename from spec/ci/models/project_services/hip_chat_service_spec.rb rename to spec/models/ci/project_services/hip_chat_service_spec.rb index 37ce4905af8..71dba8fc358 100644 --- a/spec/ci/models/project_services/hip_chat_service_spec.rb +++ b/spec/models/ci/project_services/hip_chat_service_spec.rb @@ -15,7 +15,7 @@ require 'spec_helper' -describe HipChatService do +describe Ci::HipChatService do describe "Validations" do diff --git a/spec/ci/models/project_services/slack_message_spec.rb b/spec/models/ci/project_services/slack_message_spec.rb similarity index 97% rename from spec/ci/models/project_services/slack_message_spec.rb rename to spec/models/ci/project_services/slack_message_spec.rb index 88e0f373206..4a7284fe460 100644 --- a/spec/ci/models/project_services/slack_message_spec.rb +++ b/spec/models/ci/project_services/slack_message_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe SlackMessage do +describe Ci::SlackMessage do subject { SlackMessage.new(commit) } let(:project) { FactoryGirl.create :project } @@ -8,7 +8,7 @@ describe SlackMessage do context "One build" do let(:commit) { FactoryGirl.create(:commit_with_one_job, project: project) } - let(:build) do + let(:build) do commit.create_builds commit.builds.first end @@ -70,7 +70,7 @@ describe SlackMessage do second_build = commit.builds.last first_build.update(status: "success") second_build.update(status: "failed") - + subject.color.should == color subject.fallback.should include('Commit') subject.fallback.should include("\##{commit.id}") diff --git a/spec/ci/models/project_services/slack_service_spec.rb b/spec/models/ci/project_services/slack_service_spec.rb similarity index 98% rename from spec/ci/models/project_services/slack_service_spec.rb rename to spec/models/ci/project_services/slack_service_spec.rb index e1c14281274..952349a9def 100644 --- a/spec/ci/models/project_services/slack_service_spec.rb +++ b/spec/models/ci/project_services/slack_service_spec.rb @@ -14,7 +14,7 @@ require 'spec_helper' -describe SlackService do +describe Ci::SlackService do describe "Associations" do it { should belong_to :project } end diff --git a/spec/ci/models/project_spec.rb b/spec/models/ci/project_spec.rb similarity index 100% rename from spec/ci/models/project_spec.rb rename to spec/models/ci/project_spec.rb diff --git a/spec/ci/models/runner_project_spec.rb b/spec/models/ci/runner_project_spec.rb similarity index 91% rename from spec/ci/models/runner_project_spec.rb rename to spec/models/ci/runner_project_spec.rb index cbefb24705a..0218d484130 100644 --- a/spec/ci/models/runner_project_spec.rb +++ b/spec/models/ci/runner_project_spec.rb @@ -11,6 +11,6 @@ require 'spec_helper' -describe RunnerProject do +describe Ci::RunnerProject do pending "add some examples to (or delete) #{__FILE__}" end diff --git a/spec/ci/models/runner_spec.rb b/spec/models/ci/runner_spec.rb similarity index 98% rename from spec/ci/models/runner_spec.rb rename to spec/models/ci/runner_spec.rb index 6902c0a94e6..8677d86aa02 100644 --- a/spec/ci/models/runner_spec.rb +++ b/spec/models/ci/runner_spec.rb @@ -19,7 +19,7 @@ require 'spec_helper' -describe Runner do +describe Ci::Runner do describe '#display_name' do it 'should return the description if it has a value' do runner = FactoryGirl.build(:runner, description: 'Linux/Ruby-1.9.3-p448') diff --git a/spec/ci/models/service_spec.rb b/spec/models/ci/service_spec.rb similarity index 97% rename from spec/ci/models/service_spec.rb rename to spec/models/ci/service_spec.rb index 22a49e10a6c..5a90229ec43 100644 --- a/spec/ci/models/service_spec.rb +++ b/spec/models/ci/service_spec.rb @@ -14,7 +14,7 @@ require 'spec_helper' -describe Service do +describe Ci::Service do describe "Associations" do it { should belong_to :project } diff --git a/spec/ci/models/trigger_spec.rb b/spec/models/ci/trigger_spec.rb similarity index 95% rename from spec/ci/models/trigger_spec.rb rename to spec/models/ci/trigger_spec.rb index bba638e7817..7c928f9d9dc 100644 --- a/spec/ci/models/trigger_spec.rb +++ b/spec/models/ci/trigger_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Trigger do +describe Ci::Trigger do let(:project) { FactoryGirl.create :project } describe 'before_validation' do diff --git a/spec/ci/models/user_spec.rb b/spec/models/ci/user_spec.rb similarity index 99% rename from spec/ci/models/user_spec.rb rename to spec/models/ci/user_spec.rb index 73a7a7d5fbc..d1b87988b74 100644 --- a/spec/ci/models/user_spec.rb +++ b/spec/models/ci/user_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe User do +describe Ci::User do describe "has_developer_access?" do before do diff --git a/spec/ci/models/variable_spec.rb b/spec/models/ci/variable_spec.rb similarity index 97% rename from spec/ci/models/variable_spec.rb rename to spec/models/ci/variable_spec.rb index 4575115ccfb..447512bf6df 100644 --- a/spec/ci/models/variable_spec.rb +++ b/spec/models/ci/variable_spec.rb @@ -13,7 +13,7 @@ require 'spec_helper' -describe Variable do +describe Ci::Variable do subject { Variable.new } let(:secret_value) { 'secret' } diff --git a/spec/ci/models/web_hook_spec.rb b/spec/models/ci/web_hook_spec.rb similarity index 98% rename from spec/ci/models/web_hook_spec.rb rename to spec/models/ci/web_hook_spec.rb index 0f0f175a7a3..4211576ce5e 100644 --- a/spec/ci/models/web_hook_spec.rb +++ b/spec/models/ci/web_hook_spec.rb @@ -11,7 +11,7 @@ require 'spec_helper' -describe WebHook do +describe Ci::WebHook do describe "Associations" do it { should belong_to :project } end diff --git a/spec/ci/requests/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb similarity index 99% rename from spec/ci/requests/api/builds_spec.rb rename to spec/requests/ci/api/builds_spec.rb index be55e9ff479..7da212da83a 100644 --- a/spec/ci/requests/api/builds_spec.rb +++ b/spec/requests/ci/api/builds_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe API::API do +describe Ci::API::API do include ApiHelpers let(:runner) { FactoryGirl.create(:runner, tag_list: ["mysql", "ruby"]) } diff --git a/spec/ci/requests/api/commits_spec.rb b/spec/requests/ci/api/commits_spec.rb similarity index 98% rename from spec/ci/requests/api/commits_spec.rb rename to spec/requests/ci/api/commits_spec.rb index 190df70c1a5..99021dd681d 100644 --- a/spec/ci/requests/api/commits_spec.rb +++ b/spec/requests/ci/api/commits_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe API::API, 'Commits' do +describe Ci::API::API, 'Commits' do include ApiHelpers let(:project) { FactoryGirl.create(:project) } diff --git a/spec/ci/requests/api/forks_spec.rb b/spec/requests/ci/api/forks_spec.rb similarity index 98% rename from spec/ci/requests/api/forks_spec.rb rename to spec/requests/ci/api/forks_spec.rb index af523421c65..74efc0c30be 100644 --- a/spec/ci/requests/api/forks_spec.rb +++ b/spec/requests/ci/api/forks_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe API::API do +describe Ci::API::API do include ApiHelpers let(:project) { FactoryGirl.create(:project) } diff --git a/spec/ci/requests/api/projects_spec.rb b/spec/requests/ci/api/projects_spec.rb similarity index 99% rename from spec/ci/requests/api/projects_spec.rb rename to spec/requests/ci/api/projects_spec.rb index 014a9efc617..65cfc909b48 100644 --- a/spec/ci/requests/api/projects_spec.rb +++ b/spec/requests/ci/api/projects_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe API::API do +describe Ci::API::API do include ApiHelpers let(:gitlab_url) { GitlabCi.config.gitlab_server.url } @@ -12,11 +12,11 @@ describe API::API do url: gitlab_url } } - + before { stub_gitlab_calls } - + context "requests for scoped projects" do # NOTE: These ids are tied to the actual projects on demo.gitlab.com describe "GET /projects" do @@ -45,7 +45,7 @@ describe API::API do end end end - + describe "POST /projects/:project_id/webhooks" do let!(:project) { FactoryGirl.create(:project) } diff --git a/spec/ci/requests/api/runners_spec.rb b/spec/requests/ci/api/runners_spec.rb similarity index 98% rename from spec/ci/requests/api/runners_spec.rb rename to spec/requests/ci/api/runners_spec.rb index 47de3c2a95c..3faebd40bae 100644 --- a/spec/ci/requests/api/runners_spec.rb +++ b/spec/requests/ci/api/runners_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe API::API do +describe Ci::API::API do include ApiHelpers include StubGitlabCalls diff --git a/spec/ci/requests/api/triggers_spec.rb b/spec/requests/ci/api/triggers_spec.rb similarity index 99% rename from spec/ci/requests/api/triggers_spec.rb rename to spec/requests/ci/api/triggers_spec.rb index 6e56c4b3b22..5da40a69991 100644 --- a/spec/ci/requests/api/triggers_spec.rb +++ b/spec/requests/ci/api/triggers_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe API::API do +describe Ci::API::API do include ApiHelpers describe 'POST /projects/:project_id/refs/:ref/trigger' do diff --git a/spec/ci/requests/builds_spec.rb b/spec/requests/ci/builds_spec.rb similarity index 100% rename from spec/ci/requests/builds_spec.rb rename to spec/requests/ci/builds_spec.rb diff --git a/spec/ci/requests/commits_spec.rb b/spec/requests/ci/commits_spec.rb similarity index 100% rename from spec/ci/requests/commits_spec.rb rename to spec/requests/ci/commits_spec.rb diff --git a/spec/ci/services/create_commit_service_spec.rb b/spec/services/ci/create_commit_service_spec.rb similarity index 100% rename from spec/ci/services/create_commit_service_spec.rb rename to spec/services/ci/create_commit_service_spec.rb diff --git a/spec/ci/services/create_project_service_spec.rb b/spec/services/ci/create_project_service_spec.rb similarity index 100% rename from spec/ci/services/create_project_service_spec.rb rename to spec/services/ci/create_project_service_spec.rb diff --git a/spec/ci/services/create_trigger_request_service_spec.rb b/spec/services/ci/create_trigger_request_service_spec.rb similarity index 100% rename from spec/ci/services/create_trigger_request_service_spec.rb rename to spec/services/ci/create_trigger_request_service_spec.rb diff --git a/spec/ci/services/event_service_spec.rb b/spec/services/ci/event_service_spec.rb similarity index 100% rename from spec/ci/services/event_service_spec.rb rename to spec/services/ci/event_service_spec.rb diff --git a/spec/ci/services/image_for_build_service_spec.rb b/spec/services/ci/image_for_build_service_spec.rb similarity index 100% rename from spec/ci/services/image_for_build_service_spec.rb rename to spec/services/ci/image_for_build_service_spec.rb diff --git a/spec/ci/services/register_build_service_spec.rb b/spec/services/ci/register_build_service_spec.rb similarity index 100% rename from spec/ci/services/register_build_service_spec.rb rename to spec/services/ci/register_build_service_spec.rb diff --git a/spec/ci/services/web_hook_service_spec.rb b/spec/services/ci/web_hook_service_spec.rb similarity index 100% rename from spec/ci/services/web_hook_service_spec.rb rename to spec/services/ci/web_hook_service_spec.rb -- GitLab