* Change format of user preferred languages * Make sure user language settings are set by default * Add missing expect to the user spec * Fix users/misc template * Move existing languages to a constant * Remove commented user code * Move languages out of User model * Update preferred languages accordingly to the available languages * Set user estimated language only if the language is available * Fix Portuguese spelling #2582
79 lines
3 KiB
Ruby
79 lines
3 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe Users::EstimateDefaultLanguage, type: :service do
|
|
it "estimates default language when the email is nil" do
|
|
no_email_user = create(:user, email: nil)
|
|
described_class.call(no_email_user)
|
|
no_email_user.reload
|
|
expect(no_email_user.estimated_default_language).to eq(nil)
|
|
end
|
|
|
|
it "estimates default language to be nil" do
|
|
user = create(:user)
|
|
described_class.call(user)
|
|
expect(user.estimated_default_language).to eq(nil)
|
|
expect(user.decorate.preferred_languages_array).to eq(%w[en])
|
|
end
|
|
|
|
it "estimates sets preferred languages to [en] when no lang data" do
|
|
user = create(:user)
|
|
described_class.call(user)
|
|
expect(user.decorate.preferred_languages_array).to eq(%w[en])
|
|
end
|
|
|
|
it "estimates default language to be japan with jp email" do
|
|
user = create(:user, email: "anna@example.jp")
|
|
described_class.call(user)
|
|
expect(user.estimated_default_language).to eq("ja")
|
|
end
|
|
|
|
it "estimates default language based on identity data dump" do
|
|
user = create(:user)
|
|
create(:identity, provider: :twitter, user: user, auth_data_dump: { "extra" => { "raw_info" => { "lang" => "it" } } })
|
|
described_class.call(user)
|
|
user.reload
|
|
expect(user.estimated_default_language).to eq("it")
|
|
end
|
|
|
|
it "sets preferred_languages_array" do
|
|
user = create(:user, email: "annaboo@example.jp")
|
|
described_class.call(user)
|
|
user.reload
|
|
expect(user.decorate.preferred_languages_array).to include("ja")
|
|
end
|
|
|
|
it "sets correct language_settings for jp" do
|
|
user = create(:user, email: "annabu@example.jp")
|
|
described_class.call(user)
|
|
user.reload
|
|
expect(user.language_settings).to eq("preferred_languages" => %w[en ja], "estimated_default_language" => "ja")
|
|
end
|
|
|
|
it "sets correct language_settings for pt" do
|
|
user = create(:user)
|
|
create(:identity, provider: :twitter, user: user, auth_data_dump: { "extra" => { "raw_info" => { "lang" => "pt" } } })
|
|
described_class.call(user)
|
|
user.reload
|
|
expect(user.language_settings).to eq("preferred_languages" => %w[en pt], "estimated_default_language" => "pt")
|
|
end
|
|
|
|
it "sets correct language_settings for no lang" do
|
|
user = create(:user, email: nil)
|
|
described_class.call(user)
|
|
expect(user.language_settings).to eq("preferred_languages" => %w[en], "estimated_default_language" => nil)
|
|
end
|
|
|
|
it "doesn't set incorrect language settings" do
|
|
user = create(:user)
|
|
create(:identity, provider: :twitter, user: user, auth_data_dump: { "extra" => { "raw_info" => { "lang" => "supermario" } } })
|
|
described_class.call(user)
|
|
expect(user.language_settings).to eq("preferred_languages" => %w[en], "estimated_default_language" => nil)
|
|
end
|
|
|
|
it "sets language settings when language is in twitter format (en-gb)" do
|
|
user = create(:user)
|
|
create(:identity, provider: :twitter, user: user, auth_data_dump: { "extra" => { "raw_info" => { "lang" => "en-gb" } } })
|
|
described_class.call(user)
|
|
expect(user.language_settings).to eq("preferred_languages" => %w[en], "estimated_default_language" => "en")
|
|
end
|
|
end
|