public void SetupCalls()
        {
            ReferralLeadRepositoryMock.Setup(c => c.CreateAsync(It.IsAny <ReferralLeadEncrypted>()))
            .ReturnsAsync((ReferralLeadEncrypted c) => c);

            ReferralLeadRepositoryMock.Setup(c => c.GetAsync(It.IsAny <Guid>()))
            .ReturnsAsync((Guid c) => ReferralLeads.SingleOrDefault(x => c == x.Id));

            ReferralLeadRepositoryMock.Setup(c => c.DoesExistAsync(It.IsAny <Guid>()))
            .ReturnsAsync(() => ReferralLead != null);

            ReferralLeadRepositoryMock.Setup(c => c.UpdateAsync(It.IsAny <ReferralLeadEncrypted>()))
            .ReturnsAsync((ReferralLeadEncrypted c) => c);

            ReferralLeadRepositoryMock.Setup(c => c.GetForReferrerAsync(It.IsAny <Guid>(), null, null))
            .ReturnsAsync(() => ReferralLeadsWithDetails);

            ReferralLeadRepositoryMock.Setup(c => c.GetByEmailHashAsync(It.IsAny <string>()))
            .ReturnsAsync((string s) => ReferralLeads.Where(x => x.EmailHash == s).ToList());

            ReferralLeadRepositoryMock.Setup(c => c.GetByPhoneNumberHashAsync(It.IsAny <int>(), It.IsAny <string>()))
            .ReturnsAsync((int cc, string s) => ReferralLeads.Where(x => x.PhoneNumberHash == s).ToList());

            ReferralLeadRepositoryMock.Setup(c => c.GetByConfirmationTokenAsync(It.IsAny <string>()))
            .ReturnsAsync((string s) => ReferralLeads.SingleOrDefault(x => x.ConfirmationToken == s));

            HashingManagerMock.Setup(c => c.GenerateBase(It.IsAny <string>()))
            .Returns(() => ConfirmationToken);

            SettingsServiceMock.Setup(c => c.GetLeadConfirmationTokenLength())
            .Returns(() => 6);

            NotificationPublisherServiceMock.Setup(c =>
                                                   c.LeadConfirmRequestAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(() => Task.CompletedTask);

            NotificationPublisherServiceMock.Setup(c =>
                                                   c.LeadAlreadyConfirmedAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(),
                                                                               It.IsAny <string>()))
            .Returns(() => Task.CompletedTask);

            NotificationPublisherServiceMock.Setup(c =>
                                                   c.LeadSuccessfullyConfirmedAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(),
                                                                                    It.IsAny <string>()))
            .Returns(() => Task.CompletedTask);

            PropertyIntegrationClientMock.Setup(c => c.Api.RegisterLeadAsync(It.IsAny <LeadRegisterRequestModel>()))
            .ReturnsAsync(() => new LeadRegisterResponseModel
            {
                ErrorCode    = "",
                SalesforceId = SalesforceId,
                Status       = ResponseStatus
            });

            AgentManagementServiceMock.Setup(c => c.Agents.GetByCustomerIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(() => new AgentModel
            {
                Status = AgentStatus
            });

            EventPublisher.Setup(c => c.PublishAsync(It.IsAny <PropertyLeadApprovedReferralEvent>()))
            .Returns(() => Task.CompletedTask);

            LeadStateChangePublisherMock.Setup(c => c.PublishAsync(It.IsAny <LeadStateChangedEvent>()))
            .Returns(() => Task.CompletedTask);

            CustomerProfileMock.Setup(c => c.CustomerProfiles.GetByCustomerIdAsync(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>()))
            .ReturnsAsync(() => new CustomerProfileResponse
            {
                Profile   = new CustomerProfile.Client.Models.Responses.CustomerProfile(),
                ErrorCode = ShouldFindAgentsCustomerProfile ? CustomerProfileErrorCodes.None : CustomerProfileErrorCodes.CustomerProfileDoesNotExist
            });

            CustomerProfileMock.Setup(c => c.ReferralLeadProfiles.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync((Guid referralLeadId) => ReferralLeadProfileResponse);

            CustomerProfileMock.Setup(c => c.ReferralLeadProfiles.AddAsync(It.IsAny <ReferralLeadProfileRequest>()))
            .ReturnsAsync((ReferralLeadProfileRequest request) => new ReferralLeadProfileResponse
            {
                ErrorCode = ReferralLeadProfileErrorCodes.None
            });

            DictionariesClientMock.Setup(c => c.Salesforce.GetCountryPhoneCodeByIdAsync(It.IsAny <int>()))
            .ReturnsAsync(() =>
                          new CountryPhoneCodeModel {
                Id = 359, Code = "359", CountryName = "Bulgaria", IsoCode = "+359"
            }
                          );

            StakeServiceMock.Setup(c => c.GetReferralStake(It.IsAny <Guid?>(), It.IsAny <string>()))
            .ReturnsAsync(() => new ReferralStake());

            StakeServiceMock.Setup(c => c.SetStake(It.IsAny <ReferralStake>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(Task.CompletedTask);
        }
        public void SetupCalls()
        {
            ReferralServiceMock.Setup(c => c.GetReferralByReferralCodeAsync(ReferralCode))
            .ReturnsAsync(() => Referral);

            ReferralServiceMock.Setup(c => c.CreateReferralForCustomerIfNotExistAsync(It.IsAny <Guid>()))
            .Returns(Task.CompletedTask);

            FriendReferralHistoryRepositoryMock.Setup(c =>
                                                      c.CreateAsync(It.IsAny <ReferralFriend>()))
            .ReturnsAsync(() => new ReferralFriend());

            FriendReferralPublisherMock.Setup(c => c.PublishAsync(It.IsAny <FriendReferralEvent>()))
            .Returns(Task.CompletedTask);

            CustomerProfileClientMock
            .Setup(c => c.CustomerProfiles.GetByCustomerIdAsync(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>()))
            .ReturnsAsync(() => new CustomerProfileResponse
            {
                ErrorCode = CustomerProfileErrorCodes.None,
                Profile   = new CustomerProfile.Client.Models.Responses.CustomerProfile
                {
                    Email = "*****@*****.**"
                }
            });

            CampaignClientMock.Setup(c => c.Campaigns.GetByIdAsync(It.IsAny <string>()))
            .ReturnsAsync(() => new CampaignDetailResponseModel
            {
                ErrorCode = CampaignServiceErrorCodes.None
            });

            CustomerProfileClientMock
            .Setup(c => c.CustomerProfiles.GetByEmailAsync(It.IsAny <GetByEmailRequestModel>()))
            .ReturnsAsync(() => new CustomerProfileResponse
            {
                ErrorCode = CustomerProfileErrorCodes.CustomerProfileDoesNotExist
            });

            CustomerProfileClientMock
            .Setup(c => c.ReferralFriendProfiles.GetByEmailAndReferrerAsync(It.IsAny <ReferralFriendByEmailAndReferrerProfileRequest>()))
            .ReturnsAsync(() => new ReferralFriendProfileResponse
            {
                ErrorCode = ReferralFriendProfileErrorCodes.ReferralFriendProfileDoesNotExist
            });

            CustomerProfileClientMock
            .Setup(c => c.ReferralFriendProfiles.AddAsync(It.IsAny <ReferralFriendProfileRequest>()))
            .ReturnsAsync(() => new ReferralFriendProfileResponse
            {
                ErrorCode = ReferralFriendProfileErrorCodes.None
            });

            NotificationPublisherServiceMock.Setup(c => c.FriendReferralConfirmRequestAsync(
                                                       It.IsAny <string>(),
                                                       It.IsAny <string>(),
                                                       It.IsAny <string>(),
                                                       It.IsAny <string>(),
                                                       It.IsAny <string>()))
            .Returns(Task.CompletedTask);

            ReferralServiceMock.Setup(c => c.GetOrCreateReferralForCustomerIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(() => "someCode");
        }