Add scope FederalSubject.order_by_display_name
This commit is contained in:
parent
ee03c66757
commit
6f58f71ab2
3 changed files with 89 additions and 1 deletions
|
@ -6,7 +6,7 @@ class FederalSubjectsController < ApplicationController
|
|||
# GET /federal_subjects
|
||||
def index
|
||||
authorize :federal_subject
|
||||
@federal_subjects = policy_scope(FederalSubject)
|
||||
@federal_subjects = policy_scope(FederalSubject).order_by_display_name
|
||||
end
|
||||
|
||||
# GET /federal_subjects/:id
|
||||
|
|
|
@ -1,6 +1,18 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class FederalSubject < ApplicationRecord
|
||||
##########
|
||||
# Scopes #
|
||||
##########
|
||||
|
||||
scope :order_by_display_name, lambda { |dir = :asc|
|
||||
if I18n.locale == :ru
|
||||
order(native_name: dir)
|
||||
else
|
||||
order(english_name: dir)
|
||||
end
|
||||
}
|
||||
|
||||
################
|
||||
# Associations #
|
||||
################
|
||||
|
|
|
@ -19,6 +19,82 @@ RSpec.describe FederalSubject do
|
|||
it { is_expected.to validate_uniqueness_of :english_name }
|
||||
it { is_expected.to validate_uniqueness_of :native_name }
|
||||
|
||||
describe '.order_by_display_name' do
|
||||
let! :federal_subject_1 do
|
||||
create :federal_subject, english_name: '1', native_name: '3'
|
||||
end
|
||||
|
||||
let! :federal_subject_2 do
|
||||
create :federal_subject, english_name: '3', native_name: '5'
|
||||
end
|
||||
|
||||
let! :federal_subject_3 do
|
||||
create :federal_subject, english_name: '4', native_name: '4'
|
||||
end
|
||||
|
||||
let! :federal_subject_4 do
|
||||
create :federal_subject, english_name: '2', native_name: '1'
|
||||
end
|
||||
|
||||
let! :federal_subject_5 do
|
||||
create :federal_subject, english_name: '5', native_name: '2'
|
||||
end
|
||||
|
||||
around do |example|
|
||||
I18n.with_locale locale do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
context 'when locale is "en"' do
|
||||
let(:locale) { :en }
|
||||
|
||||
specify do
|
||||
expect(described_class.order_by_display_name).to eq [
|
||||
federal_subject_1,
|
||||
federal_subject_4,
|
||||
federal_subject_2,
|
||||
federal_subject_3,
|
||||
federal_subject_5,
|
||||
]
|
||||
end
|
||||
|
||||
specify do
|
||||
expect(described_class.order_by_display_name(:desc)).to eq [
|
||||
federal_subject_5,
|
||||
federal_subject_3,
|
||||
federal_subject_2,
|
||||
federal_subject_4,
|
||||
federal_subject_1,
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
context 'when locale is "ru"' do
|
||||
let(:locale) { :ru }
|
||||
|
||||
specify do
|
||||
expect(described_class.order_by_display_name).to eq [
|
||||
federal_subject_4,
|
||||
federal_subject_5,
|
||||
federal_subject_1,
|
||||
federal_subject_3,
|
||||
federal_subject_2,
|
||||
]
|
||||
end
|
||||
|
||||
specify do
|
||||
expect(described_class.order_by_display_name(:desc)).to eq [
|
||||
federal_subject_2,
|
||||
federal_subject_3,
|
||||
federal_subject_1,
|
||||
federal_subject_5,
|
||||
federal_subject_4,
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#display_name' do
|
||||
subject do
|
||||
create :federal_subject, native_name: Faker::Address.unique.state
|
||||
|
|
Reference in a new issue