Initial commit
This commit is contained in:
106
spec/controllers/video_analyses_controller_spec.rb
Normal file
106
spec/controllers/video_analyses_controller_spec.rb
Normal file
@@ -0,0 +1,106 @@
|
||||
require "rails_helper"
|
||||
|
||||
RSpec.describe VideoAnalysesController do
|
||||
let(:admin) { create(:user, :admin) }
|
||||
let(:project) { create(:project, account: admin.accounts.first) }
|
||||
let(:video) { create(:video, project: project) }
|
||||
|
||||
before do
|
||||
allow(AnalyzeVideoJob).to receive(:perform_later)
|
||||
allow(BrayniacAI::EdlParse).to receive(:create)
|
||||
sign_in admin
|
||||
end
|
||||
|
||||
render_views
|
||||
|
||||
describe "#create" do
|
||||
it "redirects to video analyses" do
|
||||
post :create, params: { video_id: video, use_route: video_video_analyses_path(video) }
|
||||
|
||||
expect(response).to redirect_to(video_video_analyses_path(video))
|
||||
end
|
||||
|
||||
it "reanalyzes the video" do
|
||||
expect(AnalyzeVideoJob).to receive(:perform_later).with(video, reanalysis: true)
|
||||
|
||||
post :create, params: { video_id: video, use_route: video_video_analyses_path(video) }
|
||||
end
|
||||
|
||||
it "reanalyzes the audio" do
|
||||
expect(AnalyzeAudioJob).to receive(:perform_later).with(video)
|
||||
|
||||
post :create, params: { video_id: video, use_route: video_video_analyses_path(video) }
|
||||
end
|
||||
end
|
||||
|
||||
describe "#show" do
|
||||
it "sets video_release_confirmations, talent_releases, appearance_releases, location_releases, acquired_media_releases, music_releases, material_releases, graphics_elements_data, audio_confirmations" do
|
||||
talent_releases = [create(:talent_release)]
|
||||
appearance_releases = [create(:appearance_release)]
|
||||
location_releases = [create(:location_release)]
|
||||
acquired_media_releases = [create(:acquired_media_release)]
|
||||
music_releases = [create(:music_release)]
|
||||
material_releases = [create(:material_release)]
|
||||
|
||||
project = create(:project,
|
||||
name: "All the releases",
|
||||
account: admin.accounts.first,
|
||||
talent_releases: talent_releases,
|
||||
appearance_releases: appearance_releases,
|
||||
location_releases: location_releases,
|
||||
acquired_media_releases: acquired_media_releases,
|
||||
music_releases: music_releases,
|
||||
material_releases: material_releases,
|
||||
)
|
||||
video = create(:video,
|
||||
project: project,
|
||||
video_release_confirmations: [
|
||||
create(:video_release_confirmation, releasable: talent_releases.first),
|
||||
]
|
||||
)
|
||||
create(:audio_confirmation, video: video)
|
||||
|
||||
get :show, params: { video_id: video, use_route: video_video_analyses_path(video) }
|
||||
|
||||
expect(assigns(:video_release_confirmations)).to eq [VideoReleaseConfirmation.first]
|
||||
expect(assigns(:talent_releases)).to eq talent_releases
|
||||
expect(assigns(:appearance_releases)).to eq appearance_releases
|
||||
expect(assigns(:location_releases)).to eq location_releases
|
||||
expect(assigns(:acquired_media_releases)).to eq acquired_media_releases
|
||||
expect(assigns(:music_releases)).to eq music_releases
|
||||
expect(assigns(:material_releases)).to eq material_releases
|
||||
expect(assigns(:video_analysis_presenter)).to be_an_instance_of(VideoAnalysisPresenter)
|
||||
expect(assigns(:graphics_elements_data)).to have_attributes(graphics_elements: [])
|
||||
expect(assigns(:unreleased_appearances_data)).to have_attributes(unreleased_appearances: [])
|
||||
expect(assigns(:audio_confirmations)).to eq [AudioConfirmation.last]
|
||||
end
|
||||
|
||||
it "sorts confirmations by appears_at" do
|
||||
talent_releases = [create(:talent_release), create(:talent_release), create(:talent_release)]
|
||||
|
||||
project = create(:project,
|
||||
name: "All the releases",
|
||||
account: admin.accounts.first,
|
||||
talent_releases: talent_releases,
|
||||
)
|
||||
video = create(:video,
|
||||
project: project,
|
||||
video_release_confirmations: [
|
||||
create(:video_release_confirmation, releasable: talent_releases.first, time_elapsed: "10"),
|
||||
create(:video_release_confirmation, releasable: talent_releases.second, time_elapsed: "50"),
|
||||
create(:video_release_confirmation, releasable: talent_releases.last, time_elapsed: "30"),
|
||||
]
|
||||
)
|
||||
|
||||
get :show, params: { video_id: video, use_route: video_video_analyses_path(video) }
|
||||
|
||||
body = response.body
|
||||
first = body =~ /00:00:10:00/
|
||||
second = body =~ /00:00:30:00/
|
||||
last = body =~ /00:00:50:00/
|
||||
|
||||
expect(first < second).to eq true
|
||||
expect(second < last).to eq true
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user