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