204 lines
7.8 KiB
Ruby
204 lines
7.8 KiB
Ruby
|
|
require "rails_helper"
|
||
|
|
|
||
|
|
RSpec.describe VideoAnalyses::UnreleasedAppearancesController, 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_event_gateway) { instance_double(EdlEventGateway) }
|
||
|
|
|
||
|
|
before :each do
|
||
|
|
allow(EdlEventGateway).to receive(:new).and_return(edl_event_gateway)
|
||
|
|
allow(edl_event_gateway).to receive(:edl_events).and_return(build_list(:edl_event, 1))
|
||
|
|
end
|
||
|
|
|
||
|
|
it "sets unreleased_appearance, edl_events_data" do
|
||
|
|
get :new, params: {
|
||
|
|
unreleased_appearance: { time_elapsed: "1", notes: "great work" },
|
||
|
|
video_id: video,
|
||
|
|
}, xhr: true
|
||
|
|
|
||
|
|
expect(response).to be_successful
|
||
|
|
expect(assigns(:unreleased_appearance)).to have_attributes({
|
||
|
|
video_id: video.id,
|
||
|
|
time_elapsed: "1",
|
||
|
|
notes: "great work",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
})
|
||
|
|
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
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "#create" do
|
||
|
|
it "creates unreleased_appearance" do
|
||
|
|
expect {
|
||
|
|
post :create, params: {
|
||
|
|
unreleased_appearance: {
|
||
|
|
time_elapsed: "1",
|
||
|
|
notes: "great work",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
note_category: "other",
|
||
|
|
},
|
||
|
|
video_id: video,
|
||
|
|
}, xhr: true
|
||
|
|
}.to change(UnreleasedAppearance, :count).from(0).to(1)
|
||
|
|
end
|
||
|
|
|
||
|
|
it "sets unreleased_appearances_data" do
|
||
|
|
post :create, params: {
|
||
|
|
unreleased_appearance: {
|
||
|
|
time_elapsed: "1",
|
||
|
|
notes: "great work",
|
||
|
|
channel: "V",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
note_category: "other",
|
||
|
|
},
|
||
|
|
video_id: video,
|
||
|
|
}, xhr: true
|
||
|
|
|
||
|
|
expect(assigns(:unreleased_appearances_data).unreleased_appearances.first).to have_attributes(
|
||
|
|
notes: "great work",
|
||
|
|
time_elapsed: "1",
|
||
|
|
timecode_in: "timecode_in",
|
||
|
|
timecode_out: "timecode_out",
|
||
|
|
duration: "duration",
|
||
|
|
source_file_name: "source_file_name",
|
||
|
|
clip_name: "clip_name",
|
||
|
|
description: "description",
|
||
|
|
note_category: "other",
|
||
|
|
)
|
||
|
|
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 unreleased_appearance, edl_events_data" do
|
||
|
|
unreleased_appearance = create(:unreleased_appearance, video: video)
|
||
|
|
|
||
|
|
get :edit, params: { id: unreleased_appearance }, xhr: true
|
||
|
|
|
||
|
|
expect(EdlEventGateway).to have_received(:new).with(
|
||
|
|
instance_of(FilesForRequest),
|
||
|
|
"00:00:01:13",
|
||
|
|
"00:00:01:13",
|
||
|
|
)
|
||
|
|
|
||
|
|
expect(response).to be_successful
|
||
|
|
expect(assigns(:unreleased_appearance)).to eq unreleased_appearance
|
||
|
|
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
|
||
|
|
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 unreleased_appearances_data" do
|
||
|
|
unreleased_appearance = create(:unreleased_appearance, video: video)
|
||
|
|
|
||
|
|
put :update, params: {
|
||
|
|
id: unreleased_appearance,
|
||
|
|
unreleased_appearance: {
|
||
|
|
notes: "notes",
|
||
|
|
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",
|
||
|
|
note_category: "other",
|
||
|
|
}
|
||
|
|
}, xhr: true
|
||
|
|
|
||
|
|
expect(response).to be_successful
|
||
|
|
expect(assigns(:unreleased_appearances_data).unreleased_appearances.first).to have_attributes(
|
||
|
|
notes: "notes",
|
||
|
|
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",
|
||
|
|
note_category: "other",
|
||
|
|
)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "#destroy" do
|
||
|
|
let!(:unreleased_appearance) { create(:unreleased_appearance) }
|
||
|
|
|
||
|
|
it "sets unreleased_appearances_data" do
|
||
|
|
delete :destroy, params: { id: unreleased_appearance.id }, xhr: true
|
||
|
|
|
||
|
|
expect(assigns(:unreleased_appearances_data).unreleased_appearances).to eq([])
|
||
|
|
end
|
||
|
|
|
||
|
|
it "destroys given unreleased_appearance" do
|
||
|
|
expect {
|
||
|
|
delete :destroy, params: { id: unreleased_appearance.id }, xhr: true
|
||
|
|
}.to change(UnreleasedAppearance, :count).from(1).to(0)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|