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

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