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

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