このコミットが含まれているのは:
2026-10-10 13:42:24 +09:00
コミット 20b5abbd2c
5個のファイルの変更、312行の追加、1行の削除
+31
ファイルの表示
@@ -34,6 +34,37 @@ module TagGroupRecords
WRITE_TABLES.to_h { |table| [table, group_rows(table)] }
end
def expect_noop_group_update group_id:, page:
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|
sql = args.last.fetch(:sql)
if sql.match?(/\A\s*(?:INSERT INTO|UPDATE|DELETE FROM)\s+`?(?:#{ tables })`?\s/i)
writes << sql
end
end
aggregate_failures 'no-op current state, history and SQL writes' do
ActiveSupport::Notifications.subscribed(subscriber, 'sql.active_record') { yield }
expect(response).to have_http_status(:ok)
after_state = group_state
before_state.each do |table, rows|
expect(after_state.fetch(table)).to eq(rows), "No-op changed #{ table }"
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
def expect_atomic_group_write table
before_state = group_state
failure = Class.new(StandardError)