Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
cd476336
Commit
cd476336
authored
Oct 25, 2016
by
Filipa Lacerda
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tests
parent
32c727cb
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
263 additions
and
226 deletions
+263
-226
app/assets/javascripts/environments/environments_bundle.js.es6
...ssets/javascripts/environments/environments_bundle.js.es6
+3
-0
app/views/projects/environments/index.html.haml
app/views/projects/environments/index.html.haml
+1
-1
spec/features/environments_spec.rb
spec/features/environments_spec.rb
+259
-225
No files found.
app/assets/javascripts/environments/environments_bundle.js.es6
View file @
cd476336
...
...
@@ -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;
});
...
...
app/views/projects/environments/index.html.haml
View file @
cd476336
...
...
@@ -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
...
...
spec/features/environments_spec.rb
View file @
cd476336
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment