# frozen_string_literal: true require "rails_helper" RSpec.describe Tournaments::ComposeInviteEmail do it "sostituisce i token e rimuove HTML pericoloso" do html = <<~HTML

Ciao custom

x

{{link_invito}}

Scade il {{scadenza}}

HTML out = described_class.call( html: html, invite_url: "https://www.example.com/join/token-ok", expires_on: "10 settembre 2026" ) expect(out).to include("Ciao custom") expect(out).to include("https://www.example.com/join/token-ok") expect(out).to include("10 settembre 2026") expect(out).to include("/rails/active_storage/blobs/redirect/abc/logo.png") expect(out).not_to include("Solo testo

", invite_url: "https://www.example.com/join/z") expect(out).to include("Solo testo") expect(out).to include("https://www.example.com/join/z") end it "mantiene i token del modello quando sanitizza una bozza" do html = %(

Bozza

Apri

Nota

) out = described_class.sanitize_html(html) expect(out).to include("Bozza") expect(out).to include("{{link_invito}}") expect(out).to include("Nota") expect(out).to include("data-invite-note") end it "compone il modello predefinito senza chiavi I18n mancanti" do tournament = instance_double(Tournament, name: "Open", club: instance_double(Club, name: "Tigers")) invited_by = instance_double(User, name: "Owner") html = I18n.with_locale(:it) do described_class.default_html(tournament: tournament, invited_by: invited_by) end expect(html).not_to include("Translation missing") expect(html).to include("Open") expect(html).to include("Tigers") expect(html).to include("{{link_invito}}") end end