diff options
author | Stan Hu <stanhu@gmail.com> | 2018-12-02 07:45:29 -0800 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-12-02 07:45:29 -0800 |
commit | 41734291e1ded7d97f2530e2ae1c5228b2b9fd99 (patch) | |
tree | d62d8d98d6db0678f6da887385ae049e0d14f49d | |
parent | c042c5ab3c4dd3fbe9437d5d5dca78fdc4401b9c (diff) | |
download | gitlab-ce-sh-fix-wiki-edit.tar.gz |
Fix Error 500s when editing Wiki page that doesn't existsh-fix-wiki-edit
-rw-r--r-- | app/controllers/projects/wikis_controller.rb | 5 | ||||
-rw-r--r-- | spec/controllers/projects/wikis_controller_spec.rb | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb index 88dd111132b..77334140def 100644 --- a/app/controllers/projects/wikis_controller.rb +++ b/app/controllers/projects/wikis_controller.rb @@ -39,6 +39,9 @@ class Projects::WikisController < Projects::ApplicationController end def edit + unless @page&.valid? + redirect_to(project_wiki_path(@project, params[:id])) + end end def update @@ -150,6 +153,8 @@ class Projects::WikisController < Projects::ApplicationController def valid_encoding? strong_memoize(:valid_encoding) do + next true unless @page&.content + @page.content.encoding == Encoding::UTF_8 end end diff --git a/spec/controllers/projects/wikis_controller_spec.rb b/spec/controllers/projects/wikis_controller_spec.rb index 6d75152857b..cc344e83415 100644 --- a/spec/controllers/projects/wikis_controller_spec.rb +++ b/spec/controllers/projects/wikis_controller_spec.rb @@ -105,6 +105,15 @@ describe Projects::WikisController do end end + context 'when page does not exist' do + it 'shows the edit page' do + get(:edit, namespace_id: project.namespace, project_id: project, id: 'no page') + + expect(response).to have_http_status(302) + expect(response.body).to include('Edit Page') + end + end + context 'when page content encoding is valid' do render_views |