# frozen_string_literal: true

describe "Admin Site Setting Search", type: :system do
  let(:settings_page) { PageObjects::Pages::AdminSiteSettings.new }
  fab!(:admin)

  before do
    SiteSetting.title = "Discourse"
    sign_in(admin)
  end

  it "clears the filter" do
    settings_page.visit
    settings_page.type_in_search("min personal message post length")
    expect(settings_page).to have_n_results(1)
    settings_page.clear_search
    expect(settings_page).to have_greater_than_n_results(1)
  end

  it "can show only overridden settings" do
    overridden_setting_count = SiteSetting.all_settings(only_overridden: true).length
    settings_page.visit
    settings_page.toggle_only_show_overridden
    assert_selector(".admin-detail .row.setting.overridden", count: overridden_setting_count)
    settings_page.toggle_only_show_overridden
    expect(settings_page).to have_greater_than_n_results(overridden_setting_count)
  end

  describe "when searching for keywords" do
    it "finds the associated site setting" do
      settings_page.visit
      settings_page.type_in_search("anonymous_posting_min_trust_level")
      expect(settings_page).to have_search_result("anonymous_posting_allowed_groups")
    end

    it "finds the associated site setting when many keywords" do
      settings_page.visit
      settings_page.type_in_search("deactivated")
      expect(settings_page).to have_search_result("clean_up_inactive_users_after_days")
      expect(settings_page).to have_search_result("purge_unactivated_users_grace_period_days")
    end

    it "can search for previous site setting without underscores" do
      settings_page.visit
      settings_page.type_in_search("anonymous posting min")
      expect(settings_page).to have_search_result("anonymous_posting_allowed_groups")
    end
  end
end