Commit 56aaa397 authored by Filipa Lacerda's avatar Filipa Lacerda

Revert changes made on rspec tests for environment

parent 09c45429
require 'rails_helper' require 'spec_helper'
feature 'Environments', feature: true, js:true do feature 'Environments', feature: true do
include WaitForVueResource given(:project) { create(:empty_project) }
given(:user) { create(:user) }
let(:json) { serializer.as_json } given(:role) { :developer }
let(:project) { create(:empty_project, :public) }
let(:user) { create(:user) }
let(:role) { :developer }
let(:serializer) do
described_class
.new(user: user, project: project)
.represent(resource)
end
background do background do
login_as(user) login_as(user)
project.team << [user, role] project.team << [user, role]
end end
describe 'when showing environments' do describe 'when showing environments' do
given!(:environment) { }
given!(:deployment) { }
given!(:manual) { }
before do before do
visit namespace_project_environments_path(project.namespace, project) visit namespace_project_environments_path(project.namespace, project)
wait_for_vue_resource
end end
context 'without environments' do context 'shows two tabs' do
scenario 'does show "Available" and "Stopped" tab with links' do scenario 'shows "Available" and "Stopped" tab with links' do
expect(page).to have_link('Available') expect(page).to have_link('Available')
expect(page).to have_link('Stopped') expect(page).to have_link('Stopped')
end end
end
context 'without environments' do
scenario 'does show no environments' do scenario 'does show no environments' do
expect(page).to have_content('You don\'t have any environments right now.') expect(page).to have_content('You don\'t have any environments right now.')
end end
...@@ -42,99 +38,90 @@ feature 'Environments', feature: true, js:true do ...@@ -42,99 +38,90 @@ feature 'Environments', feature: true, js:true do
end end
context 'with environments' do context 'with environments' do
let(:resource) { create_list(:environment, 2) } given(:environment) { create(:environment, project: project) }
before do
endpoint = namespace_project_environments_path(project.namespace, project) scenario 'does show environment name' do
stub_request(:any, endpoint).to_return(body: [{"name": "test"}]) expect(page).to have_link(environment.name)
end
scenario 'does show "Available" and "Stopped" tab with links' do
expect(page).to have_link('Stopped')
expect(page).to have_link('Available')
end
scenario 'does show environments table' do
expect(page).to have_selector('.table-holder')
end end
scenario 'does show number of available and stopped environments' do scenario 'does show number of available and stopped environments' do
expect(page.find('.js-available-environments-count').text).to eq('1') expect(page.find('.js-available-environments-count').text).to eq('1')
expect(page.find('.js-stopped-environments-count').text).to eq('0') expect(page.find('.js-stopped-environments-count').text).to eq('0')
end end
context 'without deployments' do context 'without deployments' do
scenario 'does show no deployments' do scenario 'does show no deployments' do
expect(page).to have_content('No deployments yet') expect(page).to have_content('No deployments yet')
end end
end end
context 'with deployments' do context 'with deployments' do
# TODO add environment with deployment given(:deployment) { create(:deployment, environment: environment) }
scenario 'does show deployment SHA' do scenario 'does show deployment SHA' do
expect(page).to have_link(deployment.short_sha) expect(page).to have_link(deployment.short_sha)
end end
scenario 'does show deployment internal id' do scenario 'does show deployment internal id' do
expect(page).to have_content(deployment.iid) expect(page).to have_content(deployment.iid)
end end
context 'with build and manual actions' do context 'with build and manual actions' do
given(:pipeline) { create(:ci_pipeline, project: project) } given(:pipeline) { create(:ci_pipeline, project: project) }
given(:build) { create(:ci_build, pipeline: pipeline) } given(:build) { create(:ci_build, pipeline: pipeline) }
given(:deployment) { create(:deployment, environment: environment, deployable: build) } given(:deployment) { create(:deployment, environment: environment, deployable: build) }
given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') } given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') }
scenario 'does show a play button' do scenario 'does show a play button' do
expect(page).to have_link(manual.name.humanize) expect(page).to have_link(manual.name.humanize)
end end
scenario 'does allow to play manual action' do scenario 'does allow to play manual action' do
expect(manual).to be_skipped expect(manual).to be_skipped
expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count } expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count }
expect(page).to have_content(manual.name) expect(page).to have_content(manual.name)
expect(manual.reload).to be_pending expect(manual.reload).to be_pending
end end
scenario 'does show build name and id' do scenario 'does show build name and id' do
expect(page).to have_link("#{build.name} (##{build.id})") expect(page).to have_link("#{build.name} (##{build.id})")
end end
scenario 'does not show stop button' do scenario 'does not show stop button' do
expect(page).not_to have_selector('.stop-env-link') expect(page).not_to have_selector('.stop-env-link')
end end
scenario 'does not show external link button' do scenario 'does not show external link button' do
expect(page).not_to have_css('external-url') expect(page).not_to have_css('external-url')
end end
context 'with external_url' do context 'with external_url' do
given(:environment) { create(:environment, project: project, external_url: 'https://git.gitlab.com') } given(:environment) { create(:environment, project: project, external_url: 'https://git.gitlab.com') }
given(:build) { create(:ci_build, pipeline: pipeline) } given(:build) { create(:ci_build, pipeline: pipeline) }
given(:deployment) { create(:deployment, environment: environment, deployable: build) } given(:deployment) { create(:deployment, environment: environment, deployable: build) }
scenario 'does show an external link button' do scenario 'does show an external link button' do
expect(page).to have_link(nil, href: environment.external_url) expect(page).to have_link(nil, href: environment.external_url)
end end
end end
context 'with stop action' do context 'with stop action' do
given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') } given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') }
given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') }
scenario 'does show stop button' do scenario 'does show stop button' do
expect(page).to have_selector('.stop-env-link') expect(page).to have_selector('.stop-env-link')
end end
scenario 'starts build when stop button clicked' do scenario 'starts build when stop button clicked' do
first('.stop-env-link').click first('.stop-env-link').click
expect(page).to have_content('close_app') expect(page).to have_content('close_app')
end end
context 'for reporter' do context 'for reporter' do
let(:role) { :reporter } let(:role) { :reporter }
scenario 'does not show stop button' do scenario 'does not show stop button' do
expect(page).not_to have_selector('.stop-env-link') expect(page).not_to have_selector('.stop-env-link')
end end
...@@ -143,98 +130,96 @@ feature 'Environments', feature: true, js:true do ...@@ -143,98 +130,96 @@ feature 'Environments', feature: true, js:true do
end end
end end
end end
context 'can create new environment' do scenario 'does have a New environment button' do
scenario 'does have a New environment button' do expect(page).to have_link('New environment')
expect(page).to have_link('New environment')
end
end end
end end
describe 'when showing the environment' do describe 'when showing the environment' do
given(:environment) { create(:environment, project: project) } given(:environment) { create(:environment, project: project) }
given!(:deployment) { } given!(:deployment) { }
given!(:manual) { } given!(:manual) { }
before do before do
visit namespace_project_environment_path(project.namespace, project, environment) visit namespace_project_environment_path(project.namespace, project, environment)
end end
context 'without deployments' do context 'without deployments' do
scenario 'does show no deployments' do scenario 'does show no deployments' do
expect(page).to have_content('You don\'t have any deployments right now.') expect(page).to have_content('You don\'t have any deployments right now.')
end end
end end
context 'with deployments' do context 'with deployments' do
given(:deployment) { create(:deployment, environment: environment) } given(:deployment) { create(:deployment, environment: environment) }
scenario 'does show deployment SHA' do scenario 'does show deployment SHA' do
expect(page).to have_link(deployment.short_sha) expect(page).to have_link(deployment.short_sha)
end end
scenario 'does not show a re-deploy button for deployment without build' do scenario 'does not show a re-deploy button for deployment without build' do
expect(page).not_to have_link('Re-deploy') expect(page).not_to have_link('Re-deploy')
end end
context 'with build' do context 'with build' do
given(:pipeline) { create(:ci_pipeline, project: project) } given(:pipeline) { create(:ci_pipeline, project: project) }
given(:build) { create(:ci_build, pipeline: pipeline) } given(:build) { create(:ci_build, pipeline: pipeline) }
given(:deployment) { create(:deployment, environment: environment, deployable: build) } given(:deployment) { create(:deployment, environment: environment, deployable: build) }
scenario 'does show build name' do scenario 'does show build name' do
expect(page).to have_link("#{build.name} (##{build.id})") expect(page).to have_link("#{build.name} (##{build.id})")
end end
scenario 'does show re-deploy button' do scenario 'does show re-deploy button' do
expect(page).to have_link('Re-deploy') expect(page).to have_link('Re-deploy')
end end
scenario 'does not show stop button' do scenario 'does not show stop button' do
expect(page).not_to have_link('Stop') expect(page).not_to have_link('Stop')
end end
context 'with manual action' do context 'with manual action' do
given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') } given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') }
scenario 'does show a play button' do scenario 'does show a play button' do
expect(page).to have_link(manual.name.humanize) expect(page).to have_link(manual.name.humanize)
end end
scenario 'does allow to play manual action' do scenario 'does allow to play manual action' do
expect(manual).to be_skipped expect(manual).to be_skipped
expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count } expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count }
expect(page).to have_content(manual.name) expect(page).to have_content(manual.name)
expect(manual.reload).to be_pending expect(manual.reload).to be_pending
end end
context 'with external_url' do context 'with external_url' do
given(:environment) { create(:environment, project: project, external_url: 'https://git.gitlab.com') } given(:environment) { create(:environment, project: project, external_url: 'https://git.gitlab.com') }
given(:build) { create(:ci_build, pipeline: pipeline) } given(:build) { create(:ci_build, pipeline: pipeline) }
given(:deployment) { create(:deployment, environment: environment, deployable: build) } given(:deployment) { create(:deployment, environment: environment, deployable: build) }
scenario 'does show an external link button' do scenario 'does show an external link button' do
expect(page).to have_link(nil, href: environment.external_url) expect(page).to have_link(nil, href: environment.external_url)
end end
end end
context 'with stop action' do context 'with stop action' do
given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') } given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') }
given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') }
scenario 'does show stop button' do scenario 'does show stop button' do
expect(page).to have_link('Stop') expect(page).to have_link('Stop')
end end
scenario 'does allow to stop environment' do scenario 'does allow to stop environment' do
click_link('Stop') click_link('Stop')
expect(page).to have_content('close_app') expect(page).to have_content('close_app')
end end
context 'for reporter' do context 'for reporter' do
let(:role) { :reporter } let(:role) { :reporter }
scenario 'does not show stop button' do scenario 'does not show stop button' do
expect(page).not_to have_link('Stop') expect(page).not_to have_link('Stop')
end end
...@@ -244,43 +229,43 @@ feature 'Environments', feature: true, js:true do ...@@ -244,43 +229,43 @@ feature 'Environments', feature: true, js:true do
end end
end end
end end
describe 'when creating a new environment' do describe 'when creating a new environment' do
before do before do
visit namespace_project_environments_path(project.namespace, project) visit namespace_project_environments_path(project.namespace, project)
end end
context 'when logged as developer' do context 'when logged as developer' do
before do before do
click_link 'New environment' click_link 'New environment'
end end
context 'for valid name' do context 'for valid name' do
before do before do
fill_in('Name', with: 'production') fill_in('Name', with: 'production')
click_on 'Save' click_on 'Save'
end end
scenario 'does create a new pipeline' do scenario 'does create a new pipeline' do
expect(page).to have_content('Production') expect(page).to have_content('Production')
end end
end end
context 'for invalid name' do context 'for invalid name' do
before do before do
fill_in('Name', with: 'name,with,commas') fill_in('Name', with: 'name,with,commas')
click_on 'Save' click_on 'Save'
end end
scenario 'does show errors' do scenario 'does show errors' do
expect(page).to have_content('Name can contain only letters') expect(page).to have_content('Name can contain only letters')
end end
end end
end end
context 'when logged as reporter' do context 'when logged as reporter' do
given(:role) { :reporter } given(:role) { :reporter }
scenario 'does not have a New environment link' do scenario 'does not have a New environment link' do
expect(page).not_to have_link('New environment') expect(page).not_to have_link('New environment')
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment