# 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