summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-11-16 11:26:36 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-11-16 11:26:36 +0100
commitd9d69d7ba7dd660c9b3e0ab30b58891a8b760328 (patch)
treea4602990813436651a4e41c5a2dc0faa990f4106
parente49229aa04144e0ce7672ad0a34a24da9b09027e (diff)
downloadgitlab-ce-d9d69d7ba7dd660c9b3e0ab30b58891a8b760328.tar.gz
Add specs for environments recently updated on branch
-rw-r--r--app/models/environment.rb2
-rw-r--r--spec/models/environment_spec.rb21
-rw-r--r--spec/models/project_spec.rb42
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