public void GetStudentFromStudyGroupSearch_NullQueryObjectPassed_ThrowsParameterException() { string userId = Guid.NewGuid().ToString(); StudyGroupSearchDTO queryParams = null; Assert.Throws <ParameterException>(() => _studentService.GetStudentFromStudyGroupSearch(queryParams, userId)); }
public void GetStudentFromStudyGroupSearch_HavingSameGradeAverage_ReturnsNone() { string userId = Guid.NewGuid().ToString(); string anotheruserId = Guid.NewGuid().ToString(); StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO { CourseID = Guid.NewGuid().ToString(), IsSameGradeAverage = true }; var students = CreateRandomStudents().Append(new Student { UserID = anotheruserId }); _studentRepository.Setup(x => x.GetStudentsAttendingToCourseInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students); _studentRepository.Setup(x => x.GetStudentGradeAverage(It.IsAny <string>())).Returns <string>((y) => { if ((string)y == userId) { return(2.0); } else if ((string)y == anotheruserId) { return(5.0); } else { return(3.5); } }); var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId); Assert.Empty(res); }
public void GetStudentFromStudyGroupSearch_NullUserIdPassed_ThrowsParameterException() { string userId = null; StudyGroupSearchDTO queryParams = null; Assert.Throws <ParameterException>(() => _studentService.GetStudentFromStudyGroupSearch(queryParams, userId)); }
public ActionResult <string> GetStudentsFromStudyGroupSearch([FromQuery] StudyGroupSearchDTO searchParams) { string id = GetUserIdFromToken(); IEnumerable <StudentListItemDTO> student = _studentService.GetStudentFromStudyGroupSearch(searchParams, id); return(Ok(student)); }
public void GetStudentFromStudyGroupSearch_ParamObjectWithCourseIDNullValuePassed_ThrowsParameterException() { string userId = Guid.NewGuid().ToString(); StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO { CourseID = null, IsHavingOtherCourseInCommonCurrently = true, IsSameCompletedSemesters = true, IsSameGradeAverage = true }; Assert.Throws <ParameterException>(() => _studentService.GetStudentFromStudyGroupSearch(queryParams, userId)); }
public void GetStudentFromStudyGroupSearch_HavingSameGradeAverageAndSameCompletedSemesters_ReturnsRightStudents() { string userId = Guid.NewGuid().ToString(); string anotheruserIdWithSameGradeAndSemesters = Guid.NewGuid().ToString(); string anotheruserIdWithSameGrade = Guid.NewGuid().ToString(); StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO { CourseID = Guid.NewGuid().ToString(), IsSameGradeAverage = true, IsSameCompletedSemesters = true }; var students = CreateRandomStudents() .Append(new Student { UserID = anotheruserIdWithSameGradeAndSemesters }) .Append(new Student { UserID = anotheruserIdWithSameGrade }); _studentRepository.Setup(x => x.GetStudentsAttendingToCourseInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students); _studentRepository.Setup(x => x.GetStudentGradeAverage(It.IsAny <string>())).Returns <string>((y) => { if ((string)y == userId) { return(5.0); } else if ((string)y == anotheruserIdWithSameGradeAndSemesters || (string)y == anotheruserIdWithSameGrade) { return(4.7); } else { return(2.0); } }); _studentRepository.Setup(x => x.GetStudentSemesterCount(It.IsAny <string>())).Returns <string>((y) => { if ((string)y == userId) { return(5); } else if ((string)y == anotheruserIdWithSameGradeAndSemesters) { return(4); } else { return(2); } }); var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId); Assert.Single(res); Assert.Contains(anotheruserIdWithSameGradeAndSemesters, res.Select(x => x.Id)); }
public IEnumerable<StudentListItemDTO> GetStudentFromStudyGroupSearch(StudyGroupSearchDTO searchParams, string loggedInUserId) { if (loggedInUserId == null || !Guid.TryParse(loggedInUserId, out Guid userguid)) throw new ParameterException("user ID is invalid"); if (searchParams == null || searchParams.CourseID == null) throw new ParameterException("Search parameters cannot be null"); IEnumerable<Student> filteredStudents = new List<Student>(); var currentSemester = SemesterManager.GetCurrentSemester(); if (searchParams.IsHavingOtherCourseInCommonCurrently == true) { filteredStudents = _studentRepository.GetStudentsHavingCommonPracticalCoursesInCurrentSemester(loggedInUserId, searchParams.CourseID, currentSemester); } else { filteredStudents = _studentRepository.GetStudentsAttendingToCourseInCurrentSemester(loggedInUserId, searchParams.CourseID, currentSemester); } if (searchParams.IsSameCompletedSemesters && filteredStudents.Count() > 0) { //same completed semesters +-1 int userSemesterCnt = _studentRepository.GetStudentSemesterCount(loggedInUserId); var filteredOutStudents = new List<Student>(); foreach (var stud in filteredStudents) { int semesterCnt = _studentRepository.GetStudentSemesterCount(stud.UserID); if (Math.Abs(userSemesterCnt - semesterCnt) > 1) { filteredOutStudents.Add(stud); } } filteredStudents = filteredStudents.Where(x => !filteredOutStudents.Select(y => y.UserID).Contains(x.UserID)); } if (searchParams.IsSameGradeAverage && filteredStudents.Count() > 0) { //same avg +-0.5 double userGradeAvg = _studentRepository.GetStudentGradeAverage(loggedInUserId); var filteredOutStudents = new List<Student>(); foreach (var stud in filteredStudents) { double currStudAvg = _studentRepository.GetStudentGradeAverage(stud.UserID); if (Math.Abs(currStudAvg - userGradeAvg) > 0.5) { filteredOutStudents.Add(stud); } } filteredStudents = filteredStudents.Where(x => !filteredOutStudents.Select(y => y.UserID).Contains(x.UserID)); } var filteredStudentListDtos = filteredStudents.Select(x => MapStudent.MapStudentDBModelToStudentListItemDTO(x)); return filteredStudentListDtos; }
public void GetStudentFromStudyGroupSearch_QueryParamsAllFalse_ReturnsRightStudents() { string userId = Guid.NewGuid().ToString(); StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO { CourseID = Guid.NewGuid().ToString() }; var students = CreateRandomStudents(); _studentRepository.Setup(x => x.GetStudentsAttendingToCourseInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students); var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId); Assert.Equal(students.Count(), res.Count()); }
public void GetStudentFromStudyGroupSearch_HavingAnotherCommonCourse_ReturnsRightStudents() { string userId = Guid.NewGuid().ToString(); StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO { CourseID = Guid.NewGuid().ToString(), IsHavingOtherCourseInCommonCurrently = true }; var students = CreateRandomStudents(); _studentRepository.Setup(x => x.GetStudentsHavingCommonPracticalCoursesInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students); var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId); Assert.Equal(students.Count(), res.Count()); }
public void GetStudentFromStudyGroupSearch_HavingCommonCourseAndSameCompletedSemesters_ReturnsRightStudents() { string userId = Guid.NewGuid().ToString(); string userSameCourseAndSemesters = Guid.NewGuid().ToString(); string userSameSemesters = Guid.NewGuid().ToString(); StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO { CourseID = Guid.NewGuid().ToString(), IsSameCompletedSemesters = true, IsHavingOtherCourseInCommonCurrently = true }; var students = CreateRandomStudents() .Append(new Student { UserID = userSameCourseAndSemesters }); _studentRepository.Setup(x => x.GetStudentsHavingCommonPracticalCoursesInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students); _studentRepository.Setup(x => x.GetStudentSemesterCount(It.IsAny <string>())).Returns <string>((y) => { if ((string)y == userId) { return(4); } else if ((string)y == userSameCourseAndSemesters || (string)y == userSameSemesters) { return(5); } else { return(2); } }); var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId); Assert.Single(res); Assert.Contains(userSameCourseAndSemesters, res.Select(x => x.Id)); Assert.DoesNotContain(userSameSemesters, res.Select(x => x.Id)); }