public async Task Then_The_StandardsFunding_Items_Are_Imported_From_The_Client(
            StandardResponse apiResponse,
            [Frozen] Mock <IApiClient> apiClient,
            [Frozen] Mock <IProviderCommitmentsDbContext> context,
            ImportStandardsJob importStandardsJob
            )
        {
            //Arrange
            apiClient.Setup(x => x.Get <StandardResponse>(It.IsAny <GetStandardsRequest>())).ReturnsAsync(apiResponse);
            var importedStandardFunding = new List <FundingPeriodItem>();

            context.Setup(d => d.ExecuteSqlCommandAsync("EXEC ImportStandardsFunding @standardsFunding", It.IsAny <SqlParameter>()))
            .Returns(Task.CompletedTask)
            .Callback <string, object[]>((s, p) =>
            {
                var sqlParameter = (SqlParameter)p[0];
                var dataTable    = (DataTable)sqlParameter.Value;

                importedStandardFunding.AddRange(dataTable.AsEnumerable().Select(r => new FundingPeriodItem
                {
                    StandardId    = (int)r[0],
                    FundingCap    = (int)r[1],
                    EffectiveFrom = (DateTime?)r[2],
                    EffectiveTo   = (DateTime?)r[3],
                }));
            });

            //Act
            await importStandardsJob.Import(null);

            //Assert
            var expectedItems = new List <FundingPeriodItem>();

            foreach (var responseStandard in apiResponse.Standards)
            {
                var standardId = responseStandard.Id;
                expectedItems.AddRange(responseStandard.FundingPeriods.Select(fundingPeriod => new FundingPeriodItem
                {
                    StandardId    = standardId,
                    EffectiveFrom = fundingPeriod.EffectiveFrom,
                    EffectiveTo   = fundingPeriod.EffectiveTo,
                    FundingCap    = fundingPeriod.FundingCap
                }));
            }
            importedStandardFunding.Should().BeEquivalentTo(expectedItems);
        }
        public async Task Then_The_Standards_Are_Imported_From_The_Client(
            StandardResponse apiResponse,
            [Frozen] Mock <IApiClient> apiClient,
            [Frozen] Mock <IProviderCommitmentsDbContext> context,
            ImportStandardsJob importStandardsJob
            )
        {
            //Arrange
            apiClient.Setup(x => x.Get <StandardResponse>(It.IsAny <GetStandardsRequest>())).ReturnsAsync(apiResponse);
            var importedStandards = new List <StandardSummary>();

            context.Setup(d => d.ExecuteSqlCommandAsync("EXEC ImportStandards @standards", It.IsAny <SqlParameter>()))
            .Returns(Task.CompletedTask)
            .Callback <string, object[]>((s, p) =>
            {
                var sqlParameter = (SqlParameter)p[0];
                var dataTable    = (DataTable)sqlParameter.Value;

                importedStandards.AddRange(dataTable.AsEnumerable().Select(r => new StandardSummary
                {
                    Id                   = (int)r[0],
                    Title                = (string)r[1],
                    Level                = (int)r[2],
                    Duration             = (int)r[3],
                    CurrentFundingCap    = (int)r[4],
                    EffectiveFrom        = (DateTime?)r[5],
                    LastDateForNewStarts = (DateTime?)r[6],
                }));
            });

            //Act
            await importStandardsJob.Import(null);

            //Assert
            importedStandards.Should().BeEquivalentTo(apiResponse.Standards, options => options.Excluding(c => c.FundingPeriods));
        }