# encoding: utf-8 require 'spec_helper' require 'fedux_org_stdlib/shell_language_detector' RSpec.describe ShellLanguageDetector do context '#detect' do it 'returns language' do environment = instance_double('FeduxOrgStdlib::ProcessEnvironment') allow(environment).to receive(:fetch).and_return 'de_DE.UTF-8' detector = ShellLanguageDetector.new environment: environment language = detector.detect expect(language.language_code).to eq :de expect(language.country_code).to eq :de end it 'returns language if is allowed' do environment = instance_double('FeduxOrgStdlib::ProcessEnvironment') allow(environment).to receive(:fetch).and_return 'en_GB.UTF-8' detector = ShellLanguageDetector.new environment: environment, default_country_code: :de, default_language_code: :de language = detector.detect allowed: :en expect(language.language_code).to eq :en expect(language.country_code).to eq :gb end it 'returns default language if is not allowed' do environment = instance_double('FeduxOrgStdlib::ProcessEnvironment') allow(environment).to receive(:fetch).and_return 'en_GB.UTF-8' detector = ShellLanguageDetector.new environment: environment, default_country_code: :de, default_language_code: :de language = detector.detect allowed: :de expect(language.language_code).to eq :de expect(language.country_code).to eq :de end it 'returns default language if is not allowed for multiple languages' do environment = instance_double('FeduxOrgStdlib::ProcessEnvironment') allow(environment).to receive(:fetch).and_return 'en_GB.UTF-8' detector = ShellLanguageDetector.new environment: environment, default_country_code: :de, default_language_code: :de language = detector.detect allowed: [:de, :nl] expect(language.language_code).to eq :de expect(language.country_code).to eq :de end it 'overwrite detected language' do environment = instance_double('FeduxOrgStdlib::ProcessEnvironment') allow(environment).to receive(:fetch).and_return 'en_GB.UTF-8' detector = ShellLanguageDetector.new environment: environment, default_country_code: :de, default_language_code: :de language = detector.detect allowed: [:de, :nl], overwrite: [:nl, :aw, :utf_8] expect(language.language_code).to eq :nl expect(language.country_code).to eq :aw expect(language.encoding).to eq :utf_8 end end end