119 lines
3.8 KiB
Ruby
119 lines
3.8 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe EdlEventsPresenter do
|
|
let(:edl_gateway) { instance_double(EdlEventGateway) }
|
|
|
|
describe "#present" do
|
|
it "returns hash of edl_events, edl_attributes, info_message" do
|
|
allow(edl_gateway).to receive(:edl_events).and_return(build_list(:edl_event, 1))
|
|
|
|
expect(described_class.new(edl_gateway).present).to eq({
|
|
edl_events: build_list(:edl_event, 1),
|
|
edl_attributes: {
|
|
timecode_in: "timecode_in",
|
|
timecode_out: "timecode_out",
|
|
duration: "duration",
|
|
source_file_name: "source_file_name",
|
|
clip_name: "clip_name",
|
|
description: "description",
|
|
channel: "V",
|
|
},
|
|
info_message: "An EDL event was found. Data is shown below",
|
|
})
|
|
end
|
|
|
|
describe "edl_attributes" do
|
|
context "when 1 edl event" do
|
|
before :each do
|
|
allow(edl_gateway).to receive(:edl_events).and_return(build_list(:edl_event, 1))
|
|
end
|
|
|
|
it "returns edl attributes from that event" do
|
|
expect(described_class.new(edl_gateway).present[:edl_attributes]).to eq({
|
|
timecode_in: "timecode_in",
|
|
timecode_out: "timecode_out",
|
|
duration: "duration",
|
|
source_file_name: "source_file_name",
|
|
clip_name: "clip_name",
|
|
description: "description",
|
|
channel: "V",
|
|
})
|
|
end
|
|
end
|
|
|
|
context "when multiple edl events" do
|
|
before :each do
|
|
allow(edl_gateway).to receive(:edl_events).and_return(
|
|
[
|
|
build(:edl_event),
|
|
build(:edl_event, timecode_in: "NOT__timecode_in")
|
|
]
|
|
)
|
|
end
|
|
|
|
it "returns edl attributes from first event" do
|
|
expect(described_class.new(edl_gateway).present[:edl_attributes]).to eq({
|
|
timecode_in: "timecode_in",
|
|
timecode_out: "timecode_out",
|
|
duration: "duration",
|
|
source_file_name: "source_file_name",
|
|
clip_name: "clip_name",
|
|
description: "description",
|
|
channel: "V",
|
|
})
|
|
end
|
|
end
|
|
|
|
context "when no edl events" do
|
|
before :each do
|
|
allow(edl_gateway).to receive(:edl_events).and_return([])
|
|
end
|
|
|
|
it "returns nil attributes from edl event" do
|
|
expect(described_class.new(edl_gateway).present[:edl_attributes]).to eq({
|
|
timecode_in: nil,
|
|
timecode_out: nil,
|
|
duration: nil,
|
|
source_file_name: nil,
|
|
clip_name: nil,
|
|
description: nil,
|
|
channel: nil,
|
|
})
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "info_message" do
|
|
context "when 1 edl event" do
|
|
before :each do
|
|
allow(edl_gateway).to receive(:edl_events).and_return(build_list(:edl_event, 1))
|
|
end
|
|
|
|
it "returns 'An EDL event was found. Data is shown below'" do
|
|
expect(described_class.new(edl_gateway).present[:info_message]).to eq "An EDL event was found. Data is shown below"
|
|
end
|
|
end
|
|
|
|
context "when multiple edl events" do
|
|
before :each do
|
|
allow(edl_gateway).to receive(:edl_events).and_return(build_list(:edl_event, 2))
|
|
end
|
|
|
|
it "returns 'Multiple EDL events were found. Data for the first is shown below'" do
|
|
expect(described_class.new(edl_gateway).present[:info_message]).to eq "Multiple EDL events were found. Data for the first is shown below"
|
|
end
|
|
end
|
|
|
|
context "when no edl events" do
|
|
before :each do
|
|
allow(edl_gateway).to receive(:edl_events).and_return([])
|
|
end
|
|
|
|
it "returns 'No EDL events were found. Please enter manually'" do
|
|
expect(described_class.new(edl_gateway).present[:info_message]).to eq "No EDL events were found. Please enter manually"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|