/// <summary>
 /// Constructor.
 /// </summary>
 public AssignmentViewModel(
     SectionAssignmentResults sectionAssignmentResults)
 {
     AssignmentName = sectionAssignmentResults.AssignmentName;
     SectionName = sectionAssignmentResults.SectionName;
     Points = sectionAssignmentResults.Points;
     StudentResults = sectionAssignmentResults.AssignmentResults.Select
     (
         result => new StudentAssignmentResultViewModel(result)
     ).ToList();
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 public AssignmentUpdatesViewModel(
     SectionAssignmentResults sectionAssignmentResults)
 {
     AssignmentName = $"{sectionAssignmentResults.AssignmentName} ({sectionAssignmentResults.Points} points)";
     SectionName = sectionAssignmentResults.SectionName;
     NumStudentsUpdated = sectionAssignmentResults.AssignmentResults.Count;
     StudentResults = sectionAssignmentResults.AssignmentResults.Select
     (
         result => new StudentAssignmentResultViewModel(result)
     ).ToList();
 }
		public async Task GetSectionAssignmentResultsAsync_ReturnsResults()
		{
			var database = GetDatabaseWithSubmissions().Build();

			database.Reload();

			var expectedResults = new SectionAssignmentResults(null, null, 0.0, null);
			var assignmentScoreCalculator = new Mock<IAssignmentScoreCalculator>();
			assignmentScoreCalculator
				.Setup
				(
					asc => asc.GetSectionAssignmentResults
					(
						"Unit 1",
						It.Is<IList<Assignment>>(assignments => ValidateAssignments(assignments)),
						It.Is<Section>(section => section.Name == "Period1"),
						It.Is<IList<User>>(users => ValidateSectionUsers(users)),
						It.Is<IList<UserQuestionSubmission>>(submissions => ValidateSectionSubmissions(submissions))
					)
				).Returns(expectedResults);

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

			var actualResults = await assignmentService.GetSectionAssignmentResultsAsync
			(
				"Class1",
				"Period1",
				"Unit 1"
			);

			Assert.Equal(expectedResults, actualResults);
		}
 /// <summary>
 /// Verifies section results.
 /// </summary>
 private void VerifySectionAssignmentResults(
     SectionAssignmentResults expected,
     SectionAssignmentResults actual)
 {
     Assert.Equal(expected.AssignmentName, actual.AssignmentName);
     Assert.Equal(expected.SectionName, actual.SectionName);
     Assert.Equal(expected.Points, actual.Points);
     Assert.Equal(expected.AssignmentResults.Count, actual.AssignmentResults.Count);
     for (int index = 0; index < expected.AssignmentResults.Count; index++)
     {
         VerifySectionAssignmentResult
         (
             expected.AssignmentResults[index],
             actual.AssignmentResults[index]
         );
     }
 }