Merge branch 'add-name_without_type-to-environments-json' into 'master'
Add name_without_type to environments.json See merge request gitlab-org/gitlab-ce!25492
This commit is contained in:
commit
3395eacb57
5 changed files with 33 additions and 5 deletions
|
@ -243,6 +243,10 @@ class Environment < ActiveRecord::Base
|
|||
self.environment_type || self.name
|
||||
end
|
||||
|
||||
def name_without_type
|
||||
@name_without_type ||= name.delete_prefix("#{environment_type}/")
|
||||
end
|
||||
|
||||
def deployment_platform
|
||||
strong_memoize(:deployment_platform) do
|
||||
project.deployment_platform(environment: self.name)
|
||||
|
|
|
@ -8,6 +8,7 @@ class EnvironmentEntity < Grape::Entity
|
|||
expose :state
|
||||
expose :external_url
|
||||
expose :environment_type
|
||||
expose :name_without_type
|
||||
expose :last_deployment, using: DeploymentEntity
|
||||
expose :stop_action_available?, as: :has_stop_action
|
||||
|
||||
|
|
|
@ -54,9 +54,9 @@ describe Projects::EnvironmentsController do
|
|||
|
||||
it 'responds with a flat payload describing available environments' do
|
||||
expect(environments.count).to eq 3
|
||||
expect(environments.first['name']).to eq 'production'
|
||||
expect(environments.second['name']).to eq 'staging/review-1'
|
||||
expect(environments.third['name']).to eq 'staging/review-2'
|
||||
expect(environments.first).to include('name' => 'production', 'name_without_type' => 'production')
|
||||
expect(environments.second).to include('name' => 'staging/review-1', 'name_without_type' => 'review-1')
|
||||
expect(environments.third).to include('name' => 'staging/review-2', 'name_without_type' => 'review-2')
|
||||
expect(json_response['available_count']).to eq 3
|
||||
expect(json_response['stopped_count']).to eq 1
|
||||
end
|
||||
|
@ -155,9 +155,9 @@ describe Projects::EnvironmentsController do
|
|||
expect(response).to be_ok
|
||||
expect(response).not_to render_template 'folder'
|
||||
expect(json_response['environments'][0])
|
||||
.to include('name' => 'staging-1.0/review')
|
||||
.to include('name' => 'staging-1.0/review', 'name_without_type' => 'review')
|
||||
expect(json_response['environments'][1])
|
||||
.to include('name' => 'staging-1.0/zzz')
|
||||
.to include('name' => 'staging-1.0/zzz', 'name_without_type' => 'zzz')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
1
spec/fixtures/api/schemas/environment.json
vendored
1
spec/fixtures/api/schemas/environment.json
vendored
|
@ -20,6 +20,7 @@
|
|||
"state": { "type": "string" },
|
||||
"external_url": { "$ref": "types/nullable_string.json" },
|
||||
"environment_type": { "$ref": "types/nullable_string.json" },
|
||||
"name_without_type": { "type": "string" },
|
||||
"has_stop_action": { "type": "boolean" },
|
||||
"environment_path": { "type": "string" },
|
||||
"stop_path": { "type": "string" },
|
||||
|
|
|
@ -164,6 +164,28 @@ describe Environment do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#name_without_type' do
|
||||
context 'when it is inside a folder' do
|
||||
subject(:environment) do
|
||||
create(:environment, name: 'staging/review-1')
|
||||
end
|
||||
|
||||
it 'returns name without folder' do
|
||||
expect(environment.name_without_type).to eq 'review-1'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the environment if a top-level item itself' do
|
||||
subject(:environment) do
|
||||
create(:environment, name: 'production')
|
||||
end
|
||||
|
||||
it 'returns full name' do
|
||||
expect(environment.name_without_type).to eq 'production'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#nullify_external_url' do
|
||||
it 'replaces a blank url with nil' do
|
||||
env = build(:environment, external_url: "")
|
||||
|
|
Loading…
Reference in a new issue