public void Index_should_redirect_to_section_page_if_one_section_in_course() { // Given const int customisationId = 123; const int sectionId = 456; var section = CourseContentHelper.CreateDefaultCourseSection(id: sectionId); var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent(customisationId); expectedCourseContent.Sections.Add(section); A.CallTo(() => courseContentService.GetCourseContent(CandidateId, customisationId)) .Returns(expectedCourseContent); A.CallTo(() => courseContentService.GetOrCreateProgressId(CandidateId, customisationId, CentreId)).Returns(10); // When var result = controller.Index(customisationId); // Then result.Should() .BeRedirectToActionResult() .WithControllerName("LearningMenu") .WithActionName("Section") .WithRouteValue("customisationId", customisationId) .WithRouteValue("sectionId", sectionId); }
public void Initial_menu_should_have_list_of_section_card_view_model() { // Given const string sectionName = "TestSectionName"; const bool hasLearning = true; const double percentComplete = 12.00; const int customisationId = 1; const bool showPercentage = true; const string courseSettings = "{\"lm.sp\":true}"; // ShowPercentage = true var courseContent = CourseContentHelper.CreateDefaultCourseContent( customisationId: customisationId, courseSettings: courseSettings ); var section = CourseSectionHelper.CreateDefaultCourseSection( sectionName: sectionName, hasLearning: hasLearning, percentComplete: percentComplete ); courseContent.Sections.Add(section); var expectedSection = new SectionCardViewModel(section, customisationId, showPercentage); var expectedSectionList = new List <SectionCardViewModel> { expectedSection }; // When var initialMenuViewModel = new InitialMenuViewModel(courseContent); // Then initialMenuViewModel.Sections.Should().BeEquivalentTo(expectedSectionList); }
public void Index_should_not_redirect_to_section_page_if_more_than_one_section_in_course() { // Given const int customisationId = 123; const int sectionId = 456; var section1 = CourseContentHelper.CreateDefaultCourseSection(id: sectionId + 1); var section2 = CourseContentHelper.CreateDefaultCourseSection(id: sectionId + 2); var section3 = CourseContentHelper.CreateDefaultCourseSection(id: sectionId + 3); var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent(customisationId); expectedCourseContent.Sections.AddRange(new[] { section1, section2, section3 }); A.CallTo(() => courseContentService.GetCourseContent(CandidateId, customisationId)) .Returns(expectedCourseContent); A.CallTo(() => courseContentService.GetOrCreateProgressId(CandidateId, customisationId, CentreId)).Returns(10); // When var result = controller.Index(customisationId); // Then var expectedModel = new InitialMenuViewModel(expectedCourseContent); result.Should().BeViewResult() .Model.Should().BeEquivalentTo(expectedModel); }
public void Initial_menu_formats_average_duration(int?averageDuration, string?expectedFormattedTime) { // Given var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent(averageDuration: averageDuration); // When var initialMenuViewModel = new InitialMenuViewModel(expectedCourseContent); // Then initialMenuViewModel.AverageDuration.Should().Be(expectedFormattedTime); }
public void Initial_menu_banner_text_can_be_null() { // Given var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent( bannerText: null ); // When var initialMenuViewModel = new InitialMenuViewModel(expectedCourseContent); // Then initialMenuViewModel.BannerText.Should().BeNullOrEmpty(); }
public void Initial_menu_can_have_banner_text() { // Given const string bannerText = "BannerText"; var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent( bannerText: bannerText ); // When var initialMenuViewModel = new InitialMenuViewModel(expectedCourseContent); // Then initialMenuViewModel.BannerText.Should().Be(bannerText); }
public void Initial_menu_should_have_id() { // Given const int customisationId = 12; var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent( customisationId: customisationId ); // When var initialMenuViewModel = new InitialMenuViewModel(expectedCourseContent); // Then initialMenuViewModel.Id.Should().Be(customisationId); }
public void Initial_menu_should_not_show_completion_summary_when_include_certification_is_false() { // Given const bool includeCertification = false; var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent( includeCertification: includeCertification ); // When var initialMenuViewModel = new InitialMenuViewModel(expectedCourseContent); // Then initialMenuViewModel.ShouldShowCompletionSummary.Should().Be(includeCertification); }
public void Initial_menu_should_have_false_show_time_if_setting_is_false() { // Given const string courseSettings = "{\"lm.st\":false}"; // ShowTime = false var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent( courseSettings: courseSettings ); // When var initialMenuViewModel = new InitialMenuViewModel(expectedCourseContent); // Then initialMenuViewModel.ShowTime.Should().BeFalse(); }
public void Initial_menu_should_have_centre_name() { // Given const string centreName = "CentreName"; var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent( centreName: centreName ); // When var initialMenuViewModel = new InitialMenuViewModel(expectedCourseContent); // Then initialMenuViewModel.CentreName.Should().Be(centreName); }
public void Index_unable_to_enrol_should_not_StartOrUpdate_course_sessions() { // Given var defaultCourseContent = CourseContentHelper.CreateDefaultCourseContent(CustomisationId); A.CallTo(() => courseContentService.GetCourseContent(CandidateId, CustomisationId)).Returns(defaultCourseContent); A.CallTo(() => courseContentService.GetOrCreateProgressId(CandidateId, CustomisationId, CentreId)).Returns(null); // When controller.Index(CustomisationId); // Then A.CallTo(() => sessionService.StartOrUpdateDelegateSession(A <int> ._, A <int> ._, A <ISession> ._)).MustNotHaveHappened(); }
public void Initial_menu_should_have_name() { // Given const string customisationName = "Custom"; const string applicationName = "My course"; var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent( customisationName: customisationName, applicationName: applicationName ); // When var initialMenuViewModel = new InitialMenuViewModel(expectedCourseContent); // Then initialMenuViewModel.Title.Should().Be($"{applicationName} - {customisationName}"); }
public void Index_valid_customisation_id_should_update_login_and_duration() { // Given const int progressId = 13; var defaultCourseContent = CourseContentHelper.CreateDefaultCourseContent(CustomisationId); A.CallTo(() => courseContentService.GetCourseContent(CandidateId, CustomisationId)) .Returns(defaultCourseContent); A.CallTo(() => courseContentService.GetOrCreateProgressId(CandidateId, CustomisationId, CentreId)).Returns(progressId); // When controller.Index(CustomisationId); // Then A.CallTo(() => courseContentService.UpdateProgress(progressId)).MustHaveHappened(); }
public void Index_should_render_view() { // Given var expectedCourseContent = CourseContentHelper.CreateDefaultCourseContent(CustomisationId); A.CallTo(() => courseContentService.GetCourseContent(CandidateId, CustomisationId)) .Returns(expectedCourseContent); A.CallTo(() => courseContentService.GetOrCreateProgressId(CandidateId, CustomisationId, CentreId)).Returns(10); // When var result = controller.Index(CustomisationId); // Then var expectedModel = new InitialMenuViewModel(expectedCourseContent); result.Should().BeViewResult() .Model.Should().BeEquivalentTo(expectedModel); }
public void Index_valid_customisationId_should_StartOrUpdate_course_sessions() { // Given var defaultCourseContent = CourseContentHelper.CreateDefaultCourseContent(CustomisationId); A.CallTo(() => courseContentService.GetCourseContent(CandidateId, CustomisationId)) .Returns(defaultCourseContent); A.CallTo(() => courseContentService.GetOrCreateProgressId(CandidateId, CustomisationId, CentreId)).Returns(1); // When controller.Index(CustomisationId); // Then A.CallTo(() => sessionService.StartOrUpdateDelegateSession(CandidateId, CustomisationId, httpContextSession)).MustHaveHappenedOnceExactly(); A.CallTo(() => sessionService.StartOrUpdateDelegateSession(A <int> ._, A <int> ._, A <ISession> ._)) .WhenArgumentsMatch((int candidateId, int customisationId, ISession session) => candidateId != CandidateId || customisationId != CustomisationId) .MustNotHaveHappened(); }
public void Index_should_return_404_if_unable_to_enrol() { // Given var defaultCourseContent = CourseContentHelper.CreateDefaultCourseContent(CustomisationId); A.CallTo(() => courseContentService.GetCourseContent(CandidateId, CustomisationId)) .Returns(defaultCourseContent); A.CallTo(() => courseContentService.GetOrCreateProgressId(CandidateId, CustomisationId, CentreId)) .Returns(null); // When var result = controller.Index(CustomisationId); // Then result.Should() .BeRedirectToActionResult() .WithControllerName("LearningSolutions") .WithActionName("StatusCode") .WithRouteValue("code", 404); }
public void Initial_menu_should_have_completion_summary_card_view_model( int customisationId, string?completed, int maxPostLearningAssessmentAttempts, bool isAssessed, int postLearningAssessmentPassThreshold, int diagnosticAssessmentCompletionThreshold, int tutorialsCompletionThreshold ) { // Given var completedDateTime = completed != null?DateTime.Parse(completed) : (DateTime?)null; var courseContent = CourseContentHelper.CreateDefaultCourseContent( customisationId: customisationId, completed: completedDateTime, maxPostLearningAssessmentAttempts: maxPostLearningAssessmentAttempts, isAssessed: isAssessed, postLearningAssessmentPassThreshold: postLearningAssessmentPassThreshold, diagnosticAssessmentCompletionThreshold: diagnosticAssessmentCompletionThreshold, tutorialsCompletionThreshold: tutorialsCompletionThreshold ); var expectedCompletionSummaryViewModel = new CompletionSummaryCardViewModel( customisationId, completedDateTime, maxPostLearningAssessmentAttempts, isAssessed, postLearningAssessmentPassThreshold, diagnosticAssessmentCompletionThreshold, tutorialsCompletionThreshold ); // When var initialMenuViewModel = new InitialMenuViewModel(courseContent); // Then initialMenuViewModel.CompletionSummaryCardViewModel .Should().BeEquivalentTo(expectedCompletionSummaryViewModel); }