Permette agli admin di prolungare la scadenza dei replay.
Aggiunge data personalizzata e pulsanti rapidi nell'archivio admin così il job di purge non elimina i video fino alla nuova scadenza. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
64
backend/spec/services/recordings/extend_expiry_spec.rb
Normal file
64
backend/spec/services/recordings/extend_expiry_spec.rb
Normal file
@@ -0,0 +1,64 @@
|
||||
require "rails_helper"
|
||||
|
||||
RSpec.describe Recordings::ExtendExpiry do
|
||||
let!(:club) { Club.create!(name: "Club", sport: "volleyball", primary_color: "#e53935", secondary_color: "#ffffff") }
|
||||
let!(:team) { club.teams.create!(name: "Tigers", sport: "volleyball") }
|
||||
let!(:user) { User.create!(email: "coach@test.com", name: "Coach", password: "password123", role: "coach") }
|
||||
let!(:match) { team.matches.create!(opponent_name: "Rival", scheduled_at: 1.day.ago) }
|
||||
let!(:session) do
|
||||
StreamSession.create!(match: match, user: user, platform: "matchlivetv", status: "ended", ended_at: 1.hour.ago)
|
||||
end
|
||||
let!(:recording) do
|
||||
Recording.create!(
|
||||
stream_session: session, team: team, status: "ready", privacy_status: "public",
|
||||
storage_key: "teams/#{team.id}/sessions/#{session.id}/replay.mp4",
|
||||
expires_at: 2.days.from_now,
|
||||
expiry_warning_sent_at: 1.day.ago
|
||||
)
|
||||
end
|
||||
|
||||
it "imposta una nuova data di scadenza e resetta l'avviso" do
|
||||
new_expiry = 45.days.from_now
|
||||
|
||||
described_class.new(recording).to_time(new_expiry)
|
||||
|
||||
recording.reload
|
||||
expect(recording.expires_at).to be_within(1.second).of(new_expiry)
|
||||
expect(recording.expiry_warning_sent_at).to be_nil
|
||||
end
|
||||
|
||||
it "prolunga dalla scadenza corrente" do
|
||||
original = recording.expires_at
|
||||
|
||||
described_class.new(recording).by_days(30)
|
||||
|
||||
recording.reload
|
||||
expect(recording.expires_at).to be_within(1.second).of(original + 30.days)
|
||||
expect(recording.expiry_warning_sent_at).to be_nil
|
||||
end
|
||||
|
||||
it "prolunga da oggi se la scadenza è già passata" do
|
||||
recording.update!(expires_at: 2.days.ago)
|
||||
|
||||
described_class.new(recording).by_days(10)
|
||||
|
||||
recording.reload
|
||||
expect(recording.expires_at).to be_within(1.second).of(10.days.from_now)
|
||||
end
|
||||
|
||||
it "esclude il replay dalla coda di purge dopo il prolungamento" do
|
||||
recording.update!(expires_at: 1.hour.ago)
|
||||
|
||||
expect(Recording.expired_pending_purge).to include(recording)
|
||||
|
||||
described_class.new(recording).by_days(30)
|
||||
|
||||
expect(Recording.expired_pending_purge).not_to include(recording.reload)
|
||||
end
|
||||
|
||||
it "rifiuta date nel passato" do
|
||||
expect do
|
||||
described_class.new(recording).to_time(1.day.ago)
|
||||
end.to raise_error(Recordings::ExtendExpiry::Error, /futuro/)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user