このコミットが含まれているのは:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
新しいイシューから参照
ユーザーをブロックする