# frozen_string_literal: true

describe "User activity bookmarks", type: :system do
  fab!(:current_user) { Fabricate(:user) }
  fab!(:bookmark_1) do
    Fabricate(
      :bookmark,
      user: current_user,
      name: "Bookmark 1",
      bookmarkable: Fabricate(:post, raw: "a nice event"),
    )
  end
  fab!(:bookmark_2) do
    Fabricate(
      :bookmark,
      user: current_user,
      name: "Bookmark 2",
      bookmarkable: Fabricate(:post, raw: "a pretty cat"),
    )
  end

  let(:user_activity_bookmarks) { PageObjects::Pages::UserActivityBookmarks.new }

  before do
    SearchIndexer.enable
    SearchIndexer.index(bookmark_1.bookmarkable, force: true)
    SearchIndexer.index(bookmark_2.bookmarkable, force: true)
    Fabricate(:topic_user, user: current_user, topic: bookmark_1.bookmarkable.topic)
    Fabricate(:topic_user, user: current_user, topic: bookmark_2.bookmarkable.topic)

    sign_in(current_user)
  end

  after { SearchIndexer.disable }

  it "can filter the list of bookmarks from the URL" do
    user_activity_bookmarks.visit(current_user, q: bookmark_1.bookmarkable.raw)

    expect(user_activity_bookmarks).to have_no_topic(bookmark_2.bookmarkable.topic)
    expect(user_activity_bookmarks).to have_topic(bookmark_1.bookmarkable.topic)
  end

  it "can filter the list of bookmarks" do
    user_activity_bookmarks.visit(current_user).search_for(bookmark_2.bookmarkable.raw)

    expect(user_activity_bookmarks).to have_no_topic(bookmark_1.bookmarkable.topic)
    expect(user_activity_bookmarks).to have_topic(bookmark_2.bookmarkable.topic)
  end

  it "can clear the query" do
    user_activity_bookmarks.visit(current_user).search_for(bookmark_2.bookmarkable.raw)

    expect(user_activity_bookmarks).to have_no_topic(bookmark_1.bookmarkable.topic)
    expect(user_activity_bookmarks).to have_topic(bookmark_2.bookmarkable.topic)

    user_activity_bookmarks.clear_query

    expect(user_activity_bookmarks).to have_topic(bookmark_1.bookmarkable.topic)
    expect(user_activity_bookmarks).to have_topic(bookmark_2.bookmarkable.topic)
  end
end