public async Task Then_The_Query_Is_Sent_And_Data_Retrieved_And_View_Shown( GetCoursesRequest request, GetCoursesResult response, ShortlistCookieItem cookieItem, [Frozen] Mock <IMediator> mediator, [Frozen] Mock <ICookieStorageService <ShortlistCookieItem> > shortlistCookieService, [Greedy] CoursesController controller) { //Arrange mediator.Setup(x => x.Send(It.Is <GetCoursesQuery>(c => c.Keyword.Equals(request.Keyword) && c.ShortlistUserId.Equals(cookieItem.ShortlistUserId)), It.IsAny <CancellationToken>())) .ReturnsAsync(response); shortlistCookieService.Setup(x => x.Get(Constants.ShortlistCookieName)) .Returns(cookieItem); //Act var actual = await controller.Courses(request); var actualResult = actual as ViewResult; //Assert Assert.IsNotNull(actual); Assert.IsNotNull(actualResult); }
public async Task Then_The_Location_Cookie_Is_Checked_And_Added_To_Model( GetCoursesRequest request, GetCoursesResult response, LocationCookieItem cookieItem, [Frozen] Mock <ICookieStorageService <LocationCookieItem> > locationCookieService, [Frozen] Mock <IMediator> mediator, [Greedy] CoursesController controller) { //Arrange request.Location = string.Empty; mediator.Setup(x => x.Send(It.Is <GetCoursesQuery>(c => c.Keyword.Equals(request.Keyword) && c.RouteIds.Equals(request.Sectors) && c.Levels.Equals(request.Levels)), It.IsAny <CancellationToken>())) .ReturnsAsync(response); locationCookieService.Setup(x => x.Get(Constants.LocationCookieName)).Returns(cookieItem); //Act var actual = await controller.Courses(request); //Assert Assert.IsNotNull(actual); var actualResult = actual as ViewResult; Assert.IsNotNull(actualResult); var actualModel = actualResult.Model as CoursesViewModel; Assert.IsNotNull(actualModel); actualModel.Location.Should().Be(cookieItem.Name); }
public async Task <IActionResult> Courses(GetCoursesRequest request) { var location = CheckLocation(request.Location); var shortlistItem = _shortlistCookieService.Get(Constants.ShortlistCookieName); var result = await _mediator.Send(new GetCoursesQuery { Keyword = request.Keyword, RouteIds = request.Sectors, Levels = request.Levels, OrderBy = request.OrderBy, ShortlistUserId = shortlistItem?.ShortlistUserId }); var viewModel = new CoursesViewModel { Courses = result.Courses.Select(c => (CourseViewModel)c).ToList(), Sectors = result.Sectors.Select(sector => new SectorViewModel(sector, request.Sectors)).ToList(), Total = result.Total, TotalFiltered = result.TotalFiltered, Keyword = request.Keyword, SelectedSectors = request.Sectors, SelectedLevels = request.Levels, Levels = result.Levels.Select(level => new LevelViewModel(level, request.Levels)).ToList(), OrderBy = request.OrderBy, ShortlistItemCount = result.ShortlistItemCount, Location = location?.Name ?? "" }; return(View(viewModel)); }
public async Task Then_Any_Sectors_In_The_Request_Are_Marked_As_Selected_On_The_ViewModel( GetCoursesRequest request, GetCoursesResult response, [Frozen] Mock <ICookieStorageService <LocationCookieItem> > locationCookieService, [Frozen] Mock <IMediator> mediator, [Greedy] CoursesController controller) { //Arrange request.Location = ""; response.Sectors.Add(new Sector { Route = request.Sectors.First() }); response.Sectors.Add(new Sector { Route = request.Sectors.Skip(1).First() }); mediator.Setup(x => x.Send(It.Is <GetCoursesQuery>(c => c.Keyword.Equals(request.Keyword) && c.RouteIds.Equals(request.Sectors)), It.IsAny <CancellationToken>())) .ReturnsAsync(response); locationCookieService.Setup(x => x.Get(Constants.LocationCookieName)).Returns((LocationCookieItem)null); //Act var actual = await controller.Courses(request); //Assert Assert.IsNotNull(actual); var actualResult = actual as ViewResult; Assert.IsNotNull(actualResult); var actualModel = actualResult.Model as CoursesViewModel; Assert.IsNotNull(actualModel); Assert.AreEqual(2, actualModel.Sectors.Count(sector => sector.Selected)); Assert.IsNotNull(actualModel.Sectors.SingleOrDefault(c => c.Route.Equals(request.Sectors.First()))); Assert.IsNotNull(actualModel.Sectors.SingleOrDefault(c => c.Route.Equals(request.Sectors.Skip(1).First()))); actualModel.Location.Should().BeEmpty(); }
public async Task Then_The_Keyword_And_Sectors_And_Levels_And_Location_Are_Added_To_The_Query_And_Returned_To_The_View( GetCoursesRequest request, GetCoursesResult response, [Frozen] Mock <IMediator> mediator, [Frozen] Mock <ICookieStorageService <ShortlistCookieItem> > shortlistCookieService, [Greedy] CoursesController controller) { //Arrange mediator.Setup(x => x.Send(It.Is <GetCoursesQuery>(c => c.Keyword.Equals(request.Keyword) && c.RouteIds.Equals(request.Sectors) && c.Levels.Equals(request.Levels)), It.IsAny <CancellationToken>())) .ReturnsAsync(response); shortlistCookieService.Setup(x => x.Get(Constants.ShortlistCookieName)) .Returns((ShortlistCookieItem)null); //Act var actual = await controller.Courses(request); //Assert Assert.IsNotNull(actual); var actualResult = actual as ViewResult; Assert.IsNotNull(actualResult); var actualModel = actualResult.Model as CoursesViewModel; Assert.IsNotNull(actualModel); actualModel.Courses.Should().BeEquivalentTo(response.Courses, options => options.Including(course => course.Id)); actualModel.Sectors.Should().BeEquivalentTo(response.Sectors); actualModel.Levels.Should().BeEquivalentTo(response.Levels); actualModel.Keyword.Should().Be(request.Keyword); actualModel.SelectedLevels.Should().BeEquivalentTo(request.Levels); actualModel.SelectedSectors.Should().BeEquivalentTo(request.Sectors); actualModel.Total.Should().Be(response.Total); actualModel.TotalFiltered.Should().Be(response.TotalFiltered); actualModel.ShortlistItemCount.Should().Be(response.ShortlistItemCount); actualModel.Location.Should().Be(request.Location); }
public Task <IActionResult> GetCourses(GetCoursesRequest request) => ExecuteSp <Course, GetCoursesResponse>(request ?? new GetCoursesRequest());
public void GetCourses_InValid() { #region Local var GetCoursesRequest getCoursesRequest = new GetCoursesRequest(); GetCoursesResponse getCoursesResponse = new GetCoursesResponse(); CourseResponse courseResponse = new CourseResponse(); Course[] Course = null; StringBuilder sbError = new StringBuilder(); string Test_Result_Upsert = String.Empty; string validationMessage = string.Empty; #endregion try { for (int i = 0; i < 8; i++) { if (i == 0)//if we are not providing any value in input field { validationMessage = ""; getCoursesRequest.contactCrmId = null; getCoursesRequest.productCrmId = null; } else if (i == 1)//contactCrmId field is optional { validationMessage = ""; getCoursesRequest.contactCrmId = null; getCoursesRequest.productCrmId = ProductCrmId; } else if (i == 2)//ProductCrmId field is mandatory { validationMessage = ""; getCoursesRequest.contactCrmId = ValidNonCebUser[0]; getCoursesRequest.productCrmId = null; } else if (i == 3)//invalid contactCrmId { validationMessage = ""; getCoursesRequest.contactCrmId = ValidNonCebUser[0] + "Invalid"; getCoursesRequest.productCrmId = ProductCrmId; } else if (i == 4)//invalid ProductCrmId { validationMessage = ""; getCoursesRequest.contactCrmId = ValidNonCebUser[0]; getCoursesRequest.productCrmId = ProductCrmId + "Invalid"; } else if (i == 5)//if we provide a contactCrmId of Unregistered or Ghost User { validationMessage = ""; getCoursesRequest.contactCrmId = ValidNonCebUser[0]; getCoursesRequest.productCrmId = ProductCrmId; } else if (i == 6)//IsEntitled is false in response object, if provided ProductCrmId and ContactCrmId not associated with each other { validationMessage = ""; getCoursesRequest.contactCrmId = ValidCebUser[0]; getCoursesRequest.productCrmId = ProductCrmId; } else if (i == 7)//ProductCrmID is Inactive { validationMessage = ""; getCoursesRequest.contactCrmId = ValidNonCebUser[0]; getCoursesRequest.productCrmId = ProductCrmId; } try { getCoursesResponse = target.GetCourses(getCoursesRequest); courseResponse = getCoursesResponse.GetCoursesResult; if (courseResponse.Courses.Length > 0) { Course = courseResponse.Courses; } bool IsEntitledChk = true; if (i == 0 || i == 1) { //Validate Course having isentite true for (int j = 0; j < Course.Length; j++) { if (Course[j].IsEntitled == false) { IsEntitledChk = false; } } } } catch (Exception ex0) { Test_Result_Upsert = _Assert.Execute( () => _Assert.AssertTrue(ex0.Message.Contains(validationMessage), "Validation message is not matched", root)); if (Test_Result_Upsert == "") { _writer.WriteLog(serviceName, "GetCourses_InValid|contactCrmId::" + getCoursesRequest.contactCrmId + "|productCrmId::" + getCoursesRequest.productCrmId, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString(), "Call GetCourses method ", SBWSCommon.StatusLevelOptions.PASS.ToString(), "To Verify validation messages|Expected validation message:" + ex0.Message, root); } else { _writer.WriteLog(serviceName, "GetCourses_InValid|contactCrmId::" + getCoursesRequest.contactCrmId + "|productCrmId::" + getCoursesRequest.productCrmId, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString(), "Call GetCourses method ", SBWSCommon.StatusLevelOptions.PASS.ToString(), "To Verify validation messages|Expected validation message:" + ex0.Message + "|Error:" + Test_Result_Upsert, root); } } } } catch (Exception ex) { throw; } finally { getCoursesRequest = null; getCoursesResponse = null; } }
public void GetCourses_valid() { #region Local var GetCoursesRequest getCoursesRequest = new GetCoursesRequest(); GetCoursesResponse getCoursesResponse = new GetCoursesResponse(); CourseResponse courseResponse = new CourseResponse(); Course[] Course = null; StringBuilder sbError = new StringBuilder(); string Test_Result_Upsert = String.Empty; #endregion try { for (int i = 0; i < 5; i++) { if (i == 0)//If Provided ContactCrmId has entitlement for the given ProductCrmId { getCoursesRequest.contactCrmId = ValidNonCebUser[0]; getCoursesRequest.productCrmId = ProductCrmId; } else if (i == 1)//method should return all the courses with in a given ProductCrmId(Course bundle) { getCoursesRequest.contactCrmId = null; getCoursesRequest.productCrmId = ProductCrmId; } else if (i == 2)//number of courses returned in response object of method is mapped with SFDC data { getCoursesRequest.contactCrmId = ValidNonCebUser[0]; getCoursesRequest.productCrmId = ProductCrmId; } try { getCoursesResponse = target.GetCourses(getCoursesRequest); courseResponse = getCoursesResponse.GetCoursesResult; if (courseResponse.Courses.Length > 0) { Course = courseResponse.Courses; } bool IsEntitledChk = true; if (i == 0 || i == 1) { //Validate Course having isentite true for (int j = 0; j < Course.Length; j++) { if (Course[j].IsEntitled == false) { IsEntitledChk = false; } } } //TODO: Call SFDC replica for validation of return courses if (i == 0) { Test_Result_Upsert = _Assert.Execute( () => _Assert.AssertTrue(getCoursesResponse != null, "getCoursesResponse return null", root), () => _Assert.AssertTrue(courseResponse.Courses.Length > 0, "courseResponse return count 0", root), () => _Assert.AssertTrue(IsEntitledChk == true, "IsEntitledChk return false against getcourse", root), () => _Assert.AssertTrue(Course[0].CourseCategory != null, "CourseCategory is null", root), () => _Assert.AssertTrue(Course[0].CourseCrmId != null, "CourseCrmId is null", root), () => _Assert.AssertTrue(Course[0].CourseName != null, "CourseName is null", root), () => _Assert.AssertTrue(Course[0].CourseNumber != null, "CourseNumber is null", root) ); if (Test_Result_Upsert == "") { if (i == 0) { _writer.WriteLog(serviceName, "GetCourses_valid|ContactCrmId::" + getCoursesRequest.contactCrmId + "|ProductCrmId::" + getCoursesRequest.productCrmId, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString(), "Call GetCourses method If Provided ContactCrmId has entitlement for the given ProductCrmId than, IsEntitled response object is true ", SBWSCommon.StatusLevelOptions.PASS.ToString(), "To Verify that fields available while calling GetCourses Method CourseCategory[0]:" + Course[0].CourseCategory + "|CourseCrmId[0]:" + Course[0].CourseCrmId + "|CourseName[0]:" + Course[0].CourseName + "|CourseNumber[0]:" + Course[0].CourseNumber + "|IsEntitled response object is true", root); } } else { _writer.WriteLog(serviceName, "GetCourses_valid|ContactCrmId::" + getCoursesRequest.contactCrmId + "|ProductCrmId::" + getCoursesRequest.productCrmId, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString(), "Call GetCourses method If Provided ContactCrmId has entitlement for the given ProductCrmId than, IsEntitled response object is true ", SBWSCommon.StatusLevelOptions.FAIL.ToString(), "To Verify that fields available while calling GetCourses Method CourseCategory[0]:" + Course[0].CourseCategory + "|CourseCrmId[0]:" + Course[0].CourseCrmId + "|CourseName[0]:" + Course[0].CourseName + "|CourseNumber[0]:" + Course[0].CourseNumber + "|IsEntitled response object is true|Error:" + Test_Result_Upsert, root); } } else if (i == 1) { Test_Result_Upsert = _Assert.Execute( () => _Assert.AssertTrue(getCoursesResponse != null, "getCoursesResponse return null", root), () => _Assert.AssertTrue(courseResponse.Courses.Length > 0, "courseResponse return count 0", root), () => _Assert.AssertTrue(IsEntitledChk == true, "IsEntitledChk return false against getcourse", root) ); if (Test_Result_Upsert == "") { _writer.WriteLog(serviceName, "GetCourses_valid|ContactCrmId::" + getCoursesRequest.contactCrmId + "|ProductCrmId::" + getCoursesRequest.productCrmId, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString(), "Call GetCourses method should return all the courses with in a given ProductCrmId(Course bundle) ", SBWSCommon.StatusLevelOptions.PASS.ToString(), "To Verify that fields available while calling GetCourses Method | Course lenth:" + Course.Length, root); } else { _writer.WriteLog(serviceName, "GetCourses_valid|ContactCrmId::" + getCoursesRequest.contactCrmId + "|ProductCrmId::" + getCoursesRequest.productCrmId, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString(), "Call GetCourses method should return all the courses with in a given ProductCrmId(Course bundle) ", SBWSCommon.StatusLevelOptions.FAIL.ToString(), "To Verify that fields available while calling GetCourses Method | Course lenth:" + Course.Length + "+Error:" + Test_Result_Upsert, root); } } else if (i == 2) { Test_Result_Upsert = _Assert.Execute( () => _Assert.AssertTrue(getCoursesResponse != null, "getCoursesResponse return null", root), () => _Assert.AssertTrue(courseResponse.Courses.Length > 0, "courseResponse return count 0", root), () => _Assert.AssertTrue(IsEntitledChk == true, "IsEntitledChk return false against getcourse", root) ); if (Test_Result_Upsert == "") { _writer.WriteLog(serviceName, "GetCourses_valid|ContactCrmId::" + getCoursesRequest.contactCrmId + "|ProductCrmId::" + getCoursesRequest.productCrmId, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString(), "Call GetCourses method should return all the courses with in a given ProductCrmId(Course bundle) ", SBWSCommon.StatusLevelOptions.PASS.ToString(), "To Verify that fields available while calling GetCourses Method | Course lenth:" + Course.Length, root); } else { _writer.WriteLog(serviceName, "GetCourses_valid|ContactCrmId::" + getCoursesRequest.contactCrmId + "|ProductCrmId::" + getCoursesRequest.productCrmId, DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString(), "Call GetCourses method should return all the courses with in a given ProductCrmId(Course bundle) ", SBWSCommon.StatusLevelOptions.FAIL.ToString(), "To Verify that fields available while calling GetCourses Method | Course lenth:" + Course.Length + "+Error:" + Test_Result_Upsert, root); } } } catch (Exception ex0) { throw; } } } catch (Exception ex) { throw; } finally { getCoursesRequest = null; getCoursesResponse = null; } }