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

72 lines
1.9 KiB
Ruby

require "rails_helper"
describe AnalyzeVideoJob do
describe ".perform_now" do
it "calls API with video data" do
video = build_stubbed(:video)
video_analysis = instance_double(VideoAnalysis, "video_analysis")
expect(VideoAnalysis).to receive(:new).with(video, false).and_return(video_analysis)
mock_facial_recognition_create_api_call
mock_video_update(video)
AnalyzeVideoJob.perform_now video
expect(BrayniacAI::FacialRecognition).to(
have_received(:create!).
with(video_analysis)
)
end
it "calls API with video data and reanalysis flag" do
video = build_stubbed(:video)
video_analysis = instance_double(VideoAnalysis, "video_analysis")
expect(VideoAnalysis).to receive(:new).with(video, true).and_return(video_analysis)
mock_facial_recognition_create_api_call
mock_video_update(video)
AnalyzeVideoJob.perform_now video, reanalysis: true
expect(BrayniacAI::FacialRecognition).to(
have_received(:create!).
with(video_analysis)
)
end
it "saves data about the analysis" do
video = build_stubbed(:video)
mock_facial_recognition_create_api_call(job_uid: "123abc")
mock_video_update(video)
freeze_time do
AnalyzeVideoJob.perform_now video
expect(video).to(
have_received(:update!).
with({
analysis_uid: "123abc",
analysis_started_at: Time.zone.now,
analysis_status: :pending
})
)
end
end
end
private
def mock_facial_recognition_create_api_call(job_uid: "test")
double("response", job_id: job_uid).tap do |api_response|
allow(BrayniacAI::FacialRecognition).to(
receive(:create!).
and_return(api_response)
)
end
end
def mock_video_update(video)
allow(video).to receive(:update!)
end
end