summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-11-09 09:42:09 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-11-09 09:42:09 +0100
commitf7ef7bea11012bef6d373ce3b3c43fac08b047fd (patch)
treee99ead5b9b7fd34477d29ef0d4792bd8e4e27689
parent04a8372cdfff501fe67c17612a0b5e098f7d56c9 (diff)
downloadgitlab-ce-f7ef7bea11012bef6d373ce3b3c43fac08b047fd.tar.gz
Add environment factory review app trait
-rw-r--r--app/services/ci/stop_environment_service.rb19
-rw-r--r--spec/factories/deployments.rb3
-rw-r--r--spec/factories/environments.rb23
-rw-r--r--spec/services/ci/stop_environment_service_spec.rb15
4 files changed, 38 insertions, 22 deletions
diff --git a/app/services/ci/stop_environment_service.rb b/app/services/ci/stop_environment_service.rb
index 5c208b738f7..2ac0b3d885a 100644
--- a/app/services/ci/stop_environment_service.rb
+++ b/app/services/ci/stop_environment_service.rb
@@ -1,10 +1,11 @@
module Ci
class StopEnvironmentService < BaseService
- def execute(ref)
- @ref = ref
- @commit = project.commit(ref)
+ attr_reader :ref
- return unless has_ref_sha_pair?
+ def execute(branch_name)
+ @ref = branch_name
+
+ return unless has_ref_commit_pair?
return unless has_environments?
environments.each do |environment|
@@ -16,8 +17,12 @@ module Ci
private
- def has_ref_sha_pair?
- @ref && @commit
+ def has_ref_commit_pair?
+ ref && commit
+ end
+
+ def commit
+ @commit ||= project.commit(ref)
end
def has_environments?
@@ -25,7 +30,7 @@ module Ci
end
def environments
- @environments ||= project.environments_for(@ref, @commit)
+ @environments ||= project.environments_for(ref, commit)
end
end
end
diff --git a/spec/factories/deployments.rb b/spec/factories/deployments.rb
index 6f24bf58d14..29ad1af9fd9 100644
--- a/spec/factories/deployments.rb
+++ b/spec/factories/deployments.rb
@@ -3,8 +3,9 @@ FactoryGirl.define do
sha '97de212e80737a608d939f648d959671fb0a0142'
ref 'master'
tag false
+ user
project nil
-
+ deployable factory: :ci_build
environment factory: :environment
after(:build) do |deployment, evaluator|
diff --git a/spec/factories/environments.rb b/spec/factories/environments.rb
index 846cccfc7fa..bb6558a403f 100644
--- a/spec/factories/environments.rb
+++ b/spec/factories/environments.rb
@@ -4,5 +4,28 @@ FactoryGirl.define do
project factory: :empty_project
sequence(:external_url) { |n| "https://env#{n}.example.gitlab.com" }
+
+ trait :with_review_app do |environment|
+ project
+
+ # At this point `review app` is an ephemeral concept related to
+ # deployments being deployed for given environment. There is no
+ # first-class `review app` available so we need to create set of
+ # interconnected objects to simulate a review app.
+ #
+ after(:create) do |environment|
+ deployment = create(:deployment,
+ environment: environment,
+ project: environment.project,
+ sha: environment.project.commit.id)
+
+ teardown_build = create(:ci_build, :manual,
+ name: "#{deployment.environment.name}:teardown",
+ pipeline: deployment.deployable.pipeline)
+
+ deployment.update_column(:on_stop, teardown_build.name)
+ environment.update_attribute(:deployments, [deployment])
+ end
+ end
end
end
diff --git a/spec/services/ci/stop_environment_service_spec.rb b/spec/services/ci/stop_environment_service_spec.rb
index 40b2a028f67..05e9e2d84cf 100644
--- a/spec/services/ci/stop_environment_service_spec.rb
+++ b/spec/services/ci/stop_environment_service_spec.rb
@@ -8,21 +8,8 @@ describe Ci::StopEnvironmentService, services: true do
describe '#execute' do
context 'when environment exists' do
- let(:environment) { create(:environment, project: project) }
- let(:deployable) { create(:ci_build) }
-
- let(:stop_build) do
- create(:ci_build, :manual, name: 'environment/teardown',
- pipeline: deployable.pipeline)
- end
-
before do
- create(:deployment, environment: environment,
- deployable: deployable,
- on_stop: stop_build.name,
- user: user,
- project: project,
- sha: project.commit.id)
+ create(:environment, :with_review_app, project: project)
end
it 'stops environment' do