require 'rails_helper'

describe TopicFeaturedUsers do
  it 'ensures consistency' do

    t = Fabricate(:topic)
    Fabricate(:post, topic_id: t.id, user_id: t.user_id)
    p2 = Fabricate(:post, topic_id: t.id)
    p3 = Fabricate(:post, topic_id: t.id, user_id: p2.user_id)
    p4 = Fabricate(:post, topic_id: t.id)
    p5 = Fabricate(:post, topic_id: t.id)

    t.update_columns(featured_user1_id: 66,
                     featured_user2_id: 70,
                     featured_user3_id: 12,
                     featured_user4_id: 7,
                     last_post_user_id: p5.user_id)

    TopicFeaturedUsers.ensure_consistency!
    t.reload

    expect(t.featured_user1_id).to eq(p2.user_id)
    expect(t.featured_user2_id).to eq(p4.user_id)
    expect(t.featured_user3_id).to eq(nil)
    expect(t.featured_user4_id).to eq(nil)

    # after removing a post
    p2.update_column(:deleted_at, Time.now)
    p3.update_column(:hidden, true)

    TopicFeaturedUsers.ensure_consistency!
    t.reload

    expect(t.featured_user1_id).to eq(p4.user_id)
    expect(t.featured_user2_id).to eq(nil)
    expect(t.featured_user3_id).to eq(nil)
    expect(t.featured_user4_id).to eq(nil)
  end
end