docbrown/spec/services/users/estimate_default_language_spec.rb
Anna Buianova dd11478659 Change format of the user languages_settings #2369 (#2496)
* 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
2019-04-30 17:01:19 -04:00

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