public IEnumerable <Grade> GetGrades(int id, string startingWith, bool descendingbool, string orderBy) { var request = new GetStudentIdMessage(Guid.NewGuid(), id); var reply = _bus.SendRequest <GetStudentIdMessage, GetStudentIdReplyMessage>("ClassroomApi_Consumer", request); if (_queryCountWrapper.QueryCount <= 1) { return(reply.Student.Grades); } if (orderBy == "score") { var itemsorted = reply.Student.Grades.Where(x => x.Subject.StartsWith(startingWith)) .OrderBy(x => x.Score) .ThenBy(_ => _.Subject); return(descendingbool == false ? itemsorted : itemsorted.Reverse()); } if (orderBy == "name") { var itemsorted = reply.Student.Grades.Where(x => x.Subject.StartsWith(startingWith)) .OrderBy(x => x.Subject) .ThenBy(_ => _.Score); return(descendingbool == false ? itemsorted : itemsorted.Reverse()); } throw new ArgumentException("Incorrect Query \n OrderBy = score or name"); }
public Student GetById(int id) { var request = new GetStudentIdMessage(Guid.NewGuid(), id); var reply = _bus.SendRequest <GetStudentIdMessage, GetStudentIdReplyMessage>("ClassroomApi_Consumer", request, null, (int)TimeSpan.FromMinutes(2).TotalMilliseconds); return(reply.Student); }
public IEnumerable <Grade> GetStudentGrade(int id, string subject) { var request = new GetStudentIdMessage(Guid.NewGuid(), id); var reply = _bus.SendRequest <GetStudentIdMessage, GetStudentIdReplyMessage>("ClassroomApi_Consumer", request); return(reply.Student.Grades.Where(_ => _.Subject.ToLowerInvariant() == subject.ToLowerInvariant())); }
public void GivenGetIdMessage_WhenCallingGetStudentByIdHandler_ThenCorrespondingReplyIsSend() { // Arrange var repositry = new Mock <ISqlRepository <IStudent> >(MockBehavior.Strict); repositry.Setup(s => s.Read(1)).Returns(new Student("test1", "1") { Id = 1 }); var claimsHelper = new Mock <IClaimsHelper>(MockBehavior.Strict); claimsHelper.Setup(h => h.GetClaims()).Returns(new Claims() { UserClaims = new UserClaim() { Username = "******" } }); var context = new Mock <IConsumeContext>(MockBehavior.Strict); context.Setup(c => c.Reply(It.IsAny <GetStudentIdReplyMessage>())); var handler = new SqlGetStudentIdHandler(repositry.Object, claimsHelper.Object) { Context = context.Object }; GetStudentIdMessage request = new GetStudentIdMessage(Guid.NewGuid(), 1); GetStudentIdReplyMessage reply = null; // Act handler.Execute(request); // Assert context.Verify(c => c.Reply(It.IsAny <GetStudentIdReplyMessage>()), Times.Once); }
public void SearchStudentGivenId_WhenCallingGetById_ThenThatReplyShouldShowOneStudent() { // Arrange var students = new List <Student> { new Student("Joe", "Smith1") { Id = 1, Grades = new List <Grade> { new Grade { Id = 1, Score = 50, Subject = "Maths", StudentId = 1 }, new Grade { Id = 1, Score = 50, Subject = "maths1", StudentId = 1 }, new Grade { Id = 1, Score = 50, Subject = "twoMaths", StudentId = 1 } } }, new Student("Oli2", "Test2") { Id = 2 }, new Student("Oli3", "Test3") { Id = 3 }, new Student("Oli4", "Test4") { Id = 4 } }; GetStudentIdMessage request = null; GetStudentIdReplyMessage reply = null; var queryCountWrapper = new Mock <IQueryCountWrapper>(); queryCountWrapper.SetupGet(qcw => qcw.QueryCount).Returns(0); var bus = new Mock <IBus>(MockBehavior.Strict); bus .Setup(b => b.SendRequest <GetStudentIdMessage, GetStudentIdReplyMessage>(It.IsAny <string>(), It.IsAny <GetStudentIdMessage>(), null, It.IsAny <int>())) .Returns <string, GetStudentIdMessage, Dictionary <string, string>, int>( (endpoint, message, headers, timeout) => { request = message; reply = new GetStudentIdReplyMessage(message.CorrelationId) { Student = students.First(_ => _.Id == message.Id) }; return(reply); }); var claimsHelper = new Mock <IClaimsHelper>(MockBehavior.Strict); var controller = new StudentController(bus.Object, claimsHelper.Object, queryCountWrapper.Object); // Act var result = controller.GetById(3); // Assert var expectedResult = reply.Student; Assert.Equal(expectedResult, result); }
public void GivenNoSearchQuery_WhenCallingGetStudentGrades_ThenThatReplyShouldShowAllGrades() { // Arrange var id = 2; string startingWith = null; var descendingbool = false; string orderBy = null; var students = new List <Student> { new Student("Joe", "Smith1") { Id = 2, Grades = new List <Grade> { new Grade { Id = 1, Score = 50, Subject = "Maths", StudentId = 2 }, new Grade { Id = 1, Score = 50, Subject = "maths1", StudentId = 2 }, new Grade { Id = 1, Score = 50, Subject = "twoMaths", StudentId = 2 } } } }; GetStudentIdMessage request = null; GetStudentIdReplyMessage reply = null; var queryCountWrapper = new Mock <IQueryCountWrapper>(); queryCountWrapper.SetupGet(qcw => qcw.QueryCount).Returns(1); var bus = new Mock <IBus>(MockBehavior.Strict); bus .Setup(b => b.SendRequest <GetStudentIdMessage, GetStudentIdReplyMessage>(It.IsAny <string>(), It.IsAny <GetStudentIdMessage>(), null, It.IsAny <int>())) .Returns <string, GetStudentIdMessage, Dictionary <string, string>, int>( (endpoint, message, headers, timeout) => { request = message; reply = new GetStudentIdReplyMessage(message.CorrelationId) { Student = students.First() }; return(reply); }); var claimsHelper = new Mock <IClaimsHelper>(MockBehavior.Strict); var controller = new StudentController(bus.Object, claimsHelper.Object, queryCountWrapper.Object); // Act var result = controller.GetGrades((int)students.First().Id, startingWith, descendingbool, orderBy); // Assert Assert.Equal(id, request.Id); var expectedResult = reply.Student.Grades; Assert.Equal(expectedResult, result); }