Files
MatchLiveTv/backend/spec/requests/admin/announcements_spec.rb
eminuxandCursor f02782d0f0 Aggiunge traduzioni it/en/fr/de/es agli avvisi e toglie gli override Android/iOS.
Un avviso ha un testo per lingua; per differenziare le piattaforme si creano due avvisi. L'app riceve già il copy risolto da Accept-Language.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 16:26:30 +02:00

89 lines
3.0 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
RSpec.describe "Admin announcements", type: :request do
let!(:admin) { AdminAccount.create!(username: "ops-news", password: "Password123") }
before do
post admin_login_path, params: { username: "ops-news", password: "Password123" }
end
it "crea e pubblica un avviso visibile alle app e al sito" do
post admin_announcements_path, params: {
app_announcement: {
kind: "update",
severity: "info",
status: "published",
title: "Nuova versione",
body: "Aggiorna l'app dallo store.",
dismissible: "1",
show_on_android: "1",
show_on_ios: "1",
show_on_web_public: "1",
show_on_web_private: "0"
}
}
expect(response).to redirect_to(admin_announcements_path)
notice = AppAnnouncement.last
expect(notice.title).to eq("Nuova versione")
expect(notice).to be_published
expect(notice.show_on_android).to be(true)
expect(notice.show_on_ios).to be(true)
expect(notice.show_on_web_public).to be(true)
expect(notice.show_on_web_private).to be(false)
get admin_announcements_path
expect(response.body).to include("Nuova versione")
expect(response.body).to include(I18n.t("admin.announcements.channels.web_public"))
end
it "salva le traduzioni e mostra le schede lingua nel form" do
get new_admin_announcement_path
expect(response.body).to include(I18n.t("admin.announcements.form.locales_legend"))
expect(response.body).to include("English")
expect(response.body).to include("Français")
expect(response.body).to include("Deutsch")
expect(response.body).to include("Español")
expect(response.body).not_to include("name=\"app_announcement[android_title]\"")
expect(response.body).not_to include("name=\"app_announcement[ios_title]\"")
post admin_announcements_path, params: {
app_announcement: {
kind: "info",
severity: "info",
status: "published",
title: "Nuova versione",
body: "Aggiorna l'app dallo store.",
dismissible: "1",
show_on_android: "1",
show_on_ios: "1",
show_on_web_public: "1",
show_on_web_private: "0",
translations: {
en: { title: "A new version is out", body: "Update the app from the store." },
fr: { title: "Nouvelle version", body: "Mettez à jour l'application." }
}
}
}
expect(response).to redirect_to(admin_announcements_path)
notice = AppAnnouncement.last
expect(notice.translations["en"]["title"]).to eq("A new version is out")
expect(notice.translations["fr"]["title"]).to eq("Nouvelle version")
expect(notice.as_api_json(locale: :en)[:title]).to eq("A new version is out")
end
it "elimina un avviso" do
item = AppAnnouncement.create!(
kind: "info", status: "published", title: "Da togliere", body: "Test"
)
delete admin_announcement_path(item)
expect(response).to redirect_to(admin_announcements_path)
expect(AppAnnouncement.find_by(id: item.id)).to be_nil
end
end