require 'rails_helper'

RSpec.describe CreateInvitations, type: :model do
  include ActiveJob::TestHelper

  let(:user) { create :user }

  describe "#call" do
    before do
      CreateInvitations.call(user: user, amount: 5)
    end

    after(:each) { clear_enqueued_jobs }

    it "creates the right amount of invitations for the given user" do
      expect(user.invitations.count).to eq(5)
    end

    it "sends an email notification to the user" do
      expect(enqueued_jobs.size).to eq(1)
      expect(enqueued_jobs.first["job_class"]).to eq("ActionMailer::MailDeliveryJob")
      args = enqueued_jobs.first['arguments']
      expect(args[0]).to eq("NotificationMailer")
      expect(args[1]).to eq("new_invitations_available")
      expect(args[3]["params"]["user"]["_aj_globalid"]).to eq("gid://akkounts/User/1")
    end
  end

  describe "#call with notification disabled" do
    before do
      CreateInvitations.call(user: user, amount: 3, notify: false)
    end

    after(:each) { clear_enqueued_jobs }

    it "does not send an email notification to the user" do
      expect(enqueued_jobs.size).to eq(0)
    end
  end
end
