# frozen_string_literal: true

require "rails_helper"

RSpec.describe Chat::ChatController do
  describe "#export_messages" do
    fab!(:user) { Fabricate(:user) }
    fab!(:moderator) { Fabricate(:moderator) }
    fab!(:admin) { Fabricate(:admin) }

    it "enqueues the export job and logs into staff actions" do
      sign_in(admin)

      post "/chat/admin/export/messages"

      expect(response.status).to eq(204)

      expect(Jobs::ExportCsvFile.jobs.size).to eq(1)
      job_data = Jobs::ExportCsvFile.jobs.first["args"].first
      expect(job_data["entity"]).to eq("chat_message")
      expect(job_data["user_id"]).to eq(admin.id)

      staff_log_entry = UserHistory.last
      expect(staff_log_entry.acting_user_id).to eq(admin.id)
      expect(staff_log_entry.subject).to eq("chat_message")
    end

    it "regular users don't have access" do
      sign_in(user)
      post "/chat/admin/export/messages"
      expect(response.status).to eq(403)
    end

    it "moderators don't have access" do
      sign_in(moderator)
      post "/chat/admin/export/messages"
      expect(response.status).to eq(403)
    end
  end
end