demarches-normaliennes/spec/components/switch_domain_banner_component_spec.rb

59 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
RSpec.describe SwitchDomainBannerComponent, type: :component do
let(:app_host_legacy) { "demarches-simplifiees.fr" }
let(:app_host) { "demarches.gouv.fr" }
let(:user) { create(:user) }
let(:request_host) { app_host_legacy }
let(:path) { "/" }
before do
allow(Current).to receive(:host).and_return(app_host)
stub_const("ApplicationHelper::APP_HOST_LEGACY", app_host_legacy)
stub_const("ApplicationHelper::APP_HOST", app_host)
Flipper.enable(:switch_domain)
end
after do
Flipper.disable(:switch_domain)
end
subject(:rendered) do
with_request_url path, host: request_host, format: nil do
render_inline(described_class.new(user: user))
end
end
context "when request is already on APP_HOST" do
let(:request_host) { app_host }
it "notify about names change" do
expect(rendered.to_html).to include("demarches-simplifiees.fr")
expect(rendered.to_html).to include(app_host)
expect(rendered.to_html).not_to include("window.location")
expect(rendered.to_html).not_to include("Suivez ce lien")
end
context "when user has already set preferred domain" do
let(:user) { create(:user, preferred_domain: :demarches_gouv_fr) }
it "does not render the banner" do
expect(rendered.to_html).to be_empty
end
end
end
describe "URL generation" do
let(:path) { "/admin/procedures" }
it "generate an url to the new domain" do
expect(rendered.to_html).to have_link("demarches.gouv.fr", href: "http://demarches.gouv.fr/admin/procedures")
expect(rendered.to_html).not_to include("window.location")
expect(rendered.to_html).to include("Suivez ce lien")
end
end
end