Files
MatchLiveTv/backend/spec/requests/public/regia_spec.rb
Emiliano Frascaro 52cfffb83f Aggiunge monitoraggio ops: health check, log scanner, dashboard e notifiche.
Introduce incidenti con dedup, job Sidekiq ogni 3 min, scan log cron, /up/deep,
dashboard /admin/ops e push ntfy; include Sentry opzionale e fix test suite.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 08:16:47 +02:00

57 lines
2.3 KiB
Ruby

require "rails_helper"
RSpec.describe "Public regia", type: :request do
let!(:user) { User.create!(email: "regia@test.it", name: "U", password: "password123", role: "coach") }
let!(:club) { Club.create!(name: "C", sport: "volleyball", primary_color: "#e53935", secondary_color: "#ffffff") }
let!(:team) { club.teams.create!(name: "T", sport: "volleyball") }
let!(:match) { team.matches.create!(opponent_name: "Opp", sport: "volleyball") }
let!(:session) { StreamSession.create!(match: match, user: user, platform: "matchlivetv", status: "live") }
it "mostra la pagina regia con token valido" do
token = Sessions::RegiaAccess.new(session).issue_token!
get public_regia_path(token)
expect(response).to have_http_status(:ok)
expect(response.body).to include("Condividi diretta")
expect(response.body).to include("Condividi link regia")
expect(response.body).to include("/live/#{session.id}")
expect(response.body).not_to include("Aruba")
end
it "aggiorna il punteggio via API" do
token = Sessions::RegiaAccess.new(session).issue_token!
session.create_score_state!(home_sets: 0, away_sets: 0, home_points: 0, away_points: 0, current_set: 1)
patch public_regia_score_path(token), params: { cmd: "home_point" }
expect(response).to have_http_status(:ok)
expect(session.score_state.reload.home_points).to eq(1)
end
it "mette in pausa e riprende la diretta" do
mtx = instance_double(
Mediamtx::Client,
set_always_available: true,
set_path_recording: true,
delete_path: true,
list_paths: []
)
allow(Mediamtx::Client).to receive(:new).and_return(mtx)
token = Sessions::RegiaAccess.new(session).issue_token!
post public_regia_pause_path(token)
expect(response).to have_http_status(:ok)
expect(session.reload.status).to eq("paused")
post public_regia_resume_path(token)
expect(response).to have_http_status(:ok)
expect(session.reload.status).to eq("connecting")
end
it "emette token valido anche oltre le 8 ore dalla partenza" do
session.update!(started_at: 9.hours.ago)
token = Sessions::RegiaAccess.new(session).issue_token!
session.reload
expect(session.regia_token_expires_at).to be > Time.current
get public_regia_path(token)
expect(response).to have_http_status(:ok)
end
end