From c148ef5fb72e8882efe7c6f09576d951544fc0ae Mon Sep 17 00:00:00 2001 From: Domizio Demichelis Date: Sat, 11 Nov 2023 19:52:38 +0700 Subject: [PATCH] Test: Added locale files test --- lib/locales/cs.yml | 2 +- lib/locales/sw.yml | 2 +- lib/locales/vi.yml | 2 +- test/pagy/i18n_locales_test.rb | 49 ++++++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 test/pagy/i18n_locales_test.rb diff --git a/lib/locales/cs.yml b/lib/locales/cs.yml index f7593ea24..5b040bc38 100644 --- a/lib/locales/cs.yml +++ b/lib/locales/cs.yml @@ -1,4 +1,4 @@ -# :czech pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb) +# :west_slavic pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb) cs: pagy: diff --git a/lib/locales/sw.yml b/lib/locales/sw.yml index 49bf1f58c..ba7de4ae8 100644 --- a/lib/locales/sw.yml +++ b/lib/locales/sw.yml @@ -1,4 +1,4 @@ -# :one_other pluralization +# :one_other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb) sw: pagy: diff --git a/lib/locales/vi.yml b/lib/locales/vi.yml index 4c1a288fb..840847752 100644 --- a/lib/locales/vi.yml +++ b/lib/locales/vi.yml @@ -1,4 +1,4 @@ -# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb) +# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb) vi: pagy: diff --git a/test/pagy/i18n_locales_test.rb b/test/pagy/i18n_locales_test.rb new file mode 100644 index 000000000..faa6cff48 --- /dev/null +++ b/test/pagy/i18n_locales_test.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +require_relative '../test_helper' + +describe 'pagy/locales' do + let(:rules) { Pagy::I18n::P11n::RULE.keys } + let(:counts) do + { + arabic: %w[zero one two few many other], + east_slavic: %w[one few many other], + one_other: %w[one other], + one_two_other: %w[one two other], + one_upto_two_other: %w[one other], + other: %w[other], + polish: %w[one few many other], + west_slavic: %w[one few other] + } + end + + # locale files loop + Pagy.root.join('locales').each_child do |f| + next unless f.extname == '.yml' + + message = "locale file #{f}" + locale = f.basename.to_s[0..-5] + comment = f.readlines.first.to_s.strip + rule = comment.to_s.split[1][1..-1].to_s.to_sym + + it 'includes a comment with the pluralization rule and the i18n.rb reference' do + _(rules).must_include rule, message + _(comment).must_match 'https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb', message + end + it 'defines and matches the locale pluralization rule' do + _(Pagy::I18n::P11n::LOCALE[locale]).must_equal Pagy::I18n::P11n::RULE[rule], message + end + it 'pluralizes item_name according to the rule' do + hash = YAML.safe_load(f.read) + item_name = hash[locale]['pagy']['item_name'] + case item_name + when String + _(rule).must_equal :other + when Hash + _(item_name.keys - counts[rule]).must_be_empty + else + raise StandardError, "item_name must be Hash or String" + end + end + end +end