Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }
Example #4
0
        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();
        }
Example #5
0
        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);
        }
Example #6
0
 public Task <IActionResult> GetCourses(GetCoursesRequest request) =>
 ExecuteSp <Course, GetCoursesResponse>(request ?? new GetCoursesRequest());
Example #7
0
        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;
            }
        }
Example #8
0
        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;
            }
        }