2024-02-23 14:05:12 +01:00
|
|
|
# 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
|
2024-03-27 11:04:46 +01:00
|
|
|
expect(rendered.to_html).to have_link("demarches.gouv.fr", href: "http://demarches.gouv.fr/admin/procedures")
|
2024-02-23 14:05:12 +01:00
|
|
|
expect(rendered.to_html).not_to include("window.location")
|
|
|
|
expect(rendered.to_html).to include("Suivez ce lien")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|