このコミットが含まれているのは:
@@ -174,20 +174,20 @@ RSpec.describe 'nico:sync' do
|
||||
|
||||
def create_post_version_for!(post, version_no: 1, event_type: 'create', created_by_user: nil)
|
||||
PostVersion.create!(
|
||||
post: post,
|
||||
version_no: version_no,
|
||||
event_type: 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: Time.current,
|
||||
created_by_user: created_by_user
|
||||
)
|
||||
event_id: create_event!(event_type: 'unknown').id,
|
||||
post: post,
|
||||
version_no: version_no,
|
||||
event_type: 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: Time.current,
|
||||
created_by_user: created_by_user)
|
||||
end
|
||||
|
||||
it '新規 post 作成時に version 1 を作る' do
|
||||
@@ -209,6 +209,7 @@ RSpec.describe 'nico:sync' do
|
||||
expect {
|
||||
run_rake_task('nico:sync')
|
||||
}.to change(PostVersion, :count).by(1)
|
||||
.and change { event_rows.length }.by(1)
|
||||
|
||||
post = Post.find_by!(url: 'https://www.nicovideo.jp/watch/sm9')
|
||||
version = post.post_versions.order(:version_no).last
|
||||
@@ -217,6 +218,32 @@ RSpec.describe 'nico:sync' do
|
||||
expect(version.event_type).to eq('create')
|
||||
expect(version.created_by_user).to be_nil
|
||||
expect(version.tags).to eq(snapshot_tags(post.reload))
|
||||
event = event_rows.last
|
||||
expect(event).to include('event_type' => 'posts.sync', 'created_by_user_id' => nil)
|
||||
expect(version.event_id).to eq(event.fetch('id'))
|
||||
end
|
||||
|
||||
it 'groups created and updated post histories into one sync event' do
|
||||
existing = create(:post, title: 'old', url: 'https://www.nicovideo.jp/watch/sm9')
|
||||
stub_python([
|
||||
{ 'code' => 'sm9', 'title' => 'updated', 'tags' => [] },
|
||||
{ 'code' => 'sm10', 'title' => 'created', 'tags' => [] }])
|
||||
allow(URI).to receive(:open).and_return(StringIO.new('<html></html>'))
|
||||
previous_post_ids = PostVersion.pluck(:id)
|
||||
previous_tag_ids = TagVersion.pluck(:id)
|
||||
|
||||
expect { run_rake_task('nico:sync') }.to change { event_rows.length }.by(1)
|
||||
|
||||
event = event_rows.last
|
||||
expect(event).to include('event_type' => 'posts.sync', 'created_by_user_id' => nil)
|
||||
created = Post.find_by!(url: 'https://www.nicovideo.jp/watch/sm10')
|
||||
versions = PostVersion.where.not(id: previous_post_ids)
|
||||
expect(versions.pluck(:post_id).uniq).to contain_exactly(existing.id, created.id)
|
||||
expect(versions.pluck(:event_type)).to include('create', 'update')
|
||||
expect(versions.pluck(:event_id).uniq).to eq([event.fetch('id')])
|
||||
tag_versions = TagVersion.where.not(id: previous_tag_ids)
|
||||
expect(tag_versions).not_to be_empty
|
||||
expect(tag_versions.pluck(:event_id).uniq).to eq([event.fetch('id')])
|
||||
end
|
||||
|
||||
it '既存 post の内容または tags が変わったとき update version を作る' do
|
||||
@@ -282,6 +309,7 @@ RSpec.describe 'nico:sync' do
|
||||
}])
|
||||
|
||||
allow(URI).to receive(:open).and_return(StringIO.new('<html></html>'))
|
||||
events = event_rows
|
||||
|
||||
expect {
|
||||
run_rake_task('nico:sync')
|
||||
@@ -291,6 +319,7 @@ RSpec.describe 'nico:sync' do
|
||||
expect(version.version_no).to eq(1)
|
||||
expect(version.event_type).to eq('create')
|
||||
expect(version.tags).to eq(snapshot_tags(post.reload))
|
||||
expect(event_rows).to eq(events)
|
||||
end
|
||||
|
||||
it '新規 nico tag に nico tag version を作る' do
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする