Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-10-03 21:06:11 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-10-03 21:06:11 +0300
commit25521def84a6987fe9d4265b560e930bfb32c195 (patch)
tree711e001ea65f76a9c2eb034c4531bda325af84f3 /spec/lib/banzai
parent9a1c5456747a7b5b218b8b44e4b43396bf7fd705 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/banzai')
-rw-r--r--spec/lib/banzai/filter/video_link_filter_spec.rb94
1 files changed, 70 insertions, 24 deletions
diff --git a/spec/lib/banzai/filter/video_link_filter_spec.rb b/spec/lib/banzai/filter/video_link_filter_spec.rb
index b5be204d680..332817d6585 100644
--- a/spec/lib/banzai/filter/video_link_filter_spec.rb
+++ b/spec/lib/banzai/filter/video_link_filter_spec.rb
@@ -12,52 +12,98 @@ describe Banzai::Filter::VideoLinkFilter do
end
def link_to_image(path)
- %(<img src="#{path}" />)
+ return '<img/>' if path.nil?
+
+ %(<img src="#{path}"/>)
end
let(:project) { create(:project, :repository) }
- context 'when the element src has a video extension' do
- UploaderHelper::SAFE_VIDEO_EXT.each do |ext|
- it "replaces the image tag 'path/video.#{ext}' with a video tag" do
- container = filter(link_to_image("/path/video.#{ext}")).children.first
+ shared_examples 'a video element' do
+ let(:image) { link_to_image(src) }
- expect(container.name).to eq 'div'
- expect(container['class']).to eq 'video-container'
+ it 'replaces the image tag with a video tag' do
+ container = filter(image).children.first
- video, paragraph = container.children
+ expect(container.name).to eq 'div'
+ expect(container['class']).to eq 'video-container'
- expect(video.name).to eq 'video'
- expect(video['src']).to eq "/path/video.#{ext}"
+ video, paragraph = container.children
- expect(paragraph.name).to eq 'p'
+ expect(video.name).to eq 'video'
+ expect(video['src']).to eq src
- link = paragraph.children.first
+ expect(paragraph.name).to eq 'p'
- expect(link.name).to eq 'a'
- expect(link['href']).to eq "/path/video.#{ext}"
- expect(link['target']).to eq '_blank'
- end
+ link = paragraph.children.first
+
+ expect(link.name).to eq 'a'
+ expect(link['href']).to eq src
+ expect(link['target']).to eq '_blank'
end
end
- context 'when the element src is an image' do
+ shared_examples 'an unchanged element' do |ext|
it 'leaves the document unchanged' do
- element = filter(link_to_image('/path/my_image.jpg')).children.first
+ element = filter(link_to_image(src)).children.first
expect(element.name).to eq 'img'
- expect(element['src']).to eq '/path/my_image.jpg'
+ expect(element['src']).to eq src
end
end
- context 'when asset proxy is enabled' do
- it 'uses the correct src' do
- stub_asset_proxy_setting(enabled: true)
+ context 'when the element src has a video extension' do
+ Gitlab::FileTypeDetection::SAFE_VIDEO_EXT.each do |ext|
+ it_behaves_like 'a video element' do
+ let(:src) { "/path/video.#{ext}" }
+ end
+
+ it_behaves_like 'a video element' do
+ let(:src) { "/path/video.#{ext.upcase}" }
+ end
+ end
+ end
+
+ context 'when the element has no src attribute' do
+ let(:src) { nil }
+
+ it_behaves_like 'an unchanged element'
+ end
+
+ context 'when the element src is an image' do
+ let(:src) { '/path/my_image.jpg' }
+
+ it_behaves_like 'an unchanged element'
+ end
+
+ context 'when the element src has an invalid file extension' do
+ let(:src) { '/path/my_video.somemp4' }
+
+ it_behaves_like 'an unchanged element'
+ end
+
+ context 'when data-canonical-src is empty' do
+ let(:image) { %(<img src="#{src}" data-canonical-src=""/>) }
+ context 'and src is a video' do
+ let(:src) { '/path/video.mp4' }
+
+ it_behaves_like 'a video element'
+ end
+
+ context 'and src is an image' do
+ let(:src) { '/path/my_image.jpg' }
+
+ it_behaves_like 'an unchanged element'
+ end
+ end
+
+ context 'when data-canonical-src is set' do
+ it 'uses the correct src' do
proxy_src = 'https://assets.example.com/6d8b63'
canonical_src = 'http://example.com/test.mp4'
- image = %(<img src="#{proxy_src}" data-canonical-src="#{canonical_src}" />)
- container = filter(image, asset_proxy_enabled: true).children.first
+ image = %(<img src="#{proxy_src}" data-canonical-src="#{canonical_src}"/>)
+ container = filter(image).children.first
expect(container['class']).to eq 'video-container'