require "rails_helper" RSpec.describe "Public team transmission invite", type: :request do let!(:coach) do User.create!(email: "invite-owner@test.it", name: "Owner", password: "Password123", role: "coach") end let!(:club) do c = Club.create!(name: "Invite Club", sport: "volleyball", primary_color: "#e53935", secondary_color: "#ffffff") ClubMembership.create!(user: coach, club: c, role: "owner") load Rails.root.join("db/seeds/plans.rb") Billing::AssignPlan.call(club: c, plan_slug: "premium_light") c end let!(:team) { club.teams.create!(name: "U13 Black", sport: "volleyball") } def login! post public_login_path, params: { email: coach.email, password: "Password123" } end it "mostra il form invito sulla pagina dettagli squadra" do login! get public_team_details_path(team) expect(response).to have_http_status(:ok) expect(response.body).to include("Invita un account a trasmettere") expect(response.body).to include('id="invita-trasmissione"') expect(response.body).to include("#responsabili-trasmissione") end it "GET /teams/:id/invite reindirizza ai dettagli con ancora" do login! get public_team_invite_path(team) expect(response).to redirect_to(public_team_details_path(team, anchor: "invita-trasmissione")) end it "genera il link, invia l'email e li mostra sui dettagli dopo il POST" do login! expect { post public_team_invite_path(team), params: { email: "streamer@test.it", staff_kind: "transmission" } }.to change { team.team_invitations.count }.by(1) .and change { ActionMailer::Base.deliveries.size }.by(1) expect(response).to redirect_to(public_team_details_path(team, anchor: "invito-generato")) follow_redirect! expect(response.body).to include("Invito inviato a streamer@test.it") expect(response.body).to include("id=\"invito-generato\"") expect(response.body).to include("/join/") expect(response.body).to include("streamer@test.it") mail = ActionMailer::Base.deliveries.last expect(mail.to).to eq(["streamer@test.it"]) expect(mail.subject).to include("U13 Black") expect(mail.body.encoded).to include("/join/") end end