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

121 lines
3.8 KiB
Ruby

require "rails_helper"
RSpec.describe VideoAnalysis do
let(:project) { create(:project, headshot_collection_uid: "collection_id") }
let(:video) { create(:video, project: project) }
before :each do
video.file.update(key: "generated-key")
end
describe "#to_hash" do
context "when reanalysis is true" do
it "returns hash of bucket_name, collection_id, video_object_name, reanalysis" do
allow(ENV).to receive(:[])
allow(ENV).to receive(:[]).with("AWS_BUCKET").and_return("video-dumping-ground")
expect(described_class.new(video, true).to_hash).to eq({
bucket_name: "video-dumping-ground",
collection_id: "collection_id",
video_object_name: "generated-key",
reanalysis: true,
})
end
end
context "when reanalysis is not true" do
it "returns hash of bucket_name, collection_id, video_object_name" do
allow(ENV).to receive(:[])
allow(ENV).to receive(:[]).with("AWS_BUCKET").and_return("video-dumping-ground")
expect(described_class.new(video, false).to_hash).to eq({
bucket_name: "video-dumping-ground",
collection_id: "collection_id",
video_object_name: "generated-key",
reanalysis: false,
})
end
end
end
describe "#as_json" do
context "when reanalysis is true" do
it "returns json with bucket_name, collection_id, video_object_name, reanalysis" do
allow(ENV).to receive(:[])
allow(ENV).to receive(:[]).with("AWS_BUCKET").and_return("video-dumping-ground")
expect(described_class.new(video, true).as_json).to eq({
bucket_name: "video-dumping-ground",
collection_id: "collection_id",
video_object_name: "generated-key",
reanalysis: true,
})
end
end
context "when reanalysis is not true" do
it "returns json with bucket_name, collection_id, video_object_name" do
allow(ENV).to receive(:[])
allow(ENV).to receive(:[]).with("AWS_BUCKET").and_return("video-dumping-ground")
expect(described_class.new(video, false).as_json).to eq({
bucket_name: "video-dumping-ground",
collection_id: "collection_id",
video_object_name: "generated-key",
reanalysis: false,
})
end
end
end
describe "#overlay_video_url" do
let(:video_analysis) { described_class.new(video, false) }
context "when use_overlay_video false" do
before :each do
video_analysis.use_overlay_video = false
end
it "returns nil" do
expect(video_analysis.overlay_video_url).to be_nil
end
end
context "when use_overlay_video true" do
before :each do
video_analysis.use_overlay_video = true
end
context "when overlay_video_url is None" do
before :each do
allow(BrayniacAI::FacialRecognition).to receive(:find).and_return(BrayniacAI::FacialRecognition.new({overlay_video_url: "None"}))
end
it "returns nil" do
expect(video_analysis.overlay_video_url).to be_nil
end
end
context "when overlay_video_url is not None" do
before :each do
allow(BrayniacAI::FacialRecognition).to receive(:find).and_return(BrayniacAI::FacialRecognition.new({overlay_video_url: "www.google.com"}))
end
it "returns overlay_video_url" do
expect(video_analysis.overlay_video_url).to eq "www.google.com"
end
end
end
end
describe "#first_appearances" do
before :each do
allow(BrayniacAI::FacialRecognition).to receive(:find).and_return(BrayniacAI::FacialRecognition.new({first_appearances: ["appearance 1"]}))
end
it "returns first_appearances from response" do
expect(described_class.new(video, false).first_appearances).to eq ["appearance 1"]
end
end
end