summaryrefslogtreecommitdiff
path: root/spec/services
diff options
context:
space:
mode:
authorKestred <kestred@riotcave.com>2014-08-23 22:27:52 -0700
committerKestred <kestred@riotcave.com>2014-08-23 22:27:52 -0700
commit18f954b31c242822b6c7430a50ca99a93adc6ea6 (patch)
treeb7ee4acac738d5b64b6fcfaf909756f784dd2d61 /spec/services
parent2eb3d91e1a6e51d3ca0be2fe0a5df750708b366d (diff)
downloadgitlab-ci-18f954b31c242822b6c7430a50ca99a93adc6ea6.tar.gz
Separate Commit model and logic from Build model|etc...
This is an entirely non-user facing change which prepares GitLab CI for future support of Parallel Builds. See https://about.gitlab.com/2013/12/19/gitlab-ci-with-parallel-builds-and-deployments/. These changes specifically avoid changing the supported API or changing any of the website views. Changes to the website views will come in tandem with future features like "Multiple build scripts". The supported API won't change as part of any future changes on this vein, to maintain support for the unofficial GitLab CI runners. This closes the following implementation step: 1. A commit has many builds Signed-off-by: Kestred <kestred@riotcave.com>
Diffstat (limited to 'spec/services')
-rw-r--r--spec/services/create_commit_service_spec.rb25
-rw-r--r--spec/services/image_for_build_service_spec.rb3
-rw-r--r--spec/services/notification_service_spec.rb21
-rw-r--r--spec/services/web_hook_service_spec.rb3
4 files changed, 41 insertions, 11 deletions
diff --git a/spec/services/create_commit_service_spec.rb b/spec/services/create_commit_service_spec.rb
new file mode 100644
index 0000000..bb2d2d9
--- /dev/null
+++ b/spec/services/create_commit_service_spec.rb
@@ -0,0 +1,25 @@
+require 'spec_helper'
+
+describe CreateCommitService do
+ let(:service) { CreateCommitService.new }
+ let(:project) { FactoryGirl.create(:project) }
+
+ describe :execute do
+ context 'valid params' do
+ let(:commit) { service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312') }
+
+ it { commit.should be_kind_of(Commit) }
+ it { commit.should be_valid }
+ it { commit.should be_persisted }
+ it { commit.should == project.commits.last }
+ end
+
+ context 'without params' do
+ let(:commit) { service.execute(project, {}) }
+
+ it { commit.should be_kind_of(Commit) }
+ it { commit.should_not be_valid }
+ it { commit.should_not be_persisted }
+ end
+ end
+end
diff --git a/spec/services/image_for_build_service_spec.rb b/spec/services/image_for_build_service_spec.rb
index 2a65c48..2c9da1f 100644
--- a/spec/services/image_for_build_service_spec.rb
+++ b/spec/services/image_for_build_service_spec.rb
@@ -3,7 +3,8 @@ require 'spec_helper'
describe ImageForBuildService do
let(:service) { ImageForBuildService.new }
let(:project) { FactoryGirl.create(:project) }
- let(:build) { FactoryGirl.create(:build, project: project, ref: 'master') }
+ let(:commit) { FactoryGirl.create(:commit, project: project, ref: 'master') }
+ let(:build) { FactoryGirl.create(:build, commit: commit) }
describe :execute do
before { build }
diff --git a/spec/services/notification_service_spec.rb b/spec/services/notification_service_spec.rb
index fff9c87..413523c 100644
--- a/spec/services/notification_service_spec.rb
+++ b/spec/services/notification_service_spec.rb
@@ -6,11 +6,12 @@ describe NotificationService do
describe 'Builds' do
describe 'failed build' do
- let(:project) { FactoryGirl.create(:project)}
- let(:build) { FactoryGirl.create(:build, :status => :failed, :project => project) }
+ let(:project) { FactoryGirl.create(:project) }
+ let(:commit) { FactoryGirl.create(:commit, project: project) }
+ let(:build) { FactoryGirl.create(:build, status: :failed, commit: commit) }
it do
- should_email(build.git_author_email)
+ should_email(commit.git_author_email)
notification.build_ended(build)
end
@@ -21,10 +22,11 @@ describe NotificationService do
end
describe 'successfull build' do
- let(:project) { FactoryGirl.create(:project)}
- let(:build) { FactoryGirl.create(:build, :status => :success, :project => project) }
+ let(:project) { FactoryGirl.create(:project) }
+ let(:commit) { FactoryGirl.create(:commit, project: project) }
+ let(:build) { FactoryGirl.create(:build, status: :success, commit: commit) }
it do
- should_email(build.git_author_email)
+ should_email(commit.git_author_email)
notification.build_ended(build)
end
@@ -35,11 +37,12 @@ describe NotificationService do
end
describe 'successfull build and project has email_recipients' do
- let(:project) { FactoryGirl.create(:project, :email_recipients => "jeroen@example.com")}
- let(:build) { FactoryGirl.create(:build, :status => :success, :project => project) }
+ let(:project) { FactoryGirl.create(:project, email_recipients: "jeroen@example.com") }
+ let(:commit) { FactoryGirl.create(:commit, project: project) }
+ let(:build) { FactoryGirl.create(:build, status: :success, commit: commit) }
it do
- should_email(build.git_author_email)
+ should_email(commit.git_author_email)
should_email("jeroen@example.com")
notification.build_ended(build)
end
diff --git a/spec/services/web_hook_service_spec.rb b/spec/services/web_hook_service_spec.rb
index 699c126..bc63fd8 100644
--- a/spec/services/web_hook_service_spec.rb
+++ b/spec/services/web_hook_service_spec.rb
@@ -2,7 +2,8 @@ require 'spec_helper'
describe WebHookService do
let (:project) { FactoryGirl.create :project }
- let (:build) { FactoryGirl.create :build, project: project }
+ let (:commit) { FactoryGirl.create :commit, project: project }
+ let (:build) { FactoryGirl.create :build, commit: commit }
let (:hook) { FactoryGirl.create :web_hook, project: project }
describe :execute do