このコミットが含まれているのは:
2026-09-28 00:30:03 +09:00
コミット 28e638e360
18個のファイルの変更、209行の追加、68行の削除
+4
ファイルの表示
@@ -12,6 +12,8 @@ RSpec.describe VersionRecord, type: :model do
name: primary_tag_name_for(tag, 'ja').name,
category: tag.category,
aliases: '',
names: [{ language_code: 'ja', name: primary_tag_name_for(tag, 'ja').name,
script_code: 'Jpan', primary_flg: true }],
parent_tag_ids: '',
created_at: Time.current,
created_by_user: nil
@@ -30,6 +32,8 @@ RSpec.describe VersionRecord, type: :model do
name: primary_tag_name_for(tag, 'ja').name,
category: tag.category,
aliases: '',
names: [{ language_code: 'ja', name: primary_tag_name_for(tag, 'ja').name,
script_code: 'Jpan', primary_flg: true }],
parent_tag_ids: '',
created_at: Time.current,
created_by_user: nil
+5
ファイルの表示
@@ -36,6 +36,11 @@ RSpec.describe 'TagVersions API', type: :request do
category: category,
deprecated_at: deprecated_at,
aliases: Array(aliases).join(' '),
names: [{ language_code: 'ja', name: name, script_code: 'Jpan',
primary_flg: true }] + Array(aliases).map { |alias_name|
{ language_code: 'ja', name: alias_name, script_code: 'Jpan',
primary_flg: false }
},
parent_tag_ids: Array(parent_tags).map(&:id).join(' '),
created_by_user: created_by_user,
created_at: created_at)
+47
ファイルの表示
@@ -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