/// <summary>
        /// Constructor.
        /// </summary>
        public UpdatedSectionAssignmentsViewModel(
            UpdatedSectionAssignmentResults results,
            DateTime submissionsRetrievedDate,
            SelectAssignmentReport markAssignmentsGraded,
            ITimeZoneProvider timeZoneProvider)
        {
            SectionName = results.SectionName;

            GradebookName = results.GradebookName;

            StartDate =
                results.AssignmentsLastGradedDate != DateTime.MinValue
                    ? results.AssignmentsLastGradedDate
                        .FormatLongDateTime(timeZoneProvider)
                    : "The beginning";

            EndDate = submissionsRetrievedDate.FormatLongDateTime(timeZoneProvider);

            AssignmentResults = results.AssignmentResults.Select
            (
                result => new AssignmentUpdatesViewModel(result)
            ).ToList();

            MarkAssignmentsGraded = markAssignmentsGraded;
        }
		public async Task GetUpdatedAssignmentResultsAsync_ReturnsResults()
		{
			var database = GetDatabaseWithSubmissions().Build();

			database.Reload();

			var expectedResults = new UpdatedSectionAssignmentResults(null, null, DateTime.MinValue, null);
			var assignmentScoreCalculator = new Mock<IAssignmentScoreCalculator>();
			assignmentScoreCalculator
				.Setup
				(
					asc => asc.GetUpdatedAssignmentResults
					(
						It.Is<IList<Assignment>>(assignments => ValidateAssignments(assignments)),
						It.Is<IList<User>>(users => ValidateSectionUsers(users)),
						It.Is<Section>(section => section.Name == "Period1"),
						"Gradebook1",
						AssignmentDueDate,
						It.Is<IList<UserQuestionSubmission>>(submissions => ValidateSectionSubmissions(submissions))
					)
				).Returns(expectedResults);

			var assignmentService = GetAssignmentService
			(
				database.Context,
				assignmentScoreCalculator.Object
			);

			var actualResults = await assignmentService.GetUpdatedAssignmentResultsAsync
			(
				"Class1",
				"Period1",
				"Gradebook1"
			);

			Assert.Equal(expectedResults, actualResults);
		}
 /// <summary>
 /// Verifies updated results.
 /// </summary>
 private void VerifyUpdatedAssignmentResults(
     UpdatedSectionAssignmentResults expected,
     UpdatedSectionAssignmentResults actual)
 {
     Assert.Equal(expected.GradebookName, actual.GradebookName);
     Assert.Equal(expected.SectionName, actual.SectionName);
     Assert.Equal(expected.AssignmentsLastGradedDate, actual.AssignmentsLastGradedDate);
     Assert.Equal(expected.AssignmentResults.Count, actual.AssignmentResults.Count);
     for (int index = 0; index < expected.AssignmentResults.Count; index++)
     {
         VerifySectionAssignmentResults
         (
             expected.AssignmentResults[index],
             actual.AssignmentResults[index]
         );
     }
 }