Permette titolo, testo e link diversi per Android e iOS negli avvisi.

Separa i canali app e mostra il nodo ingest nelle sessioni admin.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-20 16:09:04 +02:00
co-authored by Cursor
parent 43d5003de8
commit a07f231417
24 changed files with 366 additions and 69 deletions
@@ -3,21 +3,23 @@
require "rails_helper"
RSpec.describe "Api::V1::Announcements", type: :request do
it "GET /api/v1/announcements senza autenticazione restituisce solo gli avvisi attivi per l'app" do
it "GET /api/v1/announcements senza autenticazione restituisce solo gli avvisi attivi per la piattaforma" do
AppAnnouncement.create!(
kind: "maintenance",
severity: "warning",
status: "published",
title: "Manutenzione stasera",
body: "Dalle 23:00 alle 01:00 il servizio sarà offline.",
show_on_app: true
show_on_android: true,
show_on_ios: true
)
AppAnnouncement.create!(
kind: "info",
status: "published",
title: "Solo sito",
body: "Non in app",
show_on_app: false,
show_on_android: false,
show_on_ios: false,
show_on_web_public: true
)
AppAnnouncement.create!(
@@ -26,14 +28,27 @@ RSpec.describe "Api::V1::Announcements", type: :request do
title: "Bozza",
body: "Non deve uscire"
)
AppAnnouncement.create!(
kind: "update",
status: "published",
title: "Aggiorna",
body: "Versione nuova",
show_on_android: true,
show_on_ios: false,
android_title: "Aggiorna Android",
android_action_url: "https://play.google.com/store/apps/details?id=com.matchlivetv.match_live_tv"
)
get "/api/v1/announcements", params: { platform: "android" }
expect(response).to have_http_status(:ok)
body = JSON.parse(response.body)
expect(body.length).to eq(1)
expect(body.first["title"]).to eq("Manutenzione stasera")
expect(body.first["kind"]).to eq("maintenance")
expect(body.first["dismissible"]).to eq(true)
android_body = JSON.parse(response.body)
expect(android_body.map { |row| row["title"] }).to contain_exactly("Manutenzione stasera", "Aggiorna Android")
get "/api/v1/announcements", params: { platform: "ios" }
expect(response).to have_http_status(:ok)
ios_body = JSON.parse(response.body)
expect(ios_body.map { |row| row["title"] }).to eq(["Manutenzione stasera"])
end
end