このコミットが含まれているのは:
@@ -0,0 +1,47 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe TagVersionRecorder do
|
||||
let(:user) { create_member_user! }
|
||||
let(:tag) { create(:tag, primary_name: '日本語名') }
|
||||
|
||||
before do
|
||||
Language.insert_all!([{ code: 'en', name: 'English', created_at: Time.current }])
|
||||
Script.insert_all!([{ code: 'Latn', name: 'Latin', created_at: Time.current }])
|
||||
Locale.insert_all!([{ code: 'en', language_code: 'en', script_code: 'Latn',
|
||||
name: 'English', created_at: Time.current }])
|
||||
TagName.create!(tag:, language_code: 'ja', script_code: 'Jpan', name: '別名',
|
||||
primary_flg: false,
|
||||
canonical_id: tag.tag_name_id)
|
||||
TagName.create!(tag:, language_code: 'en', script_code: 'Latn', name: 'English name',
|
||||
primary_flg: true)
|
||||
TagName.create!(tag:, language_code: 'en', script_code: 'Latn', name: 'English alias',
|
||||
primary_flg: false)
|
||||
end
|
||||
|
||||
it 'snapshots every language primary name and alias deterministically' do
|
||||
version = described_class.record!(tag:, event_type: :create, created_by_user: user)
|
||||
|
||||
expect(version.names).to eq([
|
||||
{ 'language_code' => 'en', 'name' => 'English name', 'script_code' => 'Latn',
|
||||
'primary_flg' => true },
|
||||
{ 'language_code' => 'en', 'name' => 'English alias', 'script_code' => 'Latn',
|
||||
'primary_flg' => false },
|
||||
{ 'language_code' => 'ja', 'name' => '日本語名', 'script_code' => 'Jpan',
|
||||
'primary_flg' => true },
|
||||
{ 'language_code' => 'ja', 'name' => '別名', 'script_code' => 'Jpan',
|
||||
'primary_flg' => false }
|
||||
])
|
||||
end
|
||||
|
||||
it 'creates a version for an English-only name change and preserves prior names' do
|
||||
original = described_class.record!(tag:, event_type: :create, created_by_user: user)
|
||||
TagName.find_by!(tag:, language_code: 'en', primary_flg: true).update!(name: 'Renamed')
|
||||
|
||||
updated = described_class.record!(tag:, event_type: :update, created_by_user: user)
|
||||
|
||||
expect(updated.version_no).to eq(2)
|
||||
expect(original.reload.names).to include(
|
||||
hash_including('language_code' => 'en', 'name' => 'English name'))
|
||||
expect(updated.names).to include(hash_including('language_code' => 'en', 'name' => 'Renamed'))
|
||||
end
|
||||
end
|
||||
新しいイシューから参照
ユーザーをブロックする