Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-06-02 13:16:11 +0300
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-06-02 13:16:11 +0300
commitfe0b2f81c7c9680a11288e0cdffc3e80dc1e8d58 (patch)
treefd19bea3c1118cb7438f0d2476bad322ccb5c421 /spec/lib/gitlab/ci
parentaa0d6b07b6a87459e75c69111643b9d6fe8a97c2 (diff)
Refine implementation of pipeline stage seeds
Diffstat (limited to 'spec/lib/gitlab/ci')
-rw-r--r--spec/lib/gitlab/ci/stage/seed_spec.rb54
-rw-r--r--spec/lib/gitlab/ci/stage/seeds_spec.rb66
2 files changed, 54 insertions, 66 deletions
diff --git a/spec/lib/gitlab/ci/stage/seed_spec.rb b/spec/lib/gitlab/ci/stage/seed_spec.rb
new file mode 100644
index 00000000000..15bcce04447
--- /dev/null
+++ b/spec/lib/gitlab/ci/stage/seed_spec.rb
@@ -0,0 +1,54 @@
+require 'spec_helper'
+
+describe Gitlab::Ci::Stage::Seed do
+ let(:pipeline) { create(:ci_empty_pipeline) }
+
+ let(:builds) do
+ [{ name: 'rspec' }, { name: 'spinach' }]
+ end
+
+ subject do
+ described_class.new(pipeline, 'test', builds)
+ end
+
+ describe '#stage' do
+ it 'returns hash attributes of a stage' do
+ expect(subject.stage).to be_a Hash
+ expect(subject.stage).to include(:name, :project)
+ end
+ end
+
+ describe '#builds' do
+ it 'returns hash attributes of all builds' do
+ expect(subject.builds.size).to eq 2
+ expect(subject.builds).to all(include(pipeline: pipeline))
+ expect(subject.builds).to all(include(project: pipeline.project))
+ expect(subject.builds).to all(include(ref: 'master'))
+ expect(subject.builds).to all(include(tag: false))
+ expect(subject.builds)
+ .to all(include(trigger_request: pipeline.trigger_requests.first))
+ end
+ end
+
+ describe '#user=' do
+ let(:user) { create(:user) }
+
+ it 'assignes relevant pipeline attributes' do
+ subject.user = user
+
+ expect(subject.builds).to all(include(user: user))
+ end
+ end
+
+ describe '#create!' do
+ it 'creates all stages and builds' do
+ subject.create!
+
+ expect(pipeline.reload.stages.count).to eq 1
+ expect(pipeline.reload.builds.count).to eq 2
+ expect(pipeline.builds).to all(satisfy { |job| job.stage_id.present? })
+ expect(pipeline.builds).to all(satisfy { |job| job.pipeline.present? })
+ expect(pipeline.builds).to all(satisfy { |job| job.project.present? })
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/stage/seeds_spec.rb b/spec/lib/gitlab/ci/stage/seeds_spec.rb
deleted file mode 100644
index 3824a868fb2..00000000000
--- a/spec/lib/gitlab/ci/stage/seeds_spec.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'spec_helper'
-
-describe Gitlab::Ci::Stage::Seeds do
- before do
- subject.append_stage('test', [{ name: 'rspec' }, { name: 'spinach' }])
- subject.append_stage('deploy', [{ name: 'prod', script: 'cap deploy' }])
- end
-
- describe '#has_stages?' do
- it { is_expected.to have_stages }
- end
-
- describe '#stages' do
- it 'returns hashes of all stages' do
- expect(subject.stages.size).to eq 2
- expect(subject.stages).to all(be_a Hash)
- end
- end
-
- describe '#jobs' do
- it 'returns all jobs in all stages' do
- expect(subject.jobs.size).to eq 3
- end
- end
-
- describe '#pipeline=' do
- let(:pipeline) do
- create(:ci_empty_pipeline, ref: 'feature', tag: true)
- end
-
- it 'assignes relevant pipeline attributes' do
- trigger_request = pipeline.trigger_requests.first
-
- subject.pipeline = pipeline
-
- expect(subject.stages).to all(include(pipeline: pipeline))
- expect(subject.stages).to all(include(project: pipeline.project))
- expect(subject.jobs).to all(include(pipeline: pipeline))
- expect(subject.jobs).to all(include(project: pipeline.project))
- expect(subject.jobs).to all(include(ref: 'feature'))
- expect(subject.jobs).to all(include(tag: true))
- expect(subject.jobs).to all(include(trigger_request: trigger_request))
- end
- end
-
- describe '#user=' do
- let(:user) { create(:user) }
-
- it 'assignes relevant pipeline attributes' do
- subject.user = user
-
- expect(subject.jobs).to all(include(user: user))
- end
- end
-
- describe '#to_attributes' do
- it 'exposes stage attributes with nested jobs' do
- attributes = [{ name: 'test', builds_attributes:
- [{ name: 'rspec' }, { name: 'spinach' }] },
- { name: 'deploy', builds_attributes:
- [{ name: 'prod', script: 'cap deploy' }] }]
-
- expect(subject.to_attributes).to eq attributes
- end
- end
-end