このコミットが含まれているのは:
@@ -7,8 +7,7 @@ module TagGroupRecords
|
||||
'tag_groups', 'tag_group_tags', 'tag_group_groups',
|
||||
'tag_group_placements', 'tag_group_versions'].freeze
|
||||
WRITE_TABLES = GROUP_TABLES + [
|
||||
'wiki_pages', 'wiki_revisions', 'wiki_versions', 'wiki_lines',
|
||||
'wiki_revision_lines', 'tag_names', 'tag_description_versions',
|
||||
'tag_names', 'tag_description_versions',
|
||||
'tag_descriptions']
|
||||
|
||||
def group_connection = ApplicationRecord.connection
|
||||
@@ -34,13 +33,11 @@ module TagGroupRecords
|
||||
WRITE_TABLES.to_h { |table| [table, group_rows(table)] }
|
||||
end
|
||||
|
||||
def expect_noop_group_update group_id:, page:
|
||||
def expect_noop_group_update group_id:
|
||||
before_state = group_state
|
||||
group = TagGroup.find(group_id)
|
||||
version_id = TagGroupVersion.find_by!(
|
||||
tag_group_id: group_id, version_no: group.version_no).id
|
||||
revision_id = page.reload.current_revision.id
|
||||
wiki_version_id = page.wiki_versions.order(version_no: :desc).first.id
|
||||
writes = []
|
||||
tables = Regexp.union(WRITE_TABLES)
|
||||
subscriber = lambda do |*args|
|
||||
@@ -59,8 +56,6 @@ module TagGroupRecords
|
||||
end
|
||||
expect(TagGroupVersion.find_by!(
|
||||
tag_group_id: group_id, version_no: group.reload.version_no).id).to eq(version_id)
|
||||
expect(page.reload.current_revision.id).to eq(revision_id)
|
||||
expect(page.wiki_versions.order(version_no: :desc).first.id).to eq(wiki_version_id)
|
||||
expect(writes).to be_empty
|
||||
end
|
||||
end
|
||||
@@ -99,25 +94,13 @@ module TagGroupRecords
|
||||
tag.reload
|
||||
end
|
||||
|
||||
def legacy_group name, body
|
||||
# Historical fixtures preserve blank lines independently of today's writer.
|
||||
body = body.sub(/\n+\z/, '')
|
||||
page = WikiPage.create!(
|
||||
tag_name: create(:tag_name, name: "タググループ:#{ name }"),
|
||||
body:, created_user: user, updated_user: user)
|
||||
WikiVersionRecorder.record!(page:, event_type: :create, created_by_user: user)
|
||||
lines = body.split("\n")
|
||||
shas = lines.map { Digest::SHA256.hexdigest(_1) }
|
||||
revision = WikiRevision.create!(
|
||||
wiki_page: page, kind: :content, created_user: user, lines_count: lines.size,
|
||||
tree_sha256: Digest::SHA256.hexdigest(shas.join(',')))
|
||||
lines.each_with_index do |line, position|
|
||||
sha = shas.fetch(position)
|
||||
line_id = WikiLine.find_by(sha256: sha)&.id || insert_group_row('wiki_lines', {
|
||||
body: line, sha256: sha, created_at: Time.current, updated_at: Time.current })
|
||||
WikiRevisionLine.create!(wiki_revision: revision, wiki_line_id: line_id, position:)
|
||||
end
|
||||
page
|
||||
def create_markdown_group name, body
|
||||
parsed = TagGroupMarkdownParser.parse(body:)
|
||||
TagGroupOperation.create!(name:, actor: user, **parsed.slice(:description, :members, :placements))
|
||||
end
|
||||
|
||||
def group_markdown group
|
||||
TagGroupMarkdownRenderer.render(TagGroupRepr.one(group.reload))
|
||||
end
|
||||
|
||||
def seed_group name:, placements: [], members: [], description: nil, id: nil
|
||||
@@ -176,16 +159,6 @@ module TagGroupRecords
|
||||
"/wiki/title/#{ CGI.escapeURIComponent("タググループ:#{ name }") }"
|
||||
end
|
||||
|
||||
def migrate_groups
|
||||
require_relative '../../db/migrate/20261008010000_migrate_tag_groups_from_wiki_pages'
|
||||
migration = MigrateTagGroupsFromWikiPages.new
|
||||
@group_migration_messages = []
|
||||
allow(migration).to receive(:say) do |message, *_args|
|
||||
@group_migration_messages << message if message.start_with?('Wiki #', 'Tag Group')
|
||||
end
|
||||
migration.suppress_messages { migration.up }
|
||||
end
|
||||
|
||||
def expect_group_snapshot group_id, number:, placements:, members:, description: nil
|
||||
current = group_rows('tag_groups', id: group_id).sole
|
||||
version = group_version(group_id, number)
|
||||
|
||||
@@ -1,20 +1,14 @@
|
||||
# Historical records must remain seedable after application creation is frozen.
|
||||
module WikiRecords
|
||||
def seed_wiki_page(tag_name:, body:, created_by_user:, message: nil)
|
||||
page = WikiPage.create!(tag_name:, body:,
|
||||
created_user: created_by_user, updated_user: created_by_user)
|
||||
revision = Wiki::Commit.legacy_content!(
|
||||
page:, body:, created_user: created_by_user, message:)
|
||||
if tag_name.tag && tag_name.language_code == 'ja'
|
||||
TagDescription.create!(
|
||||
id: page.id, tag: tag_name.tag, language_code: 'ja', body: page.reload.body,
|
||||
version_no: 1, created_by_user_id: created_by_user.id,
|
||||
updated_by_user_id: created_by_user.id)
|
||||
TagDescriptionVersion.create!(
|
||||
id: revision.id, tag_id: tag_name.tag_id, language_code: 'ja',
|
||||
version_no: 1, event_type: 'create', body: page.body,
|
||||
created_by_user_id: created_by_user.id, created_at: revision.created_at)
|
||||
end
|
||||
page
|
||||
def seed_description(tag_name:, body:, created_by_user:, message: nil)
|
||||
TagDescriptionOperation.create!(tag: tag_name.tag, body:, created_by_user:, message:)
|
||||
end
|
||||
|
||||
def description_versions(description)
|
||||
TagDescriptionVersion.where(
|
||||
tag_id: description.tag_id, language_code: description.language_code)
|
||||
end
|
||||
|
||||
def current_description_version(description)
|
||||
description_versions(description).find_by!(version_no: description.reload.version_no)
|
||||
end
|
||||
end
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする