# frozen_string_literal: true

RSpec.describe WebHookUserSerializer do
  let(:user) do
    user = Fabricate(:user)
    SingleSignOnRecord.create!(user_id: user.id, external_id: "12345", last_payload: "")
    user
  end

  fab!(:admin)

  let :serializer do
    WebHookUserSerializer.new(user, scope: Guardian.new(admin), root: false)
  end

  it "should include relevant user info" do
    payload = serializer.as_json
    expect(payload[:email]).to eq(user.email)
    expect(payload[:external_id]).to eq("12345")
  end

  it "should only include the required keys" do
    expect(serializer.as_json.keys).to contain_exactly(
      :admin,
      :allowed_pm_usernames,
      :avatar_template,
      :badge_count,
      :can_ignore_users,
      :can_mute_users,
      :can_upload_profile_header,
      :can_upload_user_card_background,
      :created_at,
      :email,
      :external_id,
      :featured_topic,
      :featured_user_badge_ids,
      :flair_bg_color,
      :flair_color,
      :flair_group_id,
      :flair_name,
      :flair_url,
      :groups,
      :id,
      :ignored_usernames,
      :invited_by,
      :last_posted_at,
      :last_seen_at,
      :locale,
      :mailing_list_posts_per_day,
      :moderator,
      :muted_category_ids,
      :muted_tags,
      :muted_usernames,
      :muted,
      :name,
      :pending_count,
      :post_count,
      :primary_group_id,
      :primary_group_name,
      :profile_view_count,
      :recent_time_read,
      :regular_category_ids,
      :second_factor_enabled,
      :secondary_emails,
      :staged,
      :system_avatar_template,
      :time_read,
      :title,
      :tracked_category_ids,
      :tracked_tags,
      :trust_level,
      :user_notification_schedule,
      :user_option,
      :username,
      :watched_category_ids,
      :watched_first_post_category_ids,
      :watched_tags,
      :watching_first_post_tags,
    )
  end
end