diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-11-16 11:26:36 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-11-16 11:26:36 +0100 |
commit | d9d69d7ba7dd660c9b3e0ab30b58891a8b760328 (patch) | |
tree | a4602990813436651a4e41c5a2dc0faa990f4106 | |
parent | e49229aa04144e0ce7672ad0a34a24da9b09027e (diff) | |
download | gitlab-ce-d9d69d7ba7dd660c9b3e0ab30b58891a8b760328.tar.gz |
Add specs for environments recently updated on branch
-rw-r--r-- | app/models/environment.rb | 2 | ||||
-rw-r--r-- | spec/models/environment_spec.rb | 21 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 42 |
3 files changed, 64 insertions, 1 deletions
diff --git a/app/models/environment.rb b/app/models/environment.rb index 8e4de640953..5278efd71d2 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -38,7 +38,7 @@ class Environment < ActiveRecord::Base end def recently_updated_on_branch?(ref) - ref.to_s == last_deployment.ref + ref.to_s == last_deployment.try(:ref) end def last_deployment diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb index a94e6d0165f..60bbe3fcd72 100644 --- a/spec/models/environment_spec.rb +++ b/spec/models/environment_spec.rb @@ -166,4 +166,25 @@ describe Environment, models: true do end end end + + describe 'recently_updated_on_branch?' do + subject { environment.recently_updated_on_branch?('feature') } + + context 'when last deployment to environment is the most recent one' do + before do + create(:deployment, environment: environment, ref: 'feature') + end + + it { is_expected.to be true } + end + + context 'when last deployment to environment is not the most recent' do + before do + create(:deployment, environment: environment, ref: 'feature') + create(:deployment, environment: environment, ref: 'master') + end + + it { is_expected.to be false } + end + end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index d835eac34c2..dd30ec123a7 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1688,6 +1688,48 @@ describe Project, models: true do end end + describe '#environments_recently_updated_on_branch' do + let(:project) { create(:project) } + let(:environment) { create(:environment, project: project) } + + context 'when last deployment to environment is the most recent one' do + before do + create(:deployment, environment: environment, ref: 'feature') + end + + it 'finds recently updated environment' do + expect(project.environments_recently_updated_on_branch('feature')) + .to contain_exactly(environment) + end + end + + context 'when last deployment to environment is not the most recent' do + before do + create(:deployment, environment: environment, ref: 'feature') + create(:deployment, environment: environment, ref: 'master') + end + + it 'does not find environment' do + expect(project.environments_recently_updated_on_branch('feature')) + .to be_empty + end + end + + context 'when there are two environments that deploy to the same branch' do + let(:second_environment) { create(:environment, project: project) } + + before do + create(:deployment, environment: environment, ref: 'feature') + create(:deployment, environment: second_environment, ref: 'feature') + end + + it 'finds both environments' do + expect(project.environments_recently_updated_on_branch('feature')) + .to contain_exactly(environment, second_environment) + end + end + end + def enable_lfs allow(Gitlab.config.lfs).to receive(:enabled).and_return(true) end |