BigW Consortium Gitlab

user_creates_wiki_page_spec.rb 3.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
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

14
  context 'in the user namespace' do
15 16 17
    let(:project) { create(:project, namespace: user.namespace) }

    context 'when wiki is empty' do
18
      scenario 'directly from the wiki home page' do
19 20 21
        fill_in :wiki_content, with: 'My awesome wiki!'
        click_button 'Create page'

22 23
        expect(page).to have_content('Home')
        expect(page).to have_content("last edited by #{user.name}")
24 25 26 27 28 29 30 31 32
        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

33 34 35
      context 'via the "new wiki page" page' do
        scenario 'when the wiki page has a single word name', js: true do
          click_link 'New Page'
36

37 38
          fill_in :new_wiki_path, with: 'foo'
          click_button 'Create Page'
39

40 41
          fill_in :wiki_content, with: 'My awesome wiki!'
          click_button 'Create page'
42

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
          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

        scenario 'when the wiki page has spaces in the name', js: true do
          click_link 'New Page'

          fill_in :new_wiki_path, with: 'Spaces in the name'
          click_button 'Create Page'

          fill_in :wiki_content, with: 'My awesome wiki!'
          click_button 'Create page'

          expect(page).to have_content('Spaces in the name')
          expect(page).to have_content("last edited by #{user.name}")
          expect(page).to have_content('My awesome wiki!')
        end

        scenario 'when the wiki page has hyphens in the name', js: true do
          click_link 'New Page'

          fill_in :new_wiki_path, with: 'hyphens-in-the-name'
          click_button 'Create Page'

          fill_in :wiki_content, with: 'My awesome wiki!'
          click_button 'Create page'

          expect(page).to have_content('Hyphens in the name')
          expect(page).to have_content("last edited by #{user.name}")
          expect(page).to have_content('My awesome wiki!')
        end
75 76 77 78
      end
    end
  end

79
  context 'in a group namespace' do
80 81 82
    let(:project) { create(:project, namespace: create(:group, :public)) }

    context 'when wiki is empty' do
83
      scenario 'directly from the wiki home page' do
84 85 86
        fill_in :wiki_content, with: 'My awesome wiki!'
        click_button 'Create page'

87 88
        expect(page).to have_content('Home')
        expect(page).to have_content("last edited by #{user.name}")
89 90 91 92 93 94 95 96 97
        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

98
      scenario 'via the "new wiki page" page', js: true do
99 100 101 102 103 104 105 106
        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'

107 108
        expect(page).to have_content('Foo')
        expect(page).to have_content("last edited by #{user.name}")
109 110 111 112 113
        expect(page).to have_content('My awesome wiki!')
      end
    end
  end
end