public BankHolidayGenerator(
     ICalendarApiClient calendarApiClient,
     IMapper mapper,
     IBulkInsertRepository <BankHoliday> bankHolidayBulkInsertRepository,
     IRepository <FunctionLog> functionLogRepository)
 {
     _calendarApiClient = calendarApiClient;
     _mapper            = mapper;
     _bankHolidayBulkInsertRepository = bankHolidayBulkInsertRepository;
     _functionLogRepository           = functionLogRepository;
 }
        public When_ManualGenerateBankHolidays_Function_Http_Trigger_Is_Called()
        {
            var dto = new List <BankHolidayResultDto>
            {
                new BankHolidayResultDto
                {
                    Title = "August Summer Holiday",
                    Date  = DateTime.Parse("2019-08-26")
                },
                new BankHolidayResultDto
                {
                    Title = "New Year",
                    Date  = DateTime.Parse("2020-01-01")
                }
            };

            _calendarApiClient = Substitute.For <ICalendarApiClient>();
            _calendarApiClient.GetBankHolidaysAsync()
            .Returns(dto);

            var config = new MapperConfiguration(c => c.AddMaps(typeof(BankHolidayMapper).Assembly));
            var mapper = new Mapper(config);

            _bankHolidayBulkInsertRepository = Substitute.For <IBulkInsertRepository <BankHoliday> >();

            _functionLogRepository = Substitute.For <IRepository <FunctionLog> >();

            var httpContext = new DefaultHttpContext();
            var request     = httpContext.Request;

            request.Method = HttpMethod.Get.ToString();

            var bankHolidayGeneratorFunctions = new Functions.BankHolidayGenerator(_calendarApiClient, mapper, _bankHolidayBulkInsertRepository, _functionLogRepository);

            bankHolidayGeneratorFunctions.ManualGenerateBankHolidaysAsync(
                request,
                new ExecutionContext(),
                new NullLogger <Functions.BankHolidayGenerator>())
            .GetAwaiter().GetResult();
        }
        public When_GenerateBankHolidays_Function_Timer_Trigger_Fires()
        {
            var dto = new List <BankHolidayResultDto>
            {
                new BankHolidayResultDto
                {
                    Title = "August Summer Holiday",
                    Date  = DateTime.Parse("2019-08-26")
                },
                new BankHolidayResultDto
                {
                    Title = "New Year",
                    Date  = DateTime.Parse("2020-01-01")
                }
            };

            _calendarApiClient = Substitute.For <ICalendarApiClient>();
            _calendarApiClient.GetBankHolidaysAsync()
            .Returns(dto);

            var timerSchedule = Substitute.For <TimerSchedule>();

            var config = new MapperConfiguration(c => c.AddMaps(typeof(BankHolidayMapper).Assembly));
            var mapper = new Mapper(config);

            _functionLogRepository = Substitute.For <IRepository <FunctionLog> >();

            _bankHolidayBulkInsertRepository = Substitute.For <IBulkInsertRepository <BankHoliday> >();

            var bankHolidayGeneratorFunctions = new Functions.BankHolidayGenerator(_calendarApiClient, mapper, _bankHolidayBulkInsertRepository, _functionLogRepository);

            bankHolidayGeneratorFunctions.GenerateBankHolidaysAsync(
                new TimerInfo(timerSchedule, new ScheduleStatus()),
                new ExecutionContext(),
                new NullLogger <Functions.BankHolidayGenerator>())
            .GetAwaiter().GetResult();
        }