# frozen_string_literal: true require 'spec_helper' describe 'User updates wiki page' do let(:user) { create(:user) } before do project.add_maintainer(user) sign_in(user) end context 'when wiki is empty' do before do visit(project_wikis_path(project)) click_link "Create your first page" end context 'in a user namespace' do let(:project) { create(:project, :wiki_repo) } it 'redirects back to the home edit page' do page.within(:css, '.wiki-form .form-actions') do click_on('Cancel') end expect(current_path).to eq project_wiki_path(project, :home) end it 'updates a page that has a path', :js do fill_in(:wiki_title, with: 'one/two/three-test') page.within '.wiki-form' do fill_in(:wiki_content, with: 'wiki content') click_on('Create page') end expect(current_path).to include('one/two/three-test') expect(find('.wiki-pages')).to have_content('three') first(:link, text: 'three').click expect(find('.nav-text')).to have_content('three') click_on('Edit') expect(current_path).to include('one/two/three-test') expect(page).to have_content('Edit Page') fill_in('Content', with: 'Updated Wiki Content') click_on('Save changes') expect(page).to have_content('Updated Wiki Content') end it_behaves_like 'wiki file attachments' end end context 'when wiki is not empty' do let(:project_wiki) { create(:project_wiki, project: project, user: project.creator) } let!(:wiki_page) { create(:wiki_page, wiki: project_wiki, attrs: { title: 'home', content: 'Home page' }) } before do visit(project_wikis_path(project)) click_link('Edit') end context 'in a user namespace' do let(:project) { create(:project, :wiki_repo) } it 'updates a page', :js do # Commit message field should have correct value. expect(page).to have_field('wiki[message]', with: 'Update home') 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 it 'updates the commit message as the title is changed', :js do fill_in(:wiki_title, with: 'Wiki title') expect(page).to have_field('wiki[message]', with: 'Update Wiki title') end it 'does not allow XSS', :js do fill_in(:wiki_title, with: '