diff options
author | Z.J. van de Weg <zegerjan@gitlab.com> | 2016-07-26 09:35:47 +0200 |
---|---|---|
committer | Z.J. van de Weg <zegerjan@gitlab.com> | 2016-07-29 13:54:45 +0200 |
commit | be9aa7f19474424991923f128053e2523fa166d8 (patch) | |
tree | dde83c7c92d7b932d3b9b79405fb1e5524034345 /spec | |
parent | 242f8377264973d642b46e5d2800ef3d3bd4c0fa (diff) | |
download | gitlab-ce-be9aa7f19474424991923f128053e2523fa166d8.tar.gz |
Add an URL field to Environments
This MR adds a string (thus max 255 chars) field to the enviroments
table to expose it later in other features.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/controllers/projects/environments_controller_spec.rb | 50 | ||||
-rw-r--r-- | spec/factories/environments.rb | 1 | ||||
-rw-r--r-- | spec/features/environments_spec.rb | 4 | ||||
-rw-r--r-- | spec/models/environment_spec.rb | 10 |
4 files changed, 63 insertions, 2 deletions
diff --git a/spec/controllers/projects/environments_controller_spec.rb b/spec/controllers/projects/environments_controller_spec.rb new file mode 100644 index 00000000000..b91a99d6b2e --- /dev/null +++ b/spec/controllers/projects/environments_controller_spec.rb @@ -0,0 +1,50 @@ +require 'spec_helper' + +describe Projects::EnvironmentsController do + let(:environment) { create(:environment) } + let(:project) { environment.project } + let(:user) { create(:user) } + + before do + project.team << [user, :master] + + sign_in(user) + end + + render_views + + describe 'GET show' do + context 'with valid id' do + it 'responds with a status code 200' do + get :show, namespace_id: project.namespace, project_id: project, id: environment.id + + expect(response).to be_ok + end + end + + context 'with invalid id' do + it 'responds with a status code 404' do + get :show, namespace_id: project.namespace, project_id: project, id: 12345 + + expect(response).to be_not_found + end + end + end + + describe 'GET edit' do + it 'responds with a status code 200' do + get :edit, namespace_id: project.namespace, project_id: project, id: environment.id + + expect(response).to be_ok + end + end + + describe 'PATCH #update' do + it 'responds with a 302' do + patch :update, namespace_id: project.namespace, project_id: + project, id: environment.id, environment: { external_url: 'https://git.gitlab.com' } + + expect(response).to have_http_status(302) + end + end +end diff --git a/spec/factories/environments.rb b/spec/factories/environments.rb index 07265c26ca3..846cccfc7fa 100644 --- a/spec/factories/environments.rb +++ b/spec/factories/environments.rb @@ -3,5 +3,6 @@ FactoryGirl.define do sequence(:name) { |n| "environment#{n}" } project factory: :empty_project + sequence(:external_url) { |n| "https://env#{n}.example.gitlab.com" } end end diff --git a/spec/features/environments_spec.rb b/spec/features/environments_spec.rb index a7d9f2a0c72..fcd41b38413 100644 --- a/spec/features/environments_spec.rb +++ b/spec/features/environments_spec.rb @@ -140,7 +140,7 @@ feature 'Environments', feature: true do context 'for valid name' do before do fill_in('Name', with: 'production') - click_on 'Create environment' + click_on 'Save' end scenario 'does create a new pipeline' do @@ -151,7 +151,7 @@ feature 'Environments', feature: true do context 'for invalid name' do before do fill_in('Name', with: 'name with spaces') - click_on 'Create environment' + click_on 'Save' end scenario 'does show errors' do diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb index 7629af6a570..6c11cfc4c9b 100644 --- a/spec/models/environment_spec.rb +++ b/spec/models/environment_spec.rb @@ -11,4 +11,14 @@ describe Environment, models: true do it { is_expected.to validate_presence_of(:name) } it { is_expected.to validate_uniqueness_of(:name).scoped_to(:project_id) } it { is_expected.to validate_length_of(:name).is_within(0..255) } + + it { is_expected.to validate_length_of(:external_url).is_within(0..255) } + + # To circumvent a not null violation of the name column: + # https://github.com/thoughtbot/shoulda-matchers/issues/336 + it 'validates uniqueness of :external_url' do + create(:environment) + + is_expected.to validate_uniqueness_of(:external_url).scoped_to(:project_id) + end end |