このコミットが含まれているのは:
@@ -50,6 +50,8 @@ RSpec.describe 'Posts API', type: :request do
|
||||
post:,
|
||||
version_no: 1,
|
||||
event_type: 'create',
|
||||
event_id: create_event!(
|
||||
event_type: 'posts.create', created_by_user: post.uploaded_user).id,
|
||||
title: post.title,
|
||||
url: post.url,
|
||||
thumbnail_base: post.thumbnail_base,
|
||||
@@ -1027,7 +1029,7 @@ RSpec.describe 'Posts API', type: :request do
|
||||
|
||||
it 'dry-runs without persisting posts or new tags' do
|
||||
sign_in_as(member)
|
||||
counts = [Post.count, Tag.count, TagName.count]
|
||||
counts = [Post.count, Tag.count, TagName.count, event_rows.length]
|
||||
|
||||
post '/posts?dry=1', params: post_write_params(
|
||||
title: 'dry-run post',
|
||||
@@ -1043,7 +1045,7 @@ RSpec.describe 'Posts API', type: :request do
|
||||
[{ 'name' => 'new_dry_run_tag',
|
||||
'category' => 'character',
|
||||
'section_literals' => [] }])
|
||||
expect([Post.count, Tag.count, TagName.count]).to eq(counts)
|
||||
expect([Post.count, Tag.count, TagName.count, event_rows.length]).to eq(counts)
|
||||
end
|
||||
|
||||
it 'dry-runs an existing URL without validating its upload' do
|
||||
@@ -2218,20 +2220,20 @@ RSpec.describe 'Posts API', type: :request do
|
||||
|
||||
def create_post_version! post, version_no:, event_type:, created_by_user:, created_at:
|
||||
PostVersion.create!(
|
||||
post:,
|
||||
version_no:,
|
||||
event_type:,
|
||||
title: post.title,
|
||||
url: post.url,
|
||||
thumbnail_base: post.thumbnail_base,
|
||||
tags: snapshot_tags(post),
|
||||
tags_json: post.snapshot_tags_json,
|
||||
parent_post_ids: post.snapshot_parent_post_ids.join(' '),
|
||||
original_created_from: post.original_created_from,
|
||||
original_created_before: post.original_created_before,
|
||||
created_at:,
|
||||
created_by_user:
|
||||
)
|
||||
event_id: create_event!(event_type: 'unknown').id,
|
||||
post:,
|
||||
version_no:,
|
||||
event_type:,
|
||||
title: post.title,
|
||||
url: post.url,
|
||||
thumbnail_base: post.thumbnail_base,
|
||||
tags: snapshot_tags(post),
|
||||
tags_json: post.snapshot_tags_json,
|
||||
parent_post_ids: post.snapshot_parent_post_ids.join(' '),
|
||||
original_created_from: post.original_created_from,
|
||||
original_created_before: post.original_created_before,
|
||||
created_at:,
|
||||
created_by_user:)
|
||||
end
|
||||
|
||||
let!(:v1) do
|
||||
@@ -2559,6 +2561,7 @@ RSpec.describe 'Posts API', type: :request do
|
||||
tags: 'spec_tag',
|
||||
thumbnail: dummy_upload)
|
||||
end.to change(PostVersion, :count).by(1)
|
||||
.and change { event_rows.length }.by(1)
|
||||
|
||||
expect(response).to have_http_status(:created)
|
||||
|
||||
@@ -2570,6 +2573,13 @@ RSpec.describe 'Posts API', type: :request do
|
||||
expect(version.url).to eq('https://example.com/versioned-post')
|
||||
expect(version.created_by_user_id).to eq(member.id)
|
||||
expect(version.tags).to eq(snapshot_tags(created_post))
|
||||
event = event_rows.last
|
||||
expect(event).to include(
|
||||
'event_type' => 'posts.create', 'created_by_user_id' => member.id)
|
||||
expect(version.event_id).to eq(event.fetch('id'))
|
||||
tag_versions = TagVersion.where(tag_id: created_post.tags.select(:id))
|
||||
expect(tag_versions).not_to be_empty
|
||||
expect(tag_versions.pluck(:event_id).uniq).to eq([event.fetch('id')])
|
||||
end
|
||||
|
||||
it 'creates next version on PUT /posts/:id when snapshot changes' do
|
||||
@@ -2585,6 +2595,7 @@ RSpec.describe 'Posts API', type: :request do
|
||||
title: 'updated title',
|
||||
tags: 'spec_tag_2')
|
||||
end.to change(PostVersion, :count).by(1)
|
||||
.and change { event_rows.length }.by(1)
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
|
||||
@@ -2594,6 +2605,12 @@ RSpec.describe 'Posts API', type: :request do
|
||||
expect(version.title).to eq('updated title')
|
||||
expect(version.created_by_user_id).to eq(member.id)
|
||||
expect(version.tags).to eq(snapshot_tags(post_record.reload))
|
||||
event = event_rows.last
|
||||
expect(event).to include(
|
||||
'event_type' => 'posts.update', 'created_by_user_id' => member.id)
|
||||
expect(version.event_id).to eq(event.fetch('id'))
|
||||
tag_version = TagVersion.find_by!(tag_id: tag_name2.reload.tag_id, version_no: 1)
|
||||
expect(tag_version.event_id).to eq(event.fetch('id'))
|
||||
end
|
||||
|
||||
it 'does not create a new version on PUT /posts/:id when snapshot is unchanged' do
|
||||
@@ -2602,6 +2619,7 @@ RSpec.describe 'Posts API', type: :request do
|
||||
PostTag.create!(post: post_record, tag: Tag.no_deerjikist)
|
||||
base_version = create_post_version_for!(post_record.reload)
|
||||
|
||||
events = event_rows
|
||||
expect {
|
||||
put "/posts/#{post_record.id}", params: post_write_params(
|
||||
base_version_no: base_version.version_no,
|
||||
@@ -2615,10 +2633,12 @@ RSpec.describe 'Posts API', type: :request do
|
||||
expect(version.version_no).to eq(1)
|
||||
expect(version.event_type).to eq('create')
|
||||
expect(version.tags).to eq(snapshot_tags(post_record))
|
||||
expect(event_rows).to eq(events)
|
||||
end
|
||||
|
||||
it 'does not create a version when POST /posts is invalid' do
|
||||
sign_in_as(member)
|
||||
events = event_rows
|
||||
|
||||
expect do
|
||||
post '/posts', params: post_write_params(
|
||||
@@ -2629,11 +2649,13 @@ RSpec.describe 'Posts API', type: :request do
|
||||
end.not_to change(PostVersion, :count)
|
||||
|
||||
expect(response).to have_http_status(:unprocessable_entity)
|
||||
expect(event_rows).to eq(events)
|
||||
end
|
||||
|
||||
it 'does not create a version when PUT /posts/:id is invalid' do
|
||||
sign_in_as(member)
|
||||
base_version = create_post_version_for!(post_record)
|
||||
events = event_rows
|
||||
|
||||
expect do
|
||||
put "/posts/#{post_record.id}", params: post_write_params(
|
||||
@@ -2645,6 +2667,7 @@ RSpec.describe 'Posts API', type: :request do
|
||||
end.not_to change(PostVersion, :count)
|
||||
|
||||
expect(response).to have_http_status(:unprocessable_entity)
|
||||
expect(event_rows).to eq(events)
|
||||
end
|
||||
|
||||
it 'rejects second-bearing original created timestamps on POST /posts' do
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする