diff options
| author | Filipa Lacerda <filipa@gitlab.com> | 2016-10-25 13:50:27 +0100 |
|---|---|---|
| committer | Filipa Lacerda <filipa@gitlab.com> | 2016-11-16 11:57:58 +0000 |
| commit | cd476336d9c8f07c5a70fb05f646727965139706 (patch) | |
| tree | 3e912ce3fb7059378ee0c53c6d2fbec61c4f485f | |
| parent | 32c727cb9b8f0d8dc6de349482d49f81d8067656 (diff) | |
| download | gitlab-ce-cd476336d9c8f07c5a70fb05f646727965139706.tar.gz | |
tests
| -rw-r--r-- | app/assets/javascripts/environments/environments_bundle.js.es6 | 3 | ||||
| -rw-r--r-- | app/views/projects/environments/index.html.haml | 2 | ||||
| -rw-r--r-- | spec/features/environments_spec.rb | 484 |
3 files changed, 263 insertions, 226 deletions
diff --git a/app/assets/javascripts/environments/environments_bundle.js.es6 b/app/assets/javascripts/environments/environments_bundle.js.es6 index 4c1fea0d6c6..0ab3afb405c 100644 --- a/app/assets/javascripts/environments/environments_bundle.js.es6 +++ b/app/assets/javascripts/environments/environments_bundle.js.es6 @@ -3,6 +3,7 @@ //= require_tree ./stores //= require_tree ./services //= require ./components/environment_item +//= require ../boards/vue_resource_interceptor $(() => { @@ -72,6 +73,8 @@ $(() => { ready() { gl.environmentsService.all().then((resp) => { Store.storeEnvironments(resp.json()); + + console.log("HELLLLOOOOOOOOOOOOOO", resp.json()) this.loading = false; }); diff --git a/app/views/projects/environments/index.html.haml b/app/views/projects/environments/index.html.haml index 3538777d11c..5b9fedb956f 100644 --- a/app/views/projects/environments/index.html.haml +++ b/app/views/projects/environments/index.html.haml @@ -41,7 +41,7 @@ = link_to new_namespace_project_environment_path(@project.namespace, @project), class: 'btn btn-create' do New environment - .table-holder{ "v-if" => "!loading && state.environments.length" } + .table-holder{ "v-if" => "!loading && state.environments" } %table.table.ci-table.environments %thead %th Environment diff --git a/spec/features/environments_spec.rb b/spec/features/environments_spec.rb index b565586ee14..c8ea4bb3945 100644 --- a/spec/features/environments_spec.rb +++ b/spec/features/environments_spec.rb @@ -1,7 +1,10 @@ require 'spec_helper' +require 'rails_helper' -feature 'Environments', feature: true do - given(:project) { create(:empty_project) } +feature 'Environments', feature: true, js:true do + include WaitForVueResource + + given(:project) { create(:project) } given(:user) { create(:user) } given(:role) { :developer } @@ -15,18 +18,17 @@ feature 'Environments', feature: true do given!(:deployment) { } given!(:manual) { } - before do - visit namespace_project_environments_path(project.namespace, project) - end - - context 'shows two tabs' do - scenario 'shows "Available" and "Stopped" tab with links' do + context 'without environments' do + before do + visit namespace_project_environments_path(project.namespace, project) + wait_for_vue_resource + end + + scenario 'does show "Available" and "Stopped" tab with links' do expect(page).to have_link('Available') expect(page).to have_link('Stopped') end - end - context 'without environments' do scenario 'does show no environments' do expect(page).to have_content('You don\'t have any environments right now.') end @@ -36,239 +38,271 @@ feature 'Environments', feature: true do expect(page.find('.js-stopped-environments-count').text).to eq('0') end end - - context 'with environments' do + + context 'loading environments' do given(:environment) { create(:environment, project: project) } + + before do + visit namespace_project_environments_path(project.namespace, project) + wait_for_vue_resource + end - scenario 'does show environment name' do - expect(page).to have_link(environment.name) + scenario 'does show loading spinner' do + expect(page).to have_selector('.environments-list-loading') end + end + context 'with environments' do + let(:environment1) { create(:environment, project: project) } + let(:environment2) { create(:environment, project: project) } + + before do + visit namespace_project_environments_path(project.namespace, project) + wait_for_vue_resource + expect(page).to have_selector('.table.ci-table.environments') + 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 environment name' do + expect(page).to have_link(environment1.name) + end + 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-stopped-environments-count').text).to eq('0') end - + context 'without deployments' do scenario 'does show no deployments' do expect(page).to have_content('No deployments yet') end end - context 'with deployments' do - given(:deployment) { create(:deployment, environment: environment) } - - scenario 'does show deployment SHA' do - expect(page).to have_link(deployment.short_sha) - end - - scenario 'does show deployment internal id' do - expect(page).to have_content(deployment.iid) - end - - context 'with build and manual actions' do - given(:pipeline) { create(:ci_pipeline, project: project) } - given(:build) { create(:ci_build, pipeline: pipeline) } - given(:deployment) { create(:deployment, environment: environment, deployable: build) } - given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') } - - scenario 'does show a play button' do - expect(page).to have_link(manual.name.humanize) - end - - scenario 'does allow to play manual action' do - expect(manual).to be_skipped - expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count } - expect(page).to have_content(manual.name) - expect(manual.reload).to be_pending - end - - scenario 'does show build name and id' do - expect(page).to have_link("#{build.name} (##{build.id})") - end - - scenario 'does not show stop button' do - expect(page).not_to have_selector('.stop-env-link') - end - - scenario 'does not show external link button' do - expect(page).not_to have_css('external-url') - end - - context 'with external_url' do - given(:environment) { create(:environment, project: project, external_url: 'https://git.gitlab.com') } - given(:build) { create(:ci_build, pipeline: pipeline) } - given(:deployment) { create(:deployment, environment: environment, deployable: build) } - - scenario 'does show an external link button' do - expect(page).to have_link(nil, href: environment.external_url) - end - end - - context 'with stop action' do - given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') } - given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } - - scenario 'does show stop button' do - expect(page).to have_selector('.stop-env-link') - end - - scenario 'starts build when stop button clicked' do - first('.stop-env-link').click - - expect(page).to have_content('close_app') - end - - context 'for reporter' do - let(:role) { :reporter } - - scenario 'does not show stop button' do - expect(page).not_to have_selector('.stop-env-link') - end - end - end - end - end - end - - scenario 'does have a New environment button' do - expect(page).to have_link('New environment') + # context 'with deployments' do + # given(:deployment) { create(:deployment, environment: environment) } + # + # scenario 'does show deployment SHA' do + # expect(page).to have_link(deployment.short_sha) + # end + # + # scenario 'does show deployment internal id' do + # expect(page).to have_content(deployment.iid) + # end + # + # context 'with build and manual actions' do + # given(:pipeline) { create(:ci_pipeline, project: project) } + # given(:build) { create(:ci_build, pipeline: pipeline) } + # given(:deployment) { create(:deployment, environment: environment, deployable: build) } + # given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') } + # + # scenario 'does show a play button' do + # expect(page).to have_link(manual.name.humanize) + # end + # + # scenario 'does allow to play manual action' do + # expect(manual).to be_skipped + # expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count } + # expect(page).to have_content(manual.name) + # expect(manual.reload).to be_pending + # end + # + # scenario 'does show build name and id' do + # expect(page).to have_link("#{build.name} (##{build.id})") + # end + # + # scenario 'does not show stop button' do + # expect(page).not_to have_selector('.stop-env-link') + # end + # + # scenario 'does not show external link button' do + # expect(page).not_to have_css('external-url') + # end + # + # # context 'with external_url' do + # given(:environment) { create(:environment, project: project, external_url: 'https://git.gitlab.com') } + # given(:build) { create(:ci_build, pipeline: pipeline) } + # given(:deployment) { create(:deployment, environment: environment, deployable: build) } + # + # scenario 'does show an external link button' do + # expect(page).to have_link(nil, href: environment.external_url) + # end + # end + # + # # context 'with stop action' do + # given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') } + # given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } + # + # scenario 'does show stop button' do + # expect(page).to have_selector('.stop-env-link') + # end + # + # scenario 'starts build when stop button clicked' do + # first('.stop-env-link').click + # + # expect(page).to have_content('close_app') + # end + # + # context 'for reporter' do + # let(:role) { :reporter } + # + # scenario 'does not show stop button' do + # expect(page).not_to have_selector('.stop-env-link') + # end + # end + # end + # end + # end end - end - - describe 'when showing the environment' do - given(:environment) { create(:environment, project: project) } - given!(:deployment) { } - given!(:manual) { } - - before do - visit namespace_project_environment_path(project.namespace, project, environment) - end - - context 'without deployments' do - scenario 'does show no deployments' do - expect(page).to have_content('You don\'t have any deployments right now.') - end - end - - context 'with deployments' do - given(:deployment) { create(:deployment, environment: environment) } - - scenario 'does show deployment SHA' do - expect(page).to have_link(deployment.short_sha) - end - - scenario 'does not show a re-deploy button for deployment without build' do - expect(page).not_to have_link('Re-deploy') - end - - context 'with build' do - given(:pipeline) { create(:ci_pipeline, project: project) } - given(:build) { create(:ci_build, pipeline: pipeline) } - given(:deployment) { create(:deployment, environment: environment, deployable: build) } - - scenario 'does show build name' do - expect(page).to have_link("#{build.name} (##{build.id})") - end - - scenario 'does show re-deploy button' do - expect(page).to have_link('Re-deploy') - end - - scenario 'does not show stop button' do - expect(page).not_to have_link('Stop') - end - - context 'with manual action' do - given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') } - - scenario 'does show a play button' do - expect(page).to have_link(manual.name.humanize) - end - - scenario 'does allow to play manual action' do - expect(manual).to be_skipped - expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count } - expect(page).to have_content(manual.name) - expect(manual.reload).to be_pending - end - - context 'with external_url' do - given(:environment) { create(:environment, project: project, external_url: 'https://git.gitlab.com') } - given(:build) { create(:ci_build, pipeline: pipeline) } - given(:deployment) { create(:deployment, environment: environment, deployable: build) } - - scenario 'does show an external link button' do - expect(page).to have_link(nil, href: environment.external_url) - end - end - - context 'with stop action' do - given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') } - given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } - - scenario 'does show stop button' do - expect(page).to have_link('Stop') - end - - scenario 'does allow to stop environment' do - click_link('Stop') - - expect(page).to have_content('close_app') - end - - context 'for reporter' do - let(:role) { :reporter } - - scenario 'does not show stop button' do - expect(page).not_to have_link('Stop') - end - end - end - end - end - end - end - - describe 'when creating a new environment' do - before do - visit namespace_project_environments_path(project.namespace, project) - end - - context 'when logged as developer' do + + context 'can create new environment' do before do - click_link 'New environment' - end - - context 'for valid name' do - before do - fill_in('Name', with: 'production') - click_on 'Save' - end - - scenario 'does create a new pipeline' do - expect(page).to have_content('Production') - end - end - - context 'for invalid name' do - before do - fill_in('Name', with: 'name,with,commas') - click_on 'Save' - end - - scenario 'does show errors' do - expect(page).to have_content('Name can contain only letters') - end + visit namespace_project_environments_path(project.namespace, project) + wait_for_vue_resource end - end - - context 'when logged as reporter' do - given(:role) { :reporter } - - scenario 'does not have a New environment link' do - expect(page).not_to have_link('New environment') + + scenario 'does have a New environment button' do + expect(page).to have_link('New environment') end end end + + # describe 'when showing the environment' do + # given(:environment) { create(:environment, project: project) } + # given!(:deployment) { } + # given!(:manual) { } + # + # before do + # visit namespace_project_environment_path(project.namespace, project, environment) + # end + # + # context 'without deployments' do + # scenario 'does show no deployments' do + # expect(page).to have_content('You don\'t have any deployments right now.') + # end + # end + # + # context 'with deployments' do + # given(:deployment) { create(:deployment, environment: environment) } + # + # scenario 'does show deployment SHA' do + # expect(page).to have_link(deployment.short_sha) + # end + # + # scenario 'does not show a re-deploy button for deployment without build' do + # expect(page).not_to have_link('Re-deploy') + # end + # + # context 'with build' do + # given(:pipeline) { create(:ci_pipeline, project: project) } + # given(:build) { create(:ci_build, pipeline: pipeline) } + # given(:deployment) { create(:deployment, environment: environment, deployable: build) } + # + # scenario 'does show build name' do + # expect(page).to have_link("#{build.name} (##{build.id})") + # end + # + # scenario 'does show re-deploy button' do + # expect(page).to have_link('Re-deploy') + # end + # + # scenario 'does not show stop button' do + # expect(page).not_to have_link('Stop') + # end + # + # context 'with manual action' do + # given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') } + # + # scenario 'does show a play button' do + # expect(page).to have_link(manual.name.humanize) + # end + # + # scenario 'does allow to play manual action' do + # expect(manual).to be_skipped + # expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count } + # expect(page).to have_content(manual.name) + # expect(manual.reload).to be_pending + # end + # + # context 'with external_url' do + # given(:environment) { create(:environment, project: project, external_url: 'https://git.gitlab.com') } + # given(:build) { create(:ci_build, pipeline: pipeline) } + # given(:deployment) { create(:deployment, environment: environment, deployable: build) } + # + # scenario 'does show an external link button' do + # expect(page).to have_link(nil, href: environment.external_url) + # end + # end + # + # context 'with stop action' do + # given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'close_app') } + # given(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } + # + # scenario 'does show stop button' do + # expect(page).to have_link('Stop') + # end + # + # scenario 'does allow to stop environment' do + # click_link('Stop') + # + # expect(page).to have_content('close_app') + # end + # + # context 'for reporter' do + # let(:role) { :reporter } + # + # scenario 'does not show stop button' do + # expect(page).not_to have_link('Stop') + # end + # end + # end + # end + # end + # end + # end + + # describe 'when creating a new environment' do + # before do + # visit namespace_project_environments_path(project.namespace, project) + # end + # + # context 'when logged as developer' do + # before do + # click_link 'New environment' + # end + # + # context 'for valid name' do + # before do + # fill_in('Name', with: 'production') + # click_on 'Save' + # end + # + # scenario 'does create a new pipeline' do + # expect(page).to have_content('Production') + # end + # end + # + # context 'for invalid name' do + # before do + # fill_in('Name', with: 'name,with,commas') + # click_on 'Save' + # end + # + # scenario 'does show errors' do + # expect(page).to have_content('Name can contain only letters') + # end + # end + # end + # + # context 'when logged as reporter' do + # given(:role) { :reporter } + # + # scenario 'does not have a New environment link' do + # expect(page).not_to have_link('New environment') + # end + # end + # end end |
