mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-19 01:26:08 +10:00
Merge branch '15527-fix-wiki-page-creation-issue' into 'master'
Fix error when trying to create a wiki page Closes #15527, #15569, #15623, #15630, #15637, #15653, #15870, #16558, #16875, #16987, #17016, https://github.com/gitlabhq/gitlabhq/issues/10317. See merge request !3924
This commit is contained in:
committed by
Yorick Peterse
parent
6f0cadca87
commit
aa664af3dd
@@ -4,6 +4,7 @@ v 8.8.0 (unreleased)
|
||||
|
||||
v 8.7.2
|
||||
- The "New Branch" button is now loaded asynchronously
|
||||
- Fix error 500 when trying to create a wiki page
|
||||
|
||||
v 8.7.1
|
||||
v 8.7.1 (unreleased)
|
||||
|
||||
@@ -40,10 +40,10 @@ class Projects::WikisController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
def update
|
||||
@page = @project_wiki.find_page(params[:id])
|
||||
|
||||
return render('empty') unless can?(current_user, :create_wiki, @project)
|
||||
|
||||
@page = @project_wiki.find_page(params[:id])
|
||||
|
||||
if @page = WikiPages::UpdateService.new(@project, current_user, wiki_params).execute(@page)
|
||||
redirect_to(
|
||||
namespace_project_wiki_path(@project.namespace, @project, @page),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
module WikiPages
|
||||
class CreateService < WikiPages::BaseService
|
||||
def execute
|
||||
page = WikiPage.new(@project.wiki)
|
||||
project_wiki = ProjectWiki.new(@project, current_user)
|
||||
page = WikiPage.new(project_wiki)
|
||||
|
||||
if page.create(@params)
|
||||
execute_hooks(page, 'create')
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
require 'spec_helper'
|
||||
|
||||
feature 'Projects > Wiki > User creates wiki page', feature: true do
|
||||
let(:user) { create(:user) }
|
||||
|
||||
background do
|
||||
project.team << [user, :master]
|
||||
login_as(user)
|
||||
|
||||
visit namespace_project_path(project.namespace, project)
|
||||
click_link 'Wiki'
|
||||
end
|
||||
|
||||
context 'in the user namespace' do
|
||||
let(:project) { create(:project, namespace: user.namespace) }
|
||||
|
||||
context 'when wiki is empty' do
|
||||
scenario 'directly from the wiki home page' do
|
||||
fill_in :wiki_content, with: 'My awesome wiki!'
|
||||
click_button 'Create page'
|
||||
|
||||
expect(page).to have_content('Home')
|
||||
expect(page).to have_content("last edited by #{user.name}")
|
||||
expect(page).to have_content('My awesome wiki!')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when wiki is not empty' do
|
||||
before do
|
||||
WikiPages::CreateService.new(project, user, title: 'home', content: 'Home page').execute
|
||||
end
|
||||
|
||||
scenario 'via the "new wiki page" page', js: true do
|
||||
click_link 'New Page'
|
||||
|
||||
fill_in :new_wiki_path, with: 'foo'
|
||||
click_button 'Create Page'
|
||||
|
||||
fill_in :wiki_content, with: 'My awesome wiki!'
|
||||
click_button 'Create page'
|
||||
|
||||
expect(page).to have_content('Foo')
|
||||
expect(page).to have_content("last edited by #{user.name}")
|
||||
expect(page).to have_content('My awesome wiki!')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'in a group namespace' do
|
||||
let(:project) { create(:project, namespace: create(:group, :public)) }
|
||||
|
||||
context 'when wiki is empty' do
|
||||
scenario 'directly from the wiki home page' do
|
||||
fill_in :wiki_content, with: 'My awesome wiki!'
|
||||
click_button 'Create page'
|
||||
|
||||
expect(page).to have_content('Home')
|
||||
expect(page).to have_content("last edited by #{user.name}")
|
||||
expect(page).to have_content('My awesome wiki!')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when wiki is not empty' do
|
||||
before do
|
||||
WikiPages::CreateService.new(project, user, title: 'home', content: 'Home page').execute
|
||||
end
|
||||
|
||||
scenario 'via the "new wiki page" page', js: true do
|
||||
click_link 'New Page'
|
||||
|
||||
fill_in :new_wiki_path, with: 'foo'
|
||||
click_button 'Create Page'
|
||||
|
||||
fill_in :wiki_content, with: 'My awesome wiki!'
|
||||
click_button 'Create page'
|
||||
|
||||
expect(page).to have_content('Foo')
|
||||
expect(page).to have_content("last edited by #{user.name}")
|
||||
expect(page).to have_content('My awesome wiki!')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,44 @@
|
||||
require 'spec_helper'
|
||||
|
||||
feature 'Projects > Wiki > User updates wiki page', feature: true do
|
||||
let(:user) { create(:user) }
|
||||
|
||||
background do
|
||||
project.team << [user, :master]
|
||||
login_as(user)
|
||||
|
||||
visit namespace_project_path(project.namespace, project)
|
||||
WikiPages::CreateService.new(project, user, title: 'home', content: 'Home page').execute
|
||||
click_link 'Wiki'
|
||||
end
|
||||
|
||||
context 'in the user namespace' do
|
||||
let(:project) { create(:project, namespace: user.namespace) }
|
||||
|
||||
scenario 'the home page' do
|
||||
click_link 'Edit'
|
||||
|
||||
fill_in :wiki_content, with: 'My awesome wiki!'
|
||||
click_button 'Save changes'
|
||||
|
||||
expect(page).to have_content('Home')
|
||||
expect(page).to have_content("last edited by #{user.name}")
|
||||
expect(page).to have_content('My awesome wiki!')
|
||||
end
|
||||
end
|
||||
|
||||
context 'in a group namespace' do
|
||||
let(:project) { create(:project, namespace: create(:group, :public)) }
|
||||
|
||||
scenario 'the home page' do
|
||||
click_link 'Edit'
|
||||
|
||||
fill_in :wiki_content, with: 'My awesome wiki!'
|
||||
click_button 'Save changes'
|
||||
|
||||
expect(page).to have_content('Home')
|
||||
expect(page).to have_content("last edited by #{user.name}")
|
||||
expect(page).to have_content('My awesome wiki!')
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user