290 lines
8.7 KiB
Ruby
290 lines
8.7 KiB
Ruby
|
|
require "rails_helper"
|
||
|
|
|
||
|
|
RSpec.describe VideoAnalyses::GraphicsElementsController, type: :controller do
|
||
|
|
let(:user) { create(:user) }
|
||
|
|
let(:project) { create(:project, account: user.primary_account) }
|
||
|
|
let(:video) { create(:video, project: project) }
|
||
|
|
|
||
|
|
before :each do
|
||
|
|
sign_in(user)
|
||
|
|
end
|
||
|
|
|
||
|
|
render_views
|
||
|
|
|
||
|
|
describe "#new" do
|
||
|
|
let(:edl_gateway) { double(:edl_gateway) }
|
||
|
|
|
||
|
|
before :each do
|
||
|
|
allow(EdlEventGateway).to receive(:new).and_return(edl_gateway)
|
||
|
|
allow(edl_gateway).to receive(:edl_events).and_return(build_list(:edl_event, 1))
|
||
|
|
end
|
||
|
|
|
||
|
|
it "responds successfully and sets graphics_element, edl_events_data, matched_filename" do
|
||
|
|
get :new, params: {
|
||
|
|
video_id: video.id,
|
||
|
|
graphics_element: {
|
||
|
|
text: "asdf",
|
||
|
|
time_elapsed: "00:01:00",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
edl_type: "edl_type",
|
||
|
|
},
|
||
|
|
matched_file_name: "matched_file_name",
|
||
|
|
}, xhr: true
|
||
|
|
|
||
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
||
|
|
instance_of(GraphicsFilesForRequest),
|
||
|
|
"00:00:00:00",
|
||
|
|
"00:00:00:00",
|
||
|
|
channel_filter: "V",
|
||
|
|
)
|
||
|
|
|
||
|
|
expect(response).to be_successful
|
||
|
|
expect(assigns(:graphics_element)).to have_attributes(
|
||
|
|
id: nil,
|
||
|
|
text: "asdf",
|
||
|
|
time_elapsed: "00:01:00",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
edl_type: "edl_type",
|
||
|
|
)
|
||
|
|
expect(assigns(:edl_events_data)).to eq({
|
||
|
|
edl_events: build_list(:edl_event, 1),
|
||
|
|
edl_attributes: {
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
},
|
||
|
|
info_message: "An EDL event was found. Data is shown below",
|
||
|
|
})
|
||
|
|
expect(assigns(:matched_file_name)).to eq "matched_file_name"
|
||
|
|
end
|
||
|
|
|
||
|
|
context "when edl_type param is all_tracks" do
|
||
|
|
it "uses the all tracks edl" do
|
||
|
|
get :new, params: {
|
||
|
|
video_id: video.id,
|
||
|
|
graphics_element: {
|
||
|
|
text: "asdf",
|
||
|
|
time_elapsed: "00:01:00",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
edl_type: "all_tracks",
|
||
|
|
},
|
||
|
|
matched_file_name: "matched_file_name",
|
||
|
|
}, xhr: true
|
||
|
|
|
||
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
||
|
|
instance_of(FilesForRequest),
|
||
|
|
"00:00:00:00",
|
||
|
|
"00:00:00:00",
|
||
|
|
channel_filter: "V",
|
||
|
|
)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "#create" do
|
||
|
|
it "responds successfully and creates graphics_element" do
|
||
|
|
expect {
|
||
|
|
post :create, params: {
|
||
|
|
video_id: video.id,
|
||
|
|
graphics_element: {
|
||
|
|
graphic_type: "Subtitle",
|
||
|
|
text: "asdf",
|
||
|
|
time_elapsed: "00:01:00",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
edl_type: "edl_type",
|
||
|
|
},
|
||
|
|
}, xhr: true
|
||
|
|
}.to change(GraphicsElement, :count).by(1)
|
||
|
|
|
||
|
|
expect(response).to be_successful
|
||
|
|
end
|
||
|
|
|
||
|
|
it "sets graphics_element_data, graphics_elements_data" do
|
||
|
|
post :create, params: {
|
||
|
|
video_id: video.id,
|
||
|
|
graphics_element: {
|
||
|
|
graphic_type: "Subtitle",
|
||
|
|
text: "asdf",
|
||
|
|
time_elapsed: "00:01:00",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
edl_type: "edl_type",
|
||
|
|
},
|
||
|
|
}, xhr: true
|
||
|
|
|
||
|
|
expect(assigns(:graphics_element_data)).to have_attributes(
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
should_toggle_checkmark: true,
|
||
|
|
is_valid: true,
|
||
|
|
)
|
||
|
|
expect(assigns(:graphics_elements_data)).to have_attributes(
|
||
|
|
graphics_elements: [GraphicsElement.last]
|
||
|
|
)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "#edit" do
|
||
|
|
let(:edl_gateway) { double(:edl_gateway) }
|
||
|
|
|
||
|
|
before :each do
|
||
|
|
allow(EdlEventGateway).to receive(:new).and_return(edl_gateway)
|
||
|
|
allow(edl_gateway).to receive(:edl_events).and_return(build_list(:edl_event, 1))
|
||
|
|
end
|
||
|
|
|
||
|
|
it "sets graphics_element, edl_events_data" do
|
||
|
|
graphics_element = create(:graphics_element, video: video)
|
||
|
|
|
||
|
|
get :edit, params: { id: graphics_element }, xhr: true
|
||
|
|
|
||
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
||
|
|
instance_of(GraphicsFilesForRequest),
|
||
|
|
"00:00:05:00",
|
||
|
|
"00:00:05:00",
|
||
|
|
channel_filter: "V",
|
||
|
|
)
|
||
|
|
|
||
|
|
expect(response).to be_successful
|
||
|
|
expect(assigns(:graphics_element)).to eq graphics_element
|
||
|
|
expect(assigns(:edl_events_data)).to eq({
|
||
|
|
edl_events: build_list(:edl_event, 1),
|
||
|
|
edl_attributes: {
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
},
|
||
|
|
info_message: "An EDL event was found. Data is shown below",
|
||
|
|
})
|
||
|
|
end
|
||
|
|
|
||
|
|
context "when edl_type param is all_tracks" do
|
||
|
|
it "uses the all tracks edl" do
|
||
|
|
graphics_element = create(:graphics_element, video: video, edl_type: "all_tracks")
|
||
|
|
|
||
|
|
get :edit, params: { id: graphics_element }, xhr: true
|
||
|
|
|
||
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
||
|
|
instance_of(FilesForRequest),
|
||
|
|
"00:00:05:00",
|
||
|
|
"00:00:05:00",
|
||
|
|
channel_filter: "V",
|
||
|
|
)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "#update" do
|
||
|
|
let(:edl_gateway) { double(:edl_gateway) }
|
||
|
|
|
||
|
|
before :each do
|
||
|
|
allow(EdlEventGateway).to receive(:new).and_return(edl_gateway)
|
||
|
|
allow(edl_gateway).to receive(:edl_events).and_return(build_list(:edl_event, 1))
|
||
|
|
end
|
||
|
|
|
||
|
|
it "sets graphics_element_data, graphics_elements_data" do
|
||
|
|
graphics_element = create(:graphics_element, video: video)
|
||
|
|
|
||
|
|
put :update, params: {
|
||
|
|
id: graphics_element,
|
||
|
|
graphics_element: {
|
||
|
|
graphic_type: "Subtitle",
|
||
|
|
text: "text",
|
||
|
|
time_elapsed: "time_elapsed",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
}
|
||
|
|
}, xhr: true
|
||
|
|
|
||
|
|
expect(response).to be_successful
|
||
|
|
expect(assigns(:graphics_element_data)).to have_attributes(
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
should_toggle_checkmark: true,
|
||
|
|
is_valid: true,
|
||
|
|
)
|
||
|
|
expect(assigns(:graphics_elements_data).graphics_elements.first).to have_attributes(
|
||
|
|
text: "text",
|
||
|
|
time_elapsed: "time_elapsed",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "#delete" do
|
||
|
|
it "deletes given graphics_element" do
|
||
|
|
graphics_element = create(:graphics_element)
|
||
|
|
|
||
|
|
expect {
|
||
|
|
delete :destroy, params: { id: graphics_element }, xhr: true }.to change { GraphicsElement.count
|
||
|
|
}.from(1).to(0)
|
||
|
|
end
|
||
|
|
|
||
|
|
it "responds with graphics element data, graphics elements data" do
|
||
|
|
graphics_element = create(:graphics_element,
|
||
|
|
video: video,
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
)
|
||
|
|
|
||
|
|
delete :destroy, params: { id: graphics_element }, xhr: true
|
||
|
|
|
||
|
|
expect(assigns(:graphics_element_data)).to have_attributes(
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
should_toggle_checkmark: true,
|
||
|
|
is_valid: true,
|
||
|
|
)
|
||
|
|
expect(assigns(:graphics_elements_data)).to have_attributes(
|
||
|
|
graphics_elements: []
|
||
|
|
)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|