Added tests for the variables controller #update action

This commit is contained in:
Jose Ivan Vargas 2017-02-02 13:35:15 -06:00
parent d9d417d405
commit f3aaf906d4
2 changed files with 29 additions and 3 deletions

View File

@ -15,10 +15,11 @@ class Projects::VariablesController < Projects::ApplicationController
@variable = @project.variables.find(params[:id])
if @variable.update_attributes(project_params)
redirect_to namespace_project_settings_ci_cd_path(project.namespace, project), notice: 'Variable was successfully updated.'
flash[:notice] = 'Variables were successfully updated.'
else
render action: "show"
flash[:alert] = @variable.errors.full_messages.join(',').html_safe
end
redirect_to namespace_project_settings_ci_cd_path(project.namespace, project)
end
def create

View File

@ -20,7 +20,7 @@ describe Projects::VariablesController do
end
context 'variable is invalid' do
it 'shows a failure flash message' do
it 'shows an alert flash message' do
post :create, namespace_id: project.namespace.to_param, project_id: project.to_param,
variable: { key: "..one", value: "two" }
expect(flash[:alert]).to include 'Key can contain only letters, digits and \'_\'.'
@ -28,4 +28,29 @@ describe Projects::VariablesController do
end
end
end
describe 'POST #update' do
let(:variable) { create(:ci_variable) }
context 'updating a variable with valid characters' do
before do
variable.gl_project_id = project.id
project.variables << variable
end
it 'shows a success flash message' do
post :update, namespace_id: project.namespace.to_param, project_id: project.to_param,
id: variable.id, variable: { key: variable.key, value: 'two' }
expect(flash[:notice]).to include 'Variables were successfully updated.'
expect(response).to redirect_to(namespace_project_settings_ci_cd_path(project.namespace, project))
end
it 'shows an alert flash message' do
post :update, namespace_id: project.namespace.to_param, project_id: project.to_param,
id: variable.id, variable: { key: '?', value: variable.value }
expect(flash[:alert]).to include 'Key can contain only letters, digits and \'_\'.'
expect(response).to redirect_to(namespace_project_settings_ci_cd_path(project.namespace, project))
end
end
end
end