debian-mirror-gitlab/spec/features/projects/wiki/markdown_preview_spec.rb

204 lines
8 KiB
Ruby
Raw Normal View History

2016-08-24 12:49:21 +05:30
require 'spec_helper'
2018-11-08 19:23:39 +05:30
describe 'Projects > Wiki > User previews markdown changes', :js do
2016-08-24 12:49:21 +05:30
let(:user) { create(:user) }
2018-10-15 14:42:47 +05:30
let(:project) { create(:project, :wiki_repo, namespace: user.namespace) }
2016-08-24 12:49:21 +05:30
let(:wiki_content) do
<<-HEREDOC
[regular link](regular)
[relative link 1](../relative)
[relative link 2](./relative)
[relative link 3](./e/f/relative)
2018-11-08 19:23:39 +05:30
[spaced link](title with spaces)
2016-08-24 12:49:21 +05:30
HEREDOC
end
2018-11-08 19:23:39 +05:30
before do
2018-11-18 11:00:15 +05:30
project.add_maintainer(user)
2017-09-10 17:25:29 +05:30
sign_in(user)
2019-05-30 16:15:17 +05:30
visit project_path(project)
find('.shortcuts-wiki').click
click_link "Create your first page"
2016-08-24 12:49:21 +05:30
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
2018-03-17 18:26:18 +05:30
find('.add-new-wiki').click
2017-08-17 22:00:37 +05:30
page.within '#modal-new-wiki' do
fill_in :new_wiki_path, with: 'a/b/c/d'
click_button 'Create page'
end
2016-08-24 12:49:21 +05:30
2017-08-17 22:00:37 +05:30
page.within '.wiki-form' do
fill_in :wiki_content, with: wiki_content
click_on "Preview"
end
2016-08-24 12:49:21 +05:30
expect(page).to have_content("regular link")
2017-09-10 17:25:29 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/e/f/relative\">relative link 3</a>")
2018-11-08 19:23:39 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
2016-08-24 12:49:21 +05:30
end
end
context "when there are spaces in the page name" do
it "rewrites relative links as expected" do
2017-08-17 22:00:37 +05:30
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
2016-08-24 12:49:21 +05:30
2017-08-17 22:00:37 +05:30
page.within '.wiki-form' do
fill_in :wiki_content, with: wiki_content
click_on "Preview"
end
2016-08-24 12:49:21 +05:30
expect(page).to have_content("regular link")
2017-09-10 17:25:29 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
2018-11-08 19:23:39 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
2016-08-24 12:49:21 +05:30
end
end
context "when there are hyphens in the page name" do
it "rewrites relative links as expected" do
2017-08-17 22:00:37 +05:30
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
2017-09-10 17:25:29 +05:30
2017-08-17 22:00:37 +05:30
page.within '.wiki-form' do
fill_in :wiki_content, with: wiki_content
click_on "Preview"
end
2016-08-24 12:49:21 +05:30
expect(page).to have_content("regular link")
2017-09-10 17:25:29 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
2018-11-08 19:23:39 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
2016-08-24 12:49:21 +05:30
end
end
end
context "while editing a wiki page" do
def create_wiki_page(path)
2018-03-17 18:26:18 +05:30
find('.add-new-wiki').click
2017-08-17 22:00:37 +05:30
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
2016-08-24 12:49:21 +05:30
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")
2017-09-10 17:25:29 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/e/f/relative\">relative link 3</a>")
2018-11-08 19:23:39 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
2016-08-24 12:49:21 +05:30
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")
2017-09-10 17:25:29 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
2018-11-08 19:23:39 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
2016-08-24 12:49:21 +05:30
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")
2017-09-10 17:25:29 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
2018-11-08 19:23:39 +05:30
expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/title%20with%20spaces\">spaced link</a>")
2016-08-24 12:49:21 +05:30
end
end
2018-11-20 20:47:30 +05:30
context 'when rendering the preview' do
it 'renders content with CommonMark' do
create_wiki_page 'a-page/b-page/c-page/common-mark'
click_link 'Edit'
fill_in :wiki_content, with: "1. one\n - sublist\n"
click_on "Preview"
2019-05-30 16:15:17 +05:30
# the above generates two seperate lists (not embedded) in CommonMark
2018-11-20 20:47:30 +05:30
expect(page).to have_content("sublist")
expect(page).not_to have_xpath("//ol//li//ul")
end
end
2016-08-24 12:49:21 +05:30
end
2018-11-08 19:23:39 +05:30
it "does not linkify double brackets inside code blocks as expected" do
click_link 'New page'
page.within '#modal-new-wiki' do
fill_in :new_wiki_path, with: 'linkify_test'
click_button 'Create page'
end
page.within '.wiki-form' do
fill_in :wiki_content, with: <<-HEREDOC
`[[do_not_linkify]]`
```
[[also_do_not_linkify]]
```
HEREDOC
click_on "Preview"
end
expect(page).to have_content("do_not_linkify")
expect(page.html).to include('[[do_not_linkify]]')
expect(page.html).to include('[[also_do_not_linkify]]')
end
2016-08-24 12:49:21 +05:30
end