Commit f587a1f0 authored by Kamil Trzciński's avatar Kamil Trzciński Committed by Alejandro Rodríguez

Merge branch '24779-last-deployment-call-on-nil-environment-fix' into 'master'

changes environment.last_deployment to a try expression so it does not fail if e…

## What does this MR do?

Fixes the call on `environment.last_deployment` to not break when `environment`is not yet set.

## Does this MR meet the acceptance criteria?

- [x] [Changelog entry](https://docs.gitlab.com/ce/development/changelog.html) added
- [x] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [x] API support added
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [x] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if it does - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

## What are the relevant issue numbers?


Closes #24779

See merge request !7671
parent 1c2f3756
...@@ -40,13 +40,12 @@ ...@@ -40,13 +40,12 @@
This build is the most recent deployment to #{environment_link_for_build(@build.project, @build)}. This build is the most recent deployment to #{environment_link_for_build(@build.project, @build)}.
- else - else
This build is an out-of-date deployment to #{environment_link_for_build(@build.project, @build)}. This build is an out-of-date deployment to #{environment_link_for_build(@build.project, @build)}.
- if environment.last_deployment View the most recent deployment #{deployment_link(environment.last_deployment)}.
View the most recent deployment #{deployment_link(environment.last_deployment)}.
- elsif @build.complete? && !@build.success? - elsif @build.complete? && !@build.success?
The deployment of this build to #{environment_link_for_build(@build.project, @build)} did not succeed. The deployment of this build to #{environment_link_for_build(@build.project, @build)} did not succeed.
- else - else
This build is creating a deployment to #{environment_link_for_build(@build.project, @build)} This build is creating a deployment to #{environment_link_for_build(@build.project, @build)}
- if environment.last_deployment - if environment.try(:last_deployment)
and will overwrite the and will overwrite the
= link_to 'latest deployment', deployment_link(environment.last_deployment) = link_to 'latest deployment', deployment_link(environment.last_deployment)
......
---
title: fixes last_deployment call environment is nil
merge_request: 7671
author:
...@@ -88,16 +88,46 @@ describe 'projects/builds/show', :view do ...@@ -88,16 +88,46 @@ describe 'projects/builds/show', :view do
create(:ci_build, :running, environment: 'staging', pipeline: pipeline) create(:ci_build, :running, environment: 'staging', pipeline: pipeline)
end end
let!(:environment) do context 'when environment exists' do
create(:environment, name: 'staging', project: project) let!(:environment) do
end create(:environment, name: 'staging', project: project)
end
it 'shows deployment message' do
expected_text = 'This build is creating a deployment to staging' it 'shows deployment message' do
render expected_text = 'This build is creating a deployment to staging'
render
expect(rendered).to have_css(
'.environment-information', text: expected_text) expect(rendered).to have_css(
'.environment-information', text: expected_text)
end
context 'when it has deployment' do
let!(:deployment) do
create(:deployment, environment: environment)
end
it 'shows that deployment will be overwritten' do
expected_text = 'This build is creating a deployment to staging'
render
expect(rendered).to have_css(
'.environment-information', text: expected_text)
expect(rendered).to have_css(
'.environment-information', text: 'latest deployment')
end
end
end
context 'when environment does not exist' do
it 'shows deployment message' do
expected_text = 'This build is creating a deployment to staging'
render
expect(rendered).to have_css(
'.environment-information', text: expected_text)
expect(rendered).not_to have_css(
'.environment-information', text: 'latest deployment')
end
end end
end end
...@@ -134,6 +164,8 @@ describe 'projects/builds/show', :view do ...@@ -134,6 +164,8 @@ describe 'projects/builds/show', :view do
expect(rendered).to have_css( expect(rendered).to have_css(
'.environment-information', text: expected_text) '.environment-information', text: expected_text)
expect(rendered).not_to have_css(
'.environment-information', text: 'latest deployment')
end end
end end
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