diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2017-06-01 22:52:01 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2017-06-01 22:52:01 +0800 |
commit | 7193108c9314a50287184f4d2b21d0f8ec12f65f (patch) | |
tree | bb889473590928604a5e3a598d0159f424c18859 /spec/models/ci | |
parent | db17e6ad8fe4e91f13fe9028a162236faad7f214 (diff) | |
download | gitlab-ce-7193108c9314a50287184f4d2b21d0f8ec12f65f.tar.gz |
Merge all environment url methods, introduce ensure_persisted_environment
To make sure that we're accessing the same instance, so ending up
with `env.external` = `env.external_url` shall be fine.
Diffstat (limited to 'spec/models/ci')
-rw-r--r-- | spec/models/ci/build_spec.rb | 63 |
1 files changed, 38 insertions, 25 deletions
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 5a5702e5e8d..586acfacff8 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -427,8 +427,8 @@ describe Ci::Build, :models do end end - describe '#expanded_environment_url' do - subject { job.expanded_environment_url } + describe '#environment_url' do + subject { job.environment_url } context 'when yaml environment uses $CI_COMMIT_REF_NAME' do let(:job) do @@ -453,31 +453,10 @@ describe Ci::Build, :models do context 'when yaml environment does not have url' do let(:job) { create(:ci_build, environment: 'staging') } - it { is_expected.to be_nil } - end - end - - describe '#ci_environment_url' do - subject { job.ci_environment_url } - - let!(:environment) do - create(:environment, project: job.project, name: job.environment) - end - - context 'when yaml environment has url' do - let(:job) do - create(:ci_build, - ref: 'master', - environment: 'staging', - options: { environment: { url: 'http://review/$CI_COMMIT_REF_NAME' } }) + let!(:environment) do + create(:environment, project: job.project, name: job.environment) end - it { is_expected.to eq('http://review/master') } - end - - context 'when yaml environment does not have url' do - let(:job) { create(:ci_build, environment: 'staging') } - it 'returns the external_url from persisted environment' do is_expected.to eq(environment.external_url) end @@ -975,6 +954,40 @@ describe Ci::Build, :models do it { is_expected.to eq(environment) } end + + context 'when there is not environment' do + it { is_expected.to be_nil } + end + end + + describe '#ensure_persisted_environment' do + subject { job.ensure_persisted_environment } + + let(:job) do + create(:ci_build, + ref: 'master', + environment: 'staging/$CI_COMMIT_REF_NAME') + end + + context 'when there is no environment' do + it 'creates one by the expanded name' do + expect do + expect(subject.name).to eq('staging/master') + end.to change { Environment.count }.by(1) + end + end + + context 'when there is already an environment' do + let!(:environment) do + create(:environment, project: job.project, name: 'staging/master') + end + + it 'returns the existing environment' do + expect do + expect(subject).to eq(environment) + end.to change { Environment.count }.by(0) + end + end end describe '#play' do |