Files
old-holivud2/spec/helpers/buttons_helper_spec.rb
2020-05-31 22:38:19 +02:00

172 lines
7.5 KiB
Ruby

require "rails_helper"
RSpec.describe ButtonsHelper do
describe ".link_to_edl_file_download" do
before :each do
helper.instance_variable_set(:@virtual_path, "video_analyses.show")
end
context "when video has edl_file" do
let(:edl_file) { double(:edl_file, signed_id: "signed_id", filename: "filename", attached?: true) }
let(:video) { instance_double(Video, edl_file: edl_file) }
it "returns HTML anchor tag with link to EDL file download" do
expect(helper.link_to_edl_file_download(video)).to eq <<-HTML.gsub(/\n/, '').gsub(/\s+</, '<')
<a class="dropdown-item" target="_blank" href="/rails/active_storage/blobs/signed_id/filename?disposition=inline">
<i class="fa fa-file-excel-o"></i> Download EDL</a>
HTML
end
end
context "when video does not have edl_file" do
let(:edl_file) { double(:edl_file, attached?: false) }
let(:video) { instance_double(Video, edl_file: edl_file) }
it "returns disabled HTML anchor tag" do
expect(helper.link_to_edl_file_download(video)).to eq <<-HTML.gsub(/\n/, '').gsub(/\s+</, '<')
<a class="dropdown-item">
<i class="fa fa-file-excel-o"></i> Download EDL</a>
HTML
end
end
end
describe ".link_to_graphics_only_edl_file_download" do
before :each do
helper.instance_variable_set(:@virtual_path, "video_analyses.show")
end
context "when video has graphics_only_edl_file" do
let(:graphics_only_edl_file) { double(:graphics_only_edl_file, signed_id: "signed_id", filename: "filename", attached?: true) }
let(:video) { instance_double(Video, graphics_only_edl_file: graphics_only_edl_file) }
it "returns HTML anchor tag with link to EDL file download" do
expect(helper.link_to_graphics_only_edl_file_download(video)).to eq <<-HTML.gsub(/\n/, '').gsub(/\s+</, '<')
<a class="dropdown-item" target="_blank" href="/rails/active_storage/blobs/signed_id/filename?disposition=inline">
<i class="fa fa-file-excel-o"></i> Download Graphics Only EDL</a>
HTML
end
end
context "when video does not have graphics_only_edl_file" do
let(:graphics_only_edl_file) { double(:graphics_only_edl_file, attached?: false) }
let(:video) { instance_double(Video, graphics_only_edl_file: graphics_only_edl_file) }
it "returns disabled HTML anchor tag" do
expect(helper.link_to_graphics_only_edl_file_download(video)).to eq <<-HTML.gsub(/\n/, '').gsub(/\s+</, '<')
<a class="dropdown-item">
<i class="fa fa-file-excel-o"></i> Download Graphics Only EDL</a>
HTML
end
end
end
describe ".link_to_audio_only_edl_file_download" do
before :each do
helper.instance_variable_set(:@virtual_path, "video_analyses.show")
end
context "when video has audio_only_edl_file" do
let(:audio_only_edl_file) { double(:audio_only_edl_file, signed_id: "signed_id", filename: "filename", attached?: true) }
let(:video) { instance_double(Video, audio_only_edl_file: audio_only_edl_file) }
it "returns HTML anchor tag with link to EDL file download" do
expect(helper.link_to_audio_only_edl_file_download(video)).to eq <<-HTML.gsub(/\n/, '').gsub(/\s+</, '<')
<a class="dropdown-item" target="_blank" href="/rails/active_storage/blobs/signed_id/filename?disposition=inline">
<i class="fa fa-file-excel-o"></i> Download Audio Only EDL</a>
HTML
end
end
context "when video does not have audio_only_edl_file" do
let(:audio_only_edl_file) { double(:audio_only_edl_file, attached?: false) }
let(:video) { instance_double(Video, audio_only_edl_file: audio_only_edl_file) }
it "returns disabled HTML anchor tag" do
expect(helper.link_to_audio_only_edl_file_download(video)).to eq <<-HTML.gsub(/\n/, '').gsub(/\s+</, '<')
<a class="dropdown-item">
<i class="fa fa-file-excel-o"></i> Download Audio Only EDL</a>
HTML
end
end
end
describe "#button_to_release_report" do
context "when reports have not been published" do
let(:video) { build(:video) }
before :each do
helper.instance_variable_set(:@virtual_path, "videos.video")
end
it "returns html for disabled release report button" do
html = helper.button_to_release_report(video, content: "button content", disabled: true)
expect(html).to match "Generating..."
end
end
context "for a Discovery client" do
let(:video) { build(:video, id: 45, project: build(:project, :discovery_client)) }
it "returns html for Discovery reports" do
html = helper.button_to_release_report(video, content: "button content")
expect(html).to match "Download Discovery Documents"
expect(html).to match "Production Elements Log"
expect(html).to match "en/videos/45/video_reports.xlsx\\?type=discovery"
expect(html).to match "GFX Cue List"
expect(html).to match "en/videos/45/graphic_reports.xlsx\\?type=discovery"
expect(html).to match "BiG Music Cue Sheet"
expect(html).to match "en/videos/45/audio_reports.xlsx\\?type=big"
expect(html).to match "Music Cue Sheet"
expect(html).to match "en/videos/45/audio_reports.xlsx\\?type=discovery"
expect(html).to match "Issues and Concerns Report"
expect(html).to match "en/videos/45/issues_and_concerns_reports.xlsx"
end
end
context "for a Nat Geo client" do
let(:video) { build(:video, id: 45, project: build(:project, :nat_geo_client)) }
it "returns html for Net Geo reports" do
html = helper.button_to_release_report(video, content: "button content")
expect(html).to match "Download Nat Geo Documents"
expect(html).to match "Legal Binder Log"
expect(html).to match "en/videos/45/video_reports.xlsx\\?type=nat_geo"
expect(html).to match "Text Graphics Log"
expect(html).to match "en/videos/45/graphic_reports.xlsx\\?type=nat_geo"
expect(html).to match "BiG Music Cue Sheet"
expect(html).to match "en/videos/45/audio_reports.xlsx\\?type=big"
expect(html).to match "Music Cue Sheet"
expect(html).to match "en/videos/45/audio_reports.xlsx\\?type=nat_geo"
expect(html).to match "Original Music Log"
expect(html).to match "en/videos/45/audio_reports.xlsx\\?type=nat_geo-original"
expect(html).to match "Issues and Concerns Report"
expect(html).to match "en/videos/45/issues_and_concerns_reports.xlsx"
end
end
context "for any other client" do
let(:video) { build(:video, id: 45, project: build(:project, client_name: "Other")) }
it "returns html for Discovery reports" do
html = helper.button_to_release_report(video, content: "button content")
expect(html).to match "Download Discovery Documents"
expect(html).to match "Production Elements Log"
expect(html).to match "en/videos/45/video_reports.xlsx\\?type=discovery"
expect(html).to match "GFX Cue List"
expect(html).to match "en/videos/45/graphic_reports.xlsx\\?type=discovery"
expect(html).to match "BiG Music Cue Sheet"
expect(html).to match "en/videos/45/audio_reports.xlsx\\?type=big"
expect(html).to match "Music Cue Sheet"
expect(html).to match "en/videos/45/audio_reports.xlsx\\?type=discovery"
expect(html).to match "Issues and Concerns Report"
expect(html).to match "en/videos/45/issues_and_concerns_reports.xlsx"
end
end
end
end