require 'spec_helper' feature 'Projects > Wiki > User previews markdown changes', feature: true, js: true do let(:user) { create(:user) } let(:project) { create(:project, namespace: user.namespace) } let(:wiki_content) do <<-HEREDOC [regular link](regular) [relative link 1](../relative) [relative link 2](./relative) [relative link 3](./e/f/relative) HEREDOC end background do project.team << [user, :master] login_as(user) visit namespace_project_path(project.namespace, project) find('.shortcuts-wiki').trigger('click') WikiPages::CreateService.new(project, user, title: 'home', content: 'Home page').execute end context "while creating a new wiki page" do context "when there are no spaces or hyphens in the page name" do it "rewrites relative links as expected" do find('.add-new-wiki').trigger('click') page.within '#modal-new-wiki' do fill_in :new_wiki_path, with: 'a/b/c/d' click_button 'Create page' end page.within '.wiki-form' do fill_in :wiki_content, with: wiki_content click_on "Preview" end expect(page).to have_content("regular link") expect(page.html).to include("regular link") expect(page.html).to include("relative link 1") expect(page.html).to include("relative link 2") expect(page.html).to include("relative link 3") end end context "when there are spaces in the page name" do it "rewrites relative links as expected" do click_link 'New page' page.within '#modal-new-wiki' do fill_in :new_wiki_path, with: 'a page/b page/c page/d page' click_button 'Create page' end page.within '.wiki-form' do fill_in :wiki_content, with: wiki_content click_on "Preview" end expect(page).to have_content("regular link") expect(page.html).to include("regular link") expect(page.html).to include("relative link 1") expect(page.html).to include("relative link 2") expect(page.html).to include("relative link 3") end end context "when there are hyphens in the page name" do it "rewrites relative links as expected" do click_link 'New page' page.within '#modal-new-wiki' do fill_in :new_wiki_path, with: 'a-page/b-page/c-page/d-page' click_button 'Create page' end page.within '.wiki-form' do fill_in :wiki_content, with: wiki_content click_on "Preview" end expect(page).to have_content("regular link") expect(page.html).to include("regular link") expect(page.html).to include("relative link 1") expect(page.html).to include("relative link 2") expect(page.html).to include("relative link 3") end end end context "while editing a wiki page" do def create_wiki_page(path) find('.add-new-wiki').trigger('click') page.within '#modal-new-wiki' do fill_in :new_wiki_path, with: path click_button 'Create page' end page.within '.wiki-form' do fill_in :wiki_content, with: 'content' click_on "Create page" end end context "when there are no spaces or hyphens in the page name" do it "rewrites relative links as expected" do create_wiki_page 'a/b/c/d' click_link 'Edit' fill_in :wiki_content, with: wiki_content click_on "Preview" expect(page).to have_content("regular link") expect(page.html).to include("regular link") expect(page.html).to include("relative link 1") expect(page.html).to include("relative link 2") expect(page.html).to include("relative link 3") end end context "when there are spaces in the page name" do it "rewrites relative links as expected" do create_wiki_page 'a page/b page/c page/d page' click_link 'Edit' fill_in :wiki_content, with: wiki_content click_on "Preview" expect(page).to have_content("regular link") expect(page.html).to include("regular link") expect(page.html).to include("relative link 1") expect(page.html).to include("relative link 2") expect(page.html).to include("relative link 3") end end context "when there are hyphens in the page name" do it "rewrites relative links as expected" do create_wiki_page 'a-page/b-page/c-page/d-page' click_link 'Edit' fill_in :wiki_content, with: wiki_content click_on "Preview" expect(page).to have_content("regular link") expect(page.html).to include("regular link") expect(page.html).to include("relative link 1") expect(page.html).to include("relative link 2") expect(page.html).to include("relative link 3") end end end end