このコミットが含まれているのは:
2026-10-12 20:10:04 +09:00
コミット 2e98ed02e3
41個のファイルの変更、624行の追加、244行の削除
+33 -14
ファイルの表示
@@ -7,29 +7,37 @@ RSpec.describe Wiki::Commit do
def create_page title:, body: 'initial body'
seed_wiki_page(
tag_name: create(:tag_name, name: title),
tag_name: create(:tag, primary_name: title).tag_name('ja'),
body:,
created_by_user: user,
message: 'init')
end
describe '.create_content!' do
[:create_content!, :create_legacy_content!].each do |operation|
it "freezes #{ operation } without adding page or history" do
name = create(:tag_name, name: 'Help:frozen_service')
counts = [WikiPage.count, WikiRevision.count, WikiVersion.count]
begin
described_class.public_send(operation, tag_name: name, body: 'initial',
created_by_user: user)
rescue ActiveRecord::RecordInvalid
# A validation rejection is allowed; persistence is not.
end
expect([WikiPage.count, WikiRevision.count, WikiVersion.count]).to eq(counts)
end
it 'rejects standalone Help creation without adding page or history' do
name = create(:tag_name, name: 'Help:frozen_service')
counts = [WikiPage.count, WikiRevision.count, WikiVersion.count]
expect do
described_class.create_content!(tag_name: name, body: 'initial', created_by_user: user)
end.to raise_error(ActiveRecord::RecordInvalid)
expect([WikiPage.count, WikiRevision.count, WikiVersion.count]).to eq(counts)
end
it 'keeps the internal compatibility writer available' do
name = create(:tag_name, name: 'タググループ:compatibility_service')
page = nil
expect do
page = described_class.create_legacy_content!(
tag_name: name, body: 'initial', created_by_user: user)
end.to change(WikiPage, :count).by(1)
.and change(WikiRevision, :count).by(1)
.and change(WikiVersion, :count).by(1)
expect(page.current_revision.body).to eq('initial')
expect(page.wiki_versions.sole.body).to eq('initial')
end
it 'rejects body that becomes blank after normalisation' do
tag_name = create(:tag_name, name: 'commit_integrity_blank')
tag_name = create(:tag, primary_name: 'commit_integrity_blank').tag_name('ja')
expect {
described_class.create_content!(
@@ -45,6 +53,17 @@ RSpec.describe Wiki::Commit do
end
describe '.content!' do
it 'rejects standalone Help updates without modifying histories' do
page = seed_wiki_page(tag_name: create(:tag_name, name: 'Help:standalone'),
body: 'before', created_by_user: user)
counts = [WikiRevision.count, WikiVersion.count]
expect do
described_class.content!(page:, body: 'after', created_user: user)
end.to raise_error(ActiveRecord::RecordInvalid)
expect(page.reload.body).to eq('before')
expect([WikiRevision.count, WikiVersion.count]).to eq(counts)
end
it 'updates page body, revision, and version' do
page = create_page(title: 'commit_integrity_update', body: 'before')
current_id = page.current_revision.id
+1 -1
ファイルの表示
@@ -5,7 +5,7 @@ RSpec.describe Wiki::Commit do
let(:user) { create_member_user! }
def create_page(title: 'commit_spec_page', body: 'initial body')
tag_name = create(:tag_name, name: title)
tag_name = create(:tag, primary_name: title).tag_name('ja')
seed_wiki_page(
tag_name:,