diff options
Diffstat (limited to 'spec/features/projects/wiki/user_creates_wiki_page_spec.rb')
-rw-r--r-- | spec/features/projects/wiki/user_creates_wiki_page_spec.rb | 227 |
1 files changed, 130 insertions, 97 deletions
diff --git a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb index 9d66f482c8d..e72b7dc0dd5 100644 --- a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb @@ -1,38 +1,75 @@ require 'spec_helper' -feature 'Projects > Wiki > User creates wiki page', :js do +describe 'User creates wiki page' do let(:user) { create(:user) } - background do - project.team << [user, :master] + before do + project.add_master(user) sign_in(user) - visit project_path(project) + visit(project_wikis_path(project)) end - context 'in the user namespace' do - let(:project) { create(:project, namespace: user.namespace) } + context 'when wiki is empty' do + context 'in a user namespace' do + let(:project) { create(:project, namespace: user.namespace) } - context 'when wiki is empty' do - before do - find('.shortcuts-wiki').trigger('click') + it 'shows validation error message' do + page.within('.wiki-form') do + fill_in(:wiki_content, with: '') + click_on('Create page') + end + + expect(page).to have_content('The form contains the following error:') + expect(page).to have_content("Content can't be blank") + + page.within('.wiki-form') do + fill_in(:wiki_content, with: '[link test](test)') + click_on('Create page') + end + + expect(page).to have_content('Home') + expect(page).to have_content('link test') + + click_link('link test') + + expect(page).to have_content('Create Page') + end + + it 'shows non-escaped link in the pages list', :js do + click_link('New page') + + page.within('#modal-new-wiki') do + fill_in(:new_wiki_path, with: 'one/two/three-test') + click_on('Create page') + end + + 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(page).to have_xpath("//a[@href='/#{project.full_path}/wikis/one/two/three-test']") end - scenario 'commit message field has value "Create home"' do + it 'has "Create home" as a commit message' do expect(page).to have_field('wiki[message]', with: 'Create home') end - scenario 'directly from the wiki home page' do - fill_in :wiki_content, with: 'My awesome wiki!' - page.within '.wiki-form' do - click_button 'Create page' + it 'creates a page from the home page' do + fill_in(:wiki_content, with: 'My awesome wiki!') + + page.within('.wiki-form') do + click_button('Create page') end + 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 - scenario 'creates ASCII wiki with LaTeX blocks' do + it 'creates ASCII wiki with LaTeX blocks', :js do stub_application_setting(plantuml_url: 'http://localhost', plantuml_enabled: true) ascii_content = <<~MD @@ -54,10 +91,10 @@ feature 'Projects > Wiki > User creates wiki page', :js do MD find('#wiki_format option[value=asciidoc]').select_option - fill_in :wiki_content, with: ascii_content + fill_in(:wiki_content, with: ascii_content) - page.within '.wiki-form' do - click_button 'Create page' + page.within('.wiki-form') do + click_button('Create page') end page.within '.wiki' do @@ -67,27 +104,49 @@ feature 'Projects > Wiki > User creates wiki page', :js do end end - context 'when wiki is not empty' do - before do - WikiPages::CreateService.new(project, user, title: 'home', content: 'Home page').execute - find('.shortcuts-wiki').trigger('click') + context 'in a group namespace', :js do + let(:project) { create(:project, namespace: create(:group, :public)) } + + it 'has "Create home" as a commit message' do + expect(page).to have_field('wiki[message]', with: 'Create home') + end + + it 'creates a page from from the home page' do + page.within('.wiki-form') do + fill_in(:wiki_content, with: 'My awesome wiki!') + click_button('Create page') + end + + 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 + + context 'when wiki is not empty', :js do + before do + create(:wiki_page, wiki: create(:project, namespace: user.namespace).wiki, attrs: { title: 'home', content: 'Home page' }) + end + + context 'in a user namespace' do + let(:project) { create(:project, namespace: user.namespace) } context 'via the "new wiki page" page' do - scenario 'when the wiki page has a single word name' do - click_link 'New page' + it 'creates a page with a single word' do + click_link('New page') - page.within '#modal-new-wiki' do - fill_in :new_wiki_path, with: 'foo' - click_button 'Create page' + page.within('#modal-new-wiki') do + fill_in(:new_wiki_path, with: 'foo') + click_button('Create page') end # Commit message field should have correct value. expect(page).to have_field('wiki[message]', with: 'Create foo') - page.within '.wiki-form' do - fill_in :wiki_content, with: 'My awesome wiki!' - click_button 'Create page' + page.within('.wiki-form') do + fill_in(:wiki_content, with: 'My awesome wiki!') + click_button('Create page') end expect(page).to have_content('Foo') @@ -95,20 +154,20 @@ feature 'Projects > Wiki > User creates wiki page', :js do expect(page).to have_content('My awesome wiki!') end - scenario 'when the wiki page has spaces in the name' do - click_link 'New page' + it 'creates a page with spaces in the name' do + click_link('New page') - page.within '#modal-new-wiki' do - fill_in :new_wiki_path, with: 'Spaces in the name' - click_button 'Create page' + page.within('#modal-new-wiki') do + fill_in(:new_wiki_path, with: 'Spaces in the name') + click_button('Create page') end # Commit message field should have correct value. expect(page).to have_field('wiki[message]', with: 'Create spaces in the name') - page.within '.wiki-form' do - fill_in :wiki_content, with: 'My awesome wiki!' - click_button 'Create page' + page.within('.wiki-form') do + fill_in(:wiki_content, with: 'My awesome wiki!') + click_button('Create page') end expect(page).to have_content('Spaces in the name') @@ -116,20 +175,20 @@ feature 'Projects > Wiki > User creates wiki page', :js do expect(page).to have_content('My awesome wiki!') end - scenario 'when the wiki page has hyphens in the name' do - click_link 'New page' + it 'creates a page with hyphens in the name' do + click_link('New page') - page.within '#modal-new-wiki' do - fill_in :new_wiki_path, with: 'hyphens-in-the-name' - click_button 'Create page' + page.within('#modal-new-wiki') do + fill_in(:new_wiki_path, with: 'hyphens-in-the-name') + click_button('Create page') end # Commit message field should have correct value. expect(page).to have_field('wiki[message]', with: 'Create hyphens in the name') - page.within '.wiki-form' do - fill_in :wiki_content, with: 'My awesome wiki!' - click_button 'Create page' + page.within('.wiki-form') do + fill_in(:wiki_content, with: 'My awesome wiki!') + click_button('Create page') end expect(page).to have_content('Hyphens in the name') @@ -138,73 +197,47 @@ feature 'Projects > Wiki > User creates wiki page', :js do end end - scenario 'content has autocomplete' do - click_link 'New page' + it 'shows the autocompletion dropdown' do + click_link('New page') - page.within '#modal-new-wiki' do - fill_in :new_wiki_path, with: 'test-autocomplete' - click_button 'Create page' + page.within('#modal-new-wiki') do + fill_in(:new_wiki_path, with: 'test-autocomplete') + click_button('Create page') end - page.within '.wiki-form' do + page.within('.wiki-form') do find('#wiki_content').native.send_keys('') - fill_in :wiki_content, with: '@' + fill_in(:wiki_content, with: '@') end expect(page).to have_selector('.atwho-view') end end - end - - context 'in a group namespace' do - let(:project) { create(:project, namespace: create(:group, :public)) } - context 'when wiki is empty' do - before do - find('.shortcuts-wiki').trigger('click') - end - - scenario 'commit message field has value "Create home"' do - expect(page).to have_field('wiki[message]', with: 'Create home') - end + context 'in a group namespace' do + let(:project) { create(:project, namespace: create(:group, :public)) } - scenario 'directly from the wiki home page' do - fill_in :wiki_content, with: 'My awesome wiki!' - page.within '.wiki-form' do - click_button 'Create page' - end - - 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 - find('.shortcuts-wiki').trigger('click') - end + context 'via the "new wiki page" page' do + it 'creates a page' do + click_link('New page') - scenario 'via the "new wiki page" page' do - click_link 'New page' + page.within('#modal-new-wiki') do + fill_in(:new_wiki_path, with: 'foo') + click_button('Create page') + end - page.within '#modal-new-wiki' do - fill_in :new_wiki_path, with: 'foo' - click_button 'Create page' - end + # Commit message field should have correct value. + expect(page).to have_field('wiki[message]', with: 'Create foo') - # Commit message field should have correct value. - expect(page).to have_field('wiki[message]', with: 'Create foo') + page.within('.wiki-form') do + fill_in(:wiki_content, with: 'My awesome wiki!') + click_button('Create page') + end - page.within '.wiki-form' do - 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 - - 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 |