75 lines
2.3 KiB
Ruby
75 lines
2.3 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe VideoAnalysisService do
|
|
let(:project) { create(:project) }
|
|
let(:video_analysis) { VideoAnalysis.new(video, false) }
|
|
let(:audio_analysis) { AudioAnalysis.new(video) }
|
|
let(:edl_event_gateway) { instance_double(EdlEventGateway, edl_events: []) }
|
|
|
|
before :each do
|
|
allow(EdlEventGateway).to receive(:new).and_return(edl_event_gateway)
|
|
end
|
|
|
|
describe "#presenter" do
|
|
context "when video has graphics only EDL" do
|
|
let(:video) { create(:video, :with_graphics_only_edl_file, project: project, edl_timecode_start: "01:00:55:00") }
|
|
|
|
it "fetches all edl events" do
|
|
subject.presenter(video, video_analysis, audio_analysis)
|
|
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
|
instance_of(FilesForRequest),
|
|
"00:00:00:00",
|
|
nil,
|
|
)
|
|
end
|
|
|
|
context "when edl_timecode_start not present" do
|
|
it "fetches offset then all graphics EDL events" do
|
|
video.edl_timecode_start = nil
|
|
allow(EdlEventGateway).to receive(:new).and_return(instance_double(EdlEventGateway, edl_timecode_start: "01:00:55:00", edl_events: []))
|
|
|
|
subject.presenter(video, video_analysis, audio_analysis)
|
|
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
|
instance_of(FilesForRequest),
|
|
"00:00:00:00",
|
|
"00:00:00:00",
|
|
)
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
|
instance_of(GraphicsFilesForRequest),
|
|
"00:00:00:00",
|
|
nil,
|
|
)
|
|
end
|
|
end
|
|
|
|
context "when edl_timecode_start present" do
|
|
it "fetches all graphics EDL events using edl_timecode_start" do
|
|
subject.presenter(video, video_analysis, audio_analysis)
|
|
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
|
instance_of(GraphicsFilesForRequest),
|
|
"00:00:00:00",
|
|
nil,
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
context "when video missing graphics only EDL" do
|
|
let(:video) { create(:video, project: project) }
|
|
|
|
it "does not fetch all graphics EDL events" do
|
|
subject.presenter(video, video_analysis, audio_analysis)
|
|
|
|
expect(EdlEventGateway).not_to have_received(:new).with(
|
|
instance_of(GraphicsFilesForRequest),
|
|
"00:00:00:00",
|
|
nil
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|