private async Task SetPriceEpisodeStartDate(string priceEpisodeIdentifier, string commitmentIdentifier, int numberOfDays, Func <DateTime, DateTime, bool> startDateIsAlreadyCorrect) { var actualPriceEpisodeStartDate = TestSession.FM36Global.Learners.Single().PriceEpisodes.Single(x => x.PriceEpisodeIdentifier == priceEpisodeIdentifier).PriceEpisodeValues.EpisodeEffectiveTNPStartDate.GetValueOrDefault(); var apprenticeship = await testDataContext.Apprenticeship.Include(x => x.ApprenticeshipPriceEpisodes).SingleAsync(x => x.Id == TestSession.Apprenticeships[commitmentIdentifier].Id); if (startDateIsAlreadyCorrect(actualPriceEpisodeStartDate, apprenticeship.EstimatedStartDate)) { return; } apprenticeship.EstimatedStartDate = actualPriceEpisodeStartDate.AddDays(numberOfDays); apprenticeship.ApprenticeshipPriceEpisodes.Single().StartDate = actualPriceEpisodeStartDate.AddDays(numberOfDays); await testDataContext.SaveChangesAsync(); }