Files
grecia/spec/components/layout/common_html_attributes_component_spec.rb
Javi Martín 5c61b72d21 Identify the current tenant in the <html> tag
This way it will be possible to write CSS and JavaScript code that will
only apply to specific tenants.

Note that CSS customization is still limited because it isn't possible
to use different SCSS variables per tenant.
2022-11-11 01:39:29 +01:00

67 lines
1.9 KiB
Ruby

require "rails_helper"
describe Layout::CommonHTMLAttributesComponent do
let(:component) { Layout::CommonHTMLAttributesComponent.new }
context "with multitenancy disabled" do
before { allow(Rails.application.config).to receive(:multitenancy).and_return(false) }
it "includes the default language by default" do
render_inline component
expect(page.text).to eq 'lang="en"'
end
it "includes the current language" do
I18n.with_locale(:es) { render_inline component }
expect(page.text).to eq 'lang="es"'
end
end
context "with multitenancy enabled" do
it "includes a class with the 'public' suffix for the default tenant" do
render_inline component
expect(page.text).to eq 'lang="en" class="tenant-public"'
end
it "includes a class with the schema name as suffix for other tenants" do
allow(Tenant).to receive(:current_schema).and_return "private"
render_inline component
expect(page.text).to eq 'lang="en" class="tenant-private"'
end
end
context "RTL languages" do
let!(:default_enforce) { I18n.enforce_available_locales }
before do
I18n.enforce_available_locales = false
allow(I18n).to receive(:available_locales).and_return(%i[ar en es])
end
after { I18n.enforce_available_locales = default_enforce }
context "with multitenancy disabled" do
before { allow(Rails.application.config).to receive(:multitenancy).and_return(false) }
it "includes the dir attribute" do
I18n.with_locale(:ar) { render_inline component }
expect(page.text).to eq 'dir="rtl" lang="ar"'
end
end
context "with multitenancy enabled" do
it "includes the dir and the class attributes" do
I18n.with_locale(:ar) { render_inline component }
expect(page.text).to eq 'dir="rtl" lang="ar" class="tenant-public"'
end
end
end
end