require 'rails_helper'

describe DirectoryItemsController do

  it "requires a `period` param" do
    expect{ xhr :get, :index }.to raise_error(ActionController::ParameterMissing)
  end

  it "requires a proper `period` param" do
    xhr :get, :index, period: 'eviltrout'
    expect(response).not_to be_success
  end


  context "without data" do

    context "and a logged in user" do
      let!(:user) { log_in }

      it "succeeds" do
        xhr :get, :index, period: 'all'
        expect(response).to be_success
        json = ::JSON.parse(response.body)
      end
    end

  end


  context "with data" do
    before do
      Fabricate(:user)
      DirectoryItem.refresh!
    end

    it "succeeds with a valid value" do
      xhr :get, :index, period: 'all'
      expect(response).to be_success
      json = ::JSON.parse(response.body)

      expect(json).to be_present
      expect(json['directory_items']).to be_present
      expect(json['total_rows_directory_items']).to be_present
      expect(json['load_more_directory_items']).to be_present
    end

    it "fails when the directory is disabled" do
      SiteSetting.enable_user_directory = false

      xhr :get, :index, period: 'all'
      expect(response).not_to be_success
    end
  end
end