diff options
author | Kestred <kestred@riotcave.com> | 2014-08-23 22:27:52 -0700 |
---|---|---|
committer | Kestred <kestred@riotcave.com> | 2014-08-23 22:27:52 -0700 |
commit | 18f954b31c242822b6c7430a50ca99a93adc6ea6 (patch) | |
tree | b7ee4acac738d5b64b6fcfaf909756f784dd2d61 /spec/services | |
parent | 2eb3d91e1a6e51d3ca0be2fe0a5df750708b366d (diff) | |
download | gitlab-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.rb | 25 | ||||
-rw-r--r-- | spec/services/image_for_build_service_spec.rb | 3 | ||||
-rw-r--r-- | spec/services/notification_service_spec.rb | 21 | ||||
-rw-r--r-- | spec/services/web_hook_service_spec.rb | 3 |
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 |