diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-03 21:06:11 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-03 21:06:11 +0300 |
commit | 25521def84a6987fe9d4265b560e930bfb32c195 (patch) | |
tree | 711e001ea65f76a9c2eb034c4531bda325af84f3 /spec/lib/banzai | |
parent | 9a1c5456747a7b5b218b8b44e4b43396bf7fd705 (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.rb | 94 |
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' |