public When_ProviderFeedBackService_Is_Called_To_Send_Employer_Feedback_Emails_To_Primary_Contact_Only(
            ProviderFeedbackFixture testFixture)
        {
            _testFixture = testFixture;

            _dateTimeProvider = Substitute.For <IDateTimeProvider>();
            _dateTimeProvider
            .UtcNow()
            .Returns(new DateTime(2019, 12, 13));
            _dateTimeProvider
            .GetNthWorkingDayDate(Arg.Any <DateTime>(), Arg.Any <int>(), Arg.Any <IList <DateTime> >())
            .Returns(new DateTime(2019, 12, 13));

            _emailService = Substitute.For <IEmailService>();

            _opportunityRepository = Substitute.For <IOpportunityRepository>();

            _opportunityRepository
            .GetReferralsForProviderFeedbackAsync(Arg.Any <DateTime>())
            .Returns(new ValidProviderFeedbackDtoListBuilder()
                     .Build());

            var providerFeedbackService = new ProviderFeedbackService(
                _testFixture.Configuration,
                _testFixture.Logger,
                _emailService,
                _testFixture.BankHolidayRepository,
                _opportunityRepository,
                _dateTimeProvider);

            _result = providerFeedbackService.SendProviderFeedbackEmailsAsync("TestUser").GetAwaiter().GetResult();
        }
Exemple #2
0
        public When_ProviderFeedbackService_Is_Called_To_Send_Provider_Feedback_Emails_When_ProviderFeedbackEmailsEnabled_Is_False(
            ProviderFeedbackFixture testFixture)
        {
            _dateTimeProvider = Substitute.For <IDateTimeProvider>();

            _emailService = Substitute.For <IEmailService>();

            _bankHolidayRepository = Substitute.For <IRepository <BankHoliday> >();
            _opportunityRepository = Substitute.For <IOpportunityRepository>();
            _opportunityRepository.GetReferralsForProviderFeedbackAsync(Arg.Any <DateTime>())
            .Returns(new ValidProviderFeedbackDtoListBuilder().Build());

            testFixture.Configuration.ProviderFeedbackEmailsEnabled = false;

            var providerFeedbackService = new ProviderFeedbackService(
                testFixture.Configuration,
                testFixture.Logger,
                _emailService,
                _bankHolidayRepository,
                _opportunityRepository,
                _dateTimeProvider);

            _result = providerFeedbackService
                      .SendProviderFeedbackEmailsAsync("TestUser")
                      .GetAwaiter().GetResult();
        }
        public When_ProviderFeedBackService_Is_Called_To_Send_Employer_Feedback_Emails_With_Single_Provider(
            ProviderFeedbackFixture testFixture)
        {
            _testFixture = testFixture;

            _dateTimeProvider = Substitute.For <IDateTimeProvider>();
            _dateTimeProvider
            .UtcNow()
            .Returns(new DateTime(2019, 12, 13));
            _dateTimeProvider
            .GetNthWorkingDayDate(Arg.Any <DateTime>(), Arg.Any <int>(), Arg.Any <IList <DateTime> >())
            .Returns(new DateTime(2019, 12, 13));

            _emailService = Substitute.For <IEmailService>();

            _emailService
            .When(x => x.SendEmailAsync(Arg.Any <string>(),
                                        Arg.Any <string>(),
                                        Arg.Any <int?>(),
                                        Arg.Any <int?>(), Arg.Any <IDictionary <string, string> >(), Arg.Any <string>()))
            .Do(x =>
            {
                var address = x.ArgAt <string>(1);
                var tokens  = x.Arg <Dictionary <string, string> >();
                if (tokens.TryGetValue("other_email_details", out var contact))
                {
                    _otherEmails[address] = contact;
                }
            });

            _opportunityRepository = Substitute.For <IOpportunityRepository>();

            _opportunityRepository
            .GetReferralsForProviderFeedbackAsync(Arg.Any <DateTime>())
            .Returns(new ValidProviderFeedbackDtoListBuilder()
                     .AddSecondaryContact()
                     .Build());

            var providerFeedbackService = new ProviderFeedbackService(
                _testFixture.Configuration,
                _testFixture.Logger,
                _emailService,
                _testFixture.BankHolidayRepository,
                _opportunityRepository,
                _dateTimeProvider);

            _result = providerFeedbackService.SendProviderFeedbackEmailsAsync("TestUser").GetAwaiter().GetResult();
        }