76 lines
2.0 KiB
Ruby
76 lines
2.0 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe AnalysisNotification, type: :model do
|
|
describe "#build" do
|
|
context "for audio type" do
|
|
it "returns AudioAnalysisNotification subclass" do
|
|
notification = described_class.build("audio", "job_id")
|
|
|
|
expect(notification).to be_a(AnalysisNotification::AudioAnalysisNotification)
|
|
expect(notification.job_id).to eq "job_id"
|
|
end
|
|
end
|
|
|
|
context "for video type" do
|
|
it "returns VideoAnalysisNotification subclass" do
|
|
notification = described_class.build("video", "job_id")
|
|
|
|
expect(notification).to be_a(AnalysisNotification::VideoAnalysisNotification)
|
|
expect(notification.job_id).to eq "job_id"
|
|
end
|
|
end
|
|
end
|
|
|
|
describe AnalysisNotification::VideoAnalysisNotification do
|
|
let!(:video) { create(:video, analysis_uid: "job_id") }
|
|
|
|
subject { described_class.new("job_id") }
|
|
|
|
describe "#video" do
|
|
it "fetches video using job id" do
|
|
expect(subject.video).to eq video
|
|
end
|
|
end
|
|
|
|
describe "#success!" do
|
|
it "updates status of the video" do
|
|
subject.success!
|
|
expect(video.reload).to be_analysis_success
|
|
end
|
|
end
|
|
|
|
describe "#failure!" do
|
|
it "updates status of the video" do
|
|
subject.failure!
|
|
expect(video.reload).to be_analysis_failure
|
|
end
|
|
end
|
|
end
|
|
|
|
describe AnalysisNotification::AudioAnalysisNotification do
|
|
let!(:video) { create(:video, audio_analysis_uid: "job_id") }
|
|
|
|
subject { described_class.new("job_id") }
|
|
|
|
describe "#video" do
|
|
it "fetches video using job id" do
|
|
expect(subject.video).to eq video
|
|
end
|
|
end
|
|
|
|
describe "#success!" do
|
|
it "updates status of the video" do
|
|
subject.success!
|
|
expect(video.reload).to be_audio_analysis_success
|
|
end
|
|
end
|
|
|
|
describe "#failure!" do
|
|
it "updates status of the video" do
|
|
subject.failure!
|
|
expect(video.reload).to be_audio_analysis_failure
|
|
end
|
|
end
|
|
end
|
|
end
|