# frozen_string_literal: true

describe "Users directory", type: :system do
  fab!(:user)
  let!(:initial_directory_events) { [] }

  before { Array.new(DirectoryItemsController::PAGE_SIZE + 10) { Fabricate(:user) } }

  describe "shows a table of users" do
    it "renders successfully for a logged-in user" do
      DirectoryItem.refresh!
      sign_in(user)

      visit("/u")

      expect(page).to have_css(".users-directory")
      expect(page).not_to have_css(".spinner")
      header_texts =
        page
          .all(".directory-table__column-header .header-contents")
          .map { |element| element.text.strip }

      expect(header_texts).to eq(
        [
          "Username",
          "Received",
          "Given",
          "Topics Created",
          "Replies Posted",
          "Topics Viewed",
          "Posts Read",
          "Days Visited",
        ],
      )
    end

    it "renders successfully for an anonymous user" do
      DirectoryItem.refresh!
      visit("/u")

      expect(page).to have_css(".users-directory")
      expect(page).not_to have_css(".spinner")
      header_texts =
        page
          .all(".directory-table__column-header .header-contents")
          .map { |element| element.text.strip }

      expect(header_texts).to eq(
        [
          "Username",
          "Received",
          "Given",
          "Topics Created",
          "Replies Posted",
          "Topics Viewed",
          "Posts Read",
          "Days Visited",
        ],
      )
    end
  end
end