Initial commit
This commit is contained in:
265
spec/models/edl_event_gateway_spec.rb
Normal file
265
spec/models/edl_event_gateway_spec.rb
Normal file
@@ -0,0 +1,265 @@
|
||||
require "rails_helper"
|
||||
|
||||
RSpec.describe EdlEventGateway do
|
||||
let(:files_for_request) do
|
||||
instance_double(FilesForRequest,
|
||||
file_object_name: "file_object_name",
|
||||
edl_file_object_name: "edl_file_object_name",
|
||||
aws_bucket_name: "aws_bucket_name",
|
||||
start_timecode_offset: nil,
|
||||
job_id: "video_analysis_uid",
|
||||
)
|
||||
end
|
||||
|
||||
describe "#edl_events" do
|
||||
it "filters edl events by channel_filter" do
|
||||
video_event = BrayniacAI::EdlParseResult.new({
|
||||
"channel" => "V",
|
||||
"start_time" => 0,
|
||||
"timecode_in" => "00:00:00:00",
|
||||
"timecode_out" => "00:00:01:00",
|
||||
"duration" => 1,
|
||||
"source_file_name" => "my_file.mp4",
|
||||
"clip_name" => "my_clip.mp4",
|
||||
"description" => "This is a great clip",
|
||||
"matches" => [1, 2],
|
||||
})
|
||||
audio_event = BrayniacAI::EdlParseResult.new({
|
||||
"channel" => "A1",
|
||||
"start_time" => 0,
|
||||
"timecode_in" => "00:00:00:00",
|
||||
"timecode_out" => "00:00:01:00",
|
||||
"duration" => 1,
|
||||
"source_file_name" => "my_file.mp3",
|
||||
"clip_name" => "my_clip.mp3",
|
||||
"description" => "This is a great clip",
|
||||
"matches" => [1, 2],
|
||||
})
|
||||
|
||||
allow(BrayniacAI::EdlParse).to receive(:create).and_return(
|
||||
BrayniacAI::EdlParse.new({ results: [video_event, audio_event] })
|
||||
)
|
||||
|
||||
edl_events = EdlEventGateway.new(
|
||||
files_for_request,
|
||||
"00:00:02:00",
|
||||
"00:00:02:00",
|
||||
channel_filter: "A",
|
||||
).edl_events
|
||||
|
||||
expect(edl_events.size).to eq(1)
|
||||
expect(edl_events).to include(EdlEvent.new({
|
||||
"channel" => "A1",
|
||||
"start_time" => 0,
|
||||
"timecode_in" => "00:00:00:00",
|
||||
"timecode_out" => "00:00:01:00",
|
||||
"duration" => 1,
|
||||
"source_file_name" => "my_file.mp3",
|
||||
"clip_name" => "my_clip.mp3",
|
||||
"description" => "This is a great clip",
|
||||
"matches" => [1, 2],
|
||||
}))
|
||||
end
|
||||
|
||||
describe "calling the API" do
|
||||
it "includes location information about the video file and EDL file" do
|
||||
allow(ENV).to receive(:[]).with("AWS_BUCKET").and_return("test-bucket")
|
||||
allow(BrayniacAI::EdlParse).to receive(:create)
|
||||
|
||||
EdlEventGateway.new(
|
||||
files_for_request,
|
||||
"00:00:02:00",
|
||||
"00:00:02:00",
|
||||
).edl_events
|
||||
|
||||
expect(BrayniacAI::EdlParse).to have_received(:create).with(
|
||||
job_id: "video_analysis_uid",
|
||||
video_bucket_name: "aws_bucket_name",
|
||||
video_object_name: "file_object_name",
|
||||
edl_bucket_name: "aws_bucket_name",
|
||||
edl_object_name: "edl_file_object_name",
|
||||
timecode_start: "00:00:02:00",
|
||||
timecode_end: "00:00:02:00",
|
||||
collection: {},
|
||||
)
|
||||
end
|
||||
|
||||
it "includes collection when provided" do
|
||||
allow(ENV).to receive(:[]).with("AWS_BUCKET").and_return("test-bucket")
|
||||
allow(BrayniacAI::EdlParse).to receive(:create)
|
||||
|
||||
EdlEventGateway.new(
|
||||
files_for_request,
|
||||
"00:00:02:00",
|
||||
"00:00:02:00",
|
||||
collection: { 1 => "source file name" },
|
||||
).edl_events
|
||||
|
||||
expect(BrayniacAI::EdlParse).to have_received(:create).with(
|
||||
job_id: "video_analysis_uid",
|
||||
video_bucket_name: "aws_bucket_name",
|
||||
video_object_name: "file_object_name",
|
||||
edl_bucket_name: "aws_bucket_name",
|
||||
edl_object_name: "edl_file_object_name",
|
||||
timecode_start: "00:00:02:00",
|
||||
timecode_end: "00:00:02:00",
|
||||
collection: { 1 => "source file name" },
|
||||
)
|
||||
end
|
||||
|
||||
it "includes start_timecode_offset when provided" do
|
||||
allow(files_for_request).to receive(:start_timecode_offset).and_return("start_timecode_offset")
|
||||
allow(BrayniacAI::EdlParse).to receive(:create)
|
||||
|
||||
EdlEventGateway.new(
|
||||
files_for_request,
|
||||
"00:00:02:00",
|
||||
"00:00:02:00",
|
||||
).edl_events
|
||||
|
||||
expect(BrayniacAI::EdlParse).to have_received(:create).with(
|
||||
job_id: "video_analysis_uid",
|
||||
video_bucket_name: "aws_bucket_name",
|
||||
video_object_name: "file_object_name",
|
||||
edl_bucket_name: "aws_bucket_name",
|
||||
edl_object_name: "edl_file_object_name",
|
||||
timecode_start: "00:00:02:00",
|
||||
timecode_end: "00:00:02:00",
|
||||
collection: {},
|
||||
edl_timecode_start: "start_timecode_offset",
|
||||
)
|
||||
end
|
||||
|
||||
it "does not include timecode_end, edl_timecode_start, job_id when given nil" do
|
||||
allow(ENV).to receive(:[]).with("AWS_BUCKET").and_return("test-bucket")
|
||||
allow(BrayniacAI::EdlParse).to receive(:create)
|
||||
allow(files_for_request).to receive(:job_id).and_return(nil)
|
||||
|
||||
EdlEventGateway.new(
|
||||
files_for_request,
|
||||
"00:00:02:00",
|
||||
nil,
|
||||
collection: { 1 => "source file name" },
|
||||
).edl_events
|
||||
|
||||
expect(BrayniacAI::EdlParse).to have_received(:create).with(
|
||||
video_bucket_name: "aws_bucket_name",
|
||||
video_object_name: "file_object_name",
|
||||
edl_bucket_name: "aws_bucket_name",
|
||||
edl_object_name: "edl_file_object_name",
|
||||
timecode_start: "00:00:02:00",
|
||||
collection: { 1 => "source file name" },
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
it "returns the collection of edl events from response" do
|
||||
edl_event = BrayniacAI::EdlParseResult.new({
|
||||
"channel" => "V",
|
||||
"start_time" => 0,
|
||||
"timecode_in" => "00:00:00:00",
|
||||
"timecode_out" => "00:00:01:00",
|
||||
"duration" => 1,
|
||||
"source_file_name" => "my_file.mp4",
|
||||
"clip_name" => "my_clip.mp4",
|
||||
"description" => "This is a great clip",
|
||||
"matches" => [1, 2],
|
||||
})
|
||||
|
||||
allow(BrayniacAI::EdlParse).to receive(:create).and_return(
|
||||
BrayniacAI::EdlParse.new({ results: [edl_event] })
|
||||
)
|
||||
|
||||
edl_events = EdlEventGateway.new(
|
||||
files_for_request,
|
||||
"00:00:02:00",
|
||||
"00:00:02:00",
|
||||
).edl_events
|
||||
|
||||
expect(edl_events.size).to eq(1)
|
||||
expect(edl_events).to include(EdlEvent.new({
|
||||
"channel" => "V",
|
||||
"start_time" => 0,
|
||||
"timecode_in" => "00:00:00:00",
|
||||
"timecode_out" => "00:00:01:00",
|
||||
"duration" => 1,
|
||||
"source_file_name" => "my_file.mp4",
|
||||
"clip_name" => "my_clip.mp4",
|
||||
"description" => "This is a great clip",
|
||||
"matches" => [1, 2],
|
||||
}))
|
||||
end
|
||||
end
|
||||
|
||||
describe "#edl_timecode_start" do
|
||||
it "returns edl_timecode_start from response" do
|
||||
allow(BrayniacAI::EdlParse).to receive(:create).and_return(BrayniacAI::EdlParse.new(edl_timecode_start: "edl_timecode_start"))
|
||||
|
||||
expect(described_class.new(
|
||||
files_for_request,
|
||||
"00:00:00:00",
|
||||
"00:00:00:00"
|
||||
).edl_timecode_start).to eq "edl_timecode_start"
|
||||
end
|
||||
|
||||
context "when response nil" do
|
||||
it "returns edl_timecode_start from response" do
|
||||
allow(BrayniacAI::EdlParse).to receive(:create).and_return(nil)
|
||||
|
||||
expect(described_class.new(
|
||||
files_for_request,
|
||||
"00:00:00:00",
|
||||
"00:00:00:00"
|
||||
).edl_timecode_start).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#fps" do
|
||||
it "returns fps from response" do
|
||||
allow(BrayniacAI::EdlParse).to receive(:create).and_return(BrayniacAI::EdlParse.new(fps: 29.97))
|
||||
|
||||
expect(described_class.new(
|
||||
files_for_request,
|
||||
"00:00:00:00",
|
||||
"00:00:00:00"
|
||||
).fps).to eq 29.97
|
||||
end
|
||||
|
||||
context "when response nil" do
|
||||
it "returns nil" do
|
||||
allow(BrayniacAI::EdlParse).to receive(:create).and_return(nil)
|
||||
|
||||
expect(described_class.new(
|
||||
files_for_request,
|
||||
"00:00:00:00",
|
||||
"00:00:00:00"
|
||||
).fps).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#edl_offset_seconds" do
|
||||
it "returns edl_offset_seconds from response" do
|
||||
allow(BrayniacAI::EdlParse).to receive(:create).and_return(BrayniacAI::EdlParse.new(edl_offset_seconds: 100))
|
||||
|
||||
expect(described_class.new(
|
||||
files_for_request,
|
||||
"00:00:00:00",
|
||||
"00:00:00:00"
|
||||
).edl_offset_seconds).to eq 100
|
||||
end
|
||||
|
||||
context "when response nil" do
|
||||
it "returns edl_offset_seconds from response" do
|
||||
allow(BrayniacAI::EdlParse).to receive(:create).and_return(nil)
|
||||
|
||||
expect(described_class.new(
|
||||
files_for_request,
|
||||
"00:00:00:00",
|
||||
"00:00:00:00"
|
||||
).edl_offset_seconds).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user