Files
btrc-hub/backend/spec/tasks/post_similarity_calc_spec.rb
2026-01-22 23:30:08 +09:00

35 lines
1020 B
Ruby

require 'rails_helper'
RSpec.describe 'post_similarity:calc' do
include RakeTaskHelper
it 'calls Similarity::Calc with Post and :tags' do
# 必要最低限のデータ
t1 = Tag.create!(name: "t1")
t2 = Tag.create!(name: "t2")
t3 = Tag.create!(name: "t3")
p1 = Post.create!(url: "https://example.com/1")
p2 = Post.create!(url: "https://example.com/2")
p3 = Post.create!(url: "https://example.com/3")
# kept スコープが絡むなら、PostTag がデフォで kept になる前提
PostTag.create!(post: p1, tag: t1)
PostTag.create!(post: p1, tag: t2)
PostTag.create!(post: p2, tag: t1)
PostTag.create!(post: p2, tag: t3)
PostTag.create!(post: p3, tag: t3)
expect { run_rake_task("post_similarity:calc") }
.to change { PostSimilarity.count }.from(0)
ps = PostSimilarity.find_by!(post_id: p1.id, target_post_id: p2.id)
ps_rev = PostSimilarity.find_by!(post_id: p2.id, target_post_id: p1.id)
expect(ps_rev.cos).to eq(ps.cos)
end
end