Files
grecia/spec/controllers/application_controller_spec.rb
Javi Martín 6de4737b70 Allow different default locales per tenant
Note that, for everything to work consistently, we need to make sure
that the default locale is one of the available locales.

Also note that we aren't overwriting the `#save ` method set by
globalize. I didn't feel too comfortable changing a monkey-patch which
ideally shouldn't be there in the first place, I haven't found a case
where `Globalize.locale` is `nil` (since it defaults to `I18n.locale`,
which should never be `nil`), so using `I18n.default_locale` probably
doesn't affect us.
2024-06-05 16:10:56 +02:00

88 lines
2.1 KiB
Ruby

require "rails_helper"
describe ApplicationController do
controller do
skip_authorization_check
def index
render plain: I18n.locale
end
end
describe "#current_budget" do
it "returns the last budget that is not in draft phase" do
create(:budget, :finished, created_at: 2.years.ago, name: "Old")
create(:budget, :accepting, created_at: 1.year.ago, name: "Previous")
create(:budget, :accepting, created_at: 1.month.ago, name: "Current")
create(:budget, :drafting, created_at: 1.week.ago, name: "Next")
budget = subject.instance_eval { current_budget }
expect(budget.name).to eq("Current")
end
end
describe "#switch_locale" do
it "uses the default locale by default" do
Setting["locales.default"] = "pt-BR"
get :index
expect(response.body).to eq "pt-BR"
end
it "uses the locale in the parameters when it's there" do
get :index, params: { locale: :es }
expect(response.body).to eq "es"
end
it "uses the locale in the session if there are no parameters" do
get :index, params: { locale: :es }
expect(response.body).to eq "es"
get :index
expect(response.body).to eq "es"
end
it "uses the locale in the parameters even when it's in the session" do
get :index
expect(response.body).to eq "en"
get :index, params: { locale: :es }
expect(response.body).to eq "es"
end
it "only accepts enabled locales" do
Setting["locales.enabled"] = "en es fr"
get :index, params: { locale: :es }
expect(response.body).to eq "es"
get :index, params: { locale: :de }
expect(response.body).to eq "es"
get :index, params: { locale: :fr }
expect(response.body).to eq "fr"
end
context "authenticated user" do
let(:user) { create(:user) }
before { sign_in(user) }
it "updates the prefered locale when it's in the parameters" do
get :index, params: { locale: :es }
expect(user.reload.locale).to eq "es"
expect(response.body).to eq "es"
end
end
end
end