public ParentCourseGradeController(IParentCourseRepository parentCourseRepository, IGenericRepository genericRepository, ISessionRepository sesssionRepository, ParentCourseGradesModelToStudentsMapper parentCourseGradesModelToStudentsMapper, StudentsSesssionParentCourseToParentCourseGradesModelMapper studentsSesssionParentCourseToParentCourseGradesModelMapper, ParentCourseGradeToCsvMapper parentCourseToCsvMapper)
 {
     _parentCourseRepository = parentCourseRepository;
     _genericRepository = genericRepository;
     _sesssionRepository = sesssionRepository;
     _parentCourseGradesModelToStudentsMapper = parentCourseGradesModelToStudentsMapper;
     _studentsSesssionParentCourseToParentCourseGradesModelMapper = studentsSesssionParentCourseToParentCourseGradesModelMapper;
     _parentCourseToCsvMapper = parentCourseToCsvMapper;
 }
        public void ShouldMap()
        {

            var parentCourseGrade1 =
                new ParentCourseGradeBuilder().WithParentCourse(new ParentCourseBuilder().WithCourseCode("MATH12321").Build())
                    .WithStudent(new StudentBuilder().WithStudentUsi(2000).WithLastSurname("Jones").Build())
                    .Build(); 
            var parentCourseGrade2 =
                new ParentCourseGradeBuilder().WithParentCourse(new ParentCourseBuilder().WithCourseCode("ENGL432").Build())
                    .WithStudent(new StudentBuilder().WithStudentUsi(2001).WithLastSurname("White").Build())
                    .Build();

            var parentCourseGrades = new List<ParentCourseGrade>
            {
                parentCourseGrade1, parentCourseGrade2
            };

            var mapper = new ParentCourseGradeToCsvMapper();
            var gradesByteArray = mapper.Build(parentCourseGrades);

            var csvString = System.Text.Encoding.Default.GetString(gradesByteArray);
            var csvLines = csvString.Split(new [] { Environment.NewLine }, StringSplitOptions.None);

            csvLines.Count().ShouldBe(4);
            csvLines[0].ShouldBe("StudentLastName,StudentUSI,CourseCode,CourseTitle,Grade");
            csvLines[1].ShouldBe(parentCourseGrade1.Student.LastSurname + ","
                                 + parentCourseGrade1.StudentUSI + ","
                                 + parentCourseGrade1.ParentCourse.ParentCourseCode + ","
                                 + parentCourseGrade1.ParentCourse.ParentCourseTitle + ","
                                 + parentCourseGrade1.GradeEarned);

            csvLines[2].ShouldBe(parentCourseGrade2.Student.LastSurname + ","
                                 + parentCourseGrade2.StudentUSI + ","
                                 + parentCourseGrade2.ParentCourse.ParentCourseCode + ","
                                 + parentCourseGrade2.ParentCourse.ParentCourseTitle + ","
                                 + parentCourseGrade2.GradeEarned);
        }