Commit 38addab7 authored by Mayra Cabrera's avatar Mayra Cabrera

Merge branch 'ph/214480/copyUploadLinks' into 'master'

Fixes upload links not copying as GFM correctly

Closes #214480

See merge request gitlab-org/gitlab!29683
parents c96388ca 3f4255cc
---
title: Fixed copy as GFM not copying upload links
merge_request: 29683
author:
type: fixed
...@@ -50,6 +50,10 @@ module Banzai ...@@ -50,6 +50,10 @@ module Banzai
Addressable::URI.join(Gitlab.config.gitlab.base_url, path).to_s Addressable::URI.join(Gitlab.config.gitlab.base_url, path).to_s
end end
if html_attr.name == 'href'
html_attr.parent.set_attribute('data-link', 'true')
end
html_attr.parent.add_class('gfm') html_attr.parent.add_class('gfm')
end end
......
...@@ -172,6 +172,12 @@ describe 'Copy as GFM', :js do ...@@ -172,6 +172,12 @@ describe 'Copy as GFM', :js do
'![Image](https://example.com/image.png)' '![Image](https://example.com/image.png)'
) )
verify_media_with_partial_path(
'[test.txt](/uploads/a123/image.txt)',
project_media_uri(@project, '/uploads/a123/image.txt')
)
verify_media_with_partial_path( verify_media_with_partial_path(
'![Image](/uploads/a123/image.png)', '![Image](/uploads/a123/image.png)',
......
...@@ -51,6 +51,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -51,6 +51,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(absolute_path) expect(doc.at_css('a')['href']).to eq(absolute_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
end end
...@@ -59,11 +60,13 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -59,11 +60,13 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(relative_path) expect(doc.at_css('a')['href']).to eq(relative_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
doc = filter(nested(link(upload_path))) doc = filter(nested(link(upload_path)))
expect(doc.at_css('a')['href']).to eq(relative_path) expect(doc.at_css('a')['href']).to eq(relative_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
it 'rebuilds relative URL for an image' do it 'rebuilds relative URL for an image' do
...@@ -71,11 +74,13 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -71,11 +74,13 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('img')['src']).to eq(relative_path) expect(doc.at_css('img')['src']).to eq(relative_path)
expect(doc.at_css('img').classes).to include('gfm') expect(doc.at_css('img').classes).to include('gfm')
expect(doc.at_css('img')['data-link']).not_to eq('true')
doc = filter(nested(image(upload_path))) doc = filter(nested(image(upload_path)))
expect(doc.at_css('img')['src']).to eq(relative_path) expect(doc.at_css('img')['src']).to eq(relative_path)
expect(doc.at_css('img').classes).to include('gfm') expect(doc.at_css('img').classes).to include('gfm')
expect(doc.at_css('img')['data-link']).not_to eq('true')
end end
it 'does not modify absolute URL' do it 'does not modify absolute URL' do
...@@ -83,6 +88,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -83,6 +88,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq 'http://example.com' expect(doc.at_css('a')['href']).to eq 'http://example.com'
expect(doc.at_css('a').classes).not_to include('gfm') expect(doc.at_css('a').classes).not_to include('gfm')
expect(doc.at_css('a')['data-link']).not_to eq('true')
end end
it 'supports unescaped Unicode filenames' do it 'supports unescaped Unicode filenames' do
...@@ -91,6 +97,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -91,6 +97,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq("/#{project.full_path}/uploads/%ED%95%9C%EA%B8%80.png") expect(doc.at_css('a')['href']).to eq("/#{project.full_path}/uploads/%ED%95%9C%EA%B8%80.png")
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
it 'supports escaped Unicode filenames' do it 'supports escaped Unicode filenames' do
...@@ -100,6 +107,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -100,6 +107,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('img')['src']).to eq("/#{project.full_path}/uploads/%ED%95%9C%EA%B8%80.png") expect(doc.at_css('img')['src']).to eq("/#{project.full_path}/uploads/%ED%95%9C%EA%B8%80.png")
expect(doc.at_css('img').classes).to include('gfm') expect(doc.at_css('img').classes).to include('gfm')
expect(doc.at_css('img')['data-link']).not_to eq('true')
end end
end end
...@@ -118,6 +126,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -118,6 +126,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(absolute_path) expect(doc.at_css('a')['href']).to eq(absolute_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
end end
...@@ -126,6 +135,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -126,6 +135,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(relative_path) expect(doc.at_css('a')['href']).to eq(relative_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
it 'rewrites the link correctly for subgroup' do it 'rewrites the link correctly for subgroup' do
...@@ -135,6 +145,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -135,6 +145,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(relative_path) expect(doc.at_css('a')['href']).to eq(relative_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
it 'does not modify absolute URL' do it 'does not modify absolute URL' do
...@@ -142,6 +153,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -142,6 +153,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq 'http://example.com' expect(doc.at_css('a')['href']).to eq 'http://example.com'
expect(doc.at_css('a').classes).not_to include('gfm') expect(doc.at_css('a').classes).not_to include('gfm')
expect(doc.at_css('a')['data-link']).not_to eq('true')
end end
end end
...@@ -159,6 +171,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -159,6 +171,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(absolute_path) expect(doc.at_css('a')['href']).to eq(absolute_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
end end
...@@ -178,6 +191,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -178,6 +191,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(absolute_path) expect(doc.at_css('a')['href']).to eq(absolute_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
end end
...@@ -186,6 +200,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -186,6 +200,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(gitlab_root + relative_path) expect(doc.at_css('a')['href']).to eq(gitlab_root + relative_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
end end
...@@ -194,6 +209,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -194,6 +209,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq(relative_path) expect(doc.at_css('a')['href']).to eq(relative_path)
expect(doc.at_css('a').classes).to include('gfm') expect(doc.at_css('a').classes).to include('gfm')
expect(doc.at_css('a')['data-link']).to eq('true')
end end
it 'does not modify absolute URL' do it 'does not modify absolute URL' do
...@@ -201,6 +217,7 @@ describe Banzai::Filter::UploadLinkFilter do ...@@ -201,6 +217,7 @@ describe Banzai::Filter::UploadLinkFilter do
expect(doc.at_css('a')['href']).to eq 'http://example.com' expect(doc.at_css('a')['href']).to eq 'http://example.com'
expect(doc.at_css('a').classes).not_to include('gfm') expect(doc.at_css('a').classes).not_to include('gfm')
expect(doc.at_css('a')['data-link']).not_to eq('true')
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment