You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							88 lines
						
					
					
						
							4.0 KiB
						
					
					
				
			
		
		
	
	
							88 lines
						
					
					
						
							4.0 KiB
						
					
					
				require "rails_helper" | 
						|
 | 
						|
RSpec.describe ResendInvitationMailer do | 
						|
  describe "#resend_invitation_email" do | 
						|
    let(:notify_client) { instance_double(Notifications::Client) } | 
						|
    let(:organisation) { create(:organisation, name: "test organisation") } | 
						|
    let!(:active_user) { create(:user, name: "active user", email: "active_user@example.com", organisation:, confirmation_token: "ghi", initial_confirmation_sent: true, old_user_id: "234", sign_in_count: 0) } | 
						|
    let!(:new_active_user) { create(:user, name: "new active user", email: "new_active_user@example.com", organisation:, confirmation_token: "abc", initial_confirmation_sent: false, old_user_id: nil, sign_in_count: 0) } | 
						|
    let(:new_active_migrated_user) { create(:user, name: "new active migrated user", email: "new_active_migrated_user@example.com", organisation:, confirmation_token: "def", initial_confirmation_sent: false, old_user_id: "123", sign_in_count: 0) } | 
						|
 | 
						|
    before do | 
						|
      LegacyUser.destroy_all | 
						|
      allow(Notifications::Client).to receive(:new).and_return(notify_client) | 
						|
      allow(notify_client).to receive(:send_email).and_return(true) | 
						|
    end | 
						|
 | 
						|
    context "with a new active user" do | 
						|
      let(:personalisation) do | 
						|
        { | 
						|
          name: "new active user", | 
						|
          email: "new_active_user@example.com", | 
						|
          organisation: "test organisation", | 
						|
          link: include("/account/confirmation?confirmation_token=abc"), | 
						|
        } | 
						|
      end | 
						|
 | 
						|
      it "sends invitation email to user" do | 
						|
        expect(notify_client).to receive(:send_email).with(email_address: "new_active_user@example.com", template_id: User::CONFIRMABLE_TEMPLATE_ID, personalisation:).once | 
						|
        described_class.new.resend_invitation_email(new_active_user) | 
						|
      end | 
						|
    end | 
						|
 | 
						|
    context "with active migrated user before the initial invitation has been sent" do | 
						|
      let(:personalisation) do | 
						|
        { | 
						|
          name: "new active migrated user", | 
						|
          email: "new_active_migrated_user@example.com", | 
						|
          organisation: "test organisation", | 
						|
          link: include("/account/confirmation?confirmation_token=def"), | 
						|
        } | 
						|
      end | 
						|
 | 
						|
      it "sends an initial invitation" do | 
						|
        FactoryBot.create(:legacy_user, old_user_id: new_active_migrated_user.old_user_id, user: new_active_migrated_user) | 
						|
        expect(notify_client).to receive(:send_email).with(email_address: "new_active_migrated_user@example.com", template_id: User::CONFIRMABLE_TEMPLATE_ID, personalisation:).once | 
						|
        described_class.new.resend_invitation_email(new_active_migrated_user) | 
						|
      end | 
						|
    end | 
						|
 | 
						|
    context "with active user after the initial invitation has been sent" do | 
						|
      let(:personalisation) do | 
						|
        { | 
						|
          name: "active user", | 
						|
          email: "active_user@example.com", | 
						|
          organisation: "test organisation", | 
						|
          link: include("/account/confirmation?confirmation_token=ghi"), | 
						|
        } | 
						|
      end | 
						|
 | 
						|
      it "sends a reinvitation" do | 
						|
        expect(notify_client).to receive(:send_email).with(email_address: "active_user@example.com", template_id: User::CONFIRMABLE_TEMPLATE_ID, personalisation:).once | 
						|
        described_class.new.resend_invitation_email(active_user) | 
						|
      end | 
						|
    end | 
						|
 | 
						|
    context "with unconfirmed user after the initial invitation has been sent" do | 
						|
      let!(:unconfirmed_user) { create(:user, organisation:, confirmation_token: "dluch", initial_confirmation_sent: true, old_user_id: "234", sign_in_count: 0, confirmed_at: nil) } | 
						|
 | 
						|
      let(:personalisation) do | 
						|
        { | 
						|
          name: unconfirmed_user.name, | 
						|
          email: unconfirmed_user.email, | 
						|
          organisation: unconfirmed_user.organisation.name, | 
						|
          link: include("/account/confirmation?confirmation_token=#{unconfirmed_user.confirmation_token}"), | 
						|
        } | 
						|
      end | 
						|
 | 
						|
      before do | 
						|
        LegacyUser.destroy_all | 
						|
      end | 
						|
 | 
						|
      it "sends a reinvitation" do | 
						|
        expect(notify_client).to receive(:send_email).with(email_address: unconfirmed_user.email, template_id: User::RECONFIRMABLE_TEMPLATE_ID, personalisation:).once | 
						|
        described_class.new.resend_invitation_email(unconfirmed_user) | 
						|
      end | 
						|
    end | 
						|
  end | 
						|
end
 | 
						|
 |