Beispiel #1
0
        public void GetAllCoursesInCategoryForDelegate_filters_courses_by_category()
        {
            // Given
            var info1 = new DelegateCourseInfo
            {
                DelegateId = 1, CustomisationId = 1, CourseCategoryId = 1, CustomisationCentreId = 1
            };
            var info2 = new DelegateCourseInfo
            {
                DelegateId = 2, CustomisationId = 2, CourseCategoryId = 1, CustomisationCentreId = 1
            };
            var info3 = new DelegateCourseInfo
            {
                DelegateId = 3, CustomisationId = 3, CourseCategoryId = 2, CustomisationCentreId = 1
            };

            A.CallTo(
                () => courseDataService.GetDelegateCoursesInfo(1)
                ).Returns(new[] { info1, info2, info3 });

            // When
            var result = courseService.GetAllCoursesInCategoryForDelegate(1, 1, 1).ToList();

            // Then
            result.Count.Should().Be(2);
            result.All(x => x.DelegateCourseInfo.CourseCategoryId == 1).Should().BeTrue();
        }
        public void Delegate_removal_for_delegate_with_no_active_progress_returns_not_found_result()
        {
            // Given
            var delegateCourseInfo    = new DelegateCourseInfo();
            var delegateCourseDetails = new DetailedCourseProgress(
                new Progress(),
                new List <DetailedSectionProgress>(),
                delegateCourseInfo
                );

            A.CallTo(() => progressService.GetDetailedCourseProgress(ProgressId))
            .Returns(delegateCourseDetails);
            A.CallTo(() => courseService.DelegateHasCurrentProgress(ProgressId))
            .Returns(false);

            var model = new RemoveFromCourseViewModel
            {
                Confirm     = true,
                AccessedVia = DelegateAccessRoute.ViewDelegate,
            };

            // When
            var result = delegateProgressController.ExecuteRemoveFromCourse(
                ProgressId,
                DelegateAccessRoute.ViewDelegate,
                model
                );

            // Then
            result.Should().BeNotFoundResult();
        }
        public void Returns_NotFound_if_course_is_at_different_centre_and_not_all_centre_course()
        {
            // Given
            var delegateCourseInfo = new DelegateCourseInfo
            {
                DelegateCentreId      = 101,
                CustomisationCentreId = 1,
                AllCentresCourse      = false,
                CourseCategoryId      = 1,
            };

            A.CallTo(() => progressService.GetDetailedCourseProgress(2))
            .Returns(
                new DetailedCourseProgress(
                    new Progress(),
                    new List <DetailedSectionProgress>(),
                    delegateCourseInfo
                    )
                );

            // When
            new VerifyAdminUserCanAccessProgress(progressService).OnActionExecuting(context);

            // Then
            context.Result.Should().BeNotFoundResult();
        }
Beispiel #4
0
        public void Returns_NotFound_if_course_is_at_different_centre_and_not_all_centre_course()
        {
            // Given
            var delegateCourseInfo = new DelegateCourseInfo
            {
                DelegateCentreId      = 101,
                CustomisationCentreId = 1,
                AllCentresCourse      = false,
                CourseCategoryId      = 1,
            };

            A.CallTo(() => courseService.GetDelegateCourseProgress(2, 101))
            .Returns(
                new DelegateCourseDetails(
                    delegateCourseInfo,
                    new List <CustomPromptWithAnswer>(),
                    new AttemptStats(0, 0)
                    )
                );

            // When
            new VerifyAdminUserCanAccessProgress(courseService).OnActionExecuting(context);

            // Then
            context.Result.Should().BeNotFoundResult();
        }
        public void GetCourseAdminFieldsWithAnswersForCourse_Returns_Populated_List_of_CourseAdminFieldWithAnswer()
        {
            // Given
            const string answer1   = "ans1";
            const string answer2   = "ans2";
            var          expected1 = PromptsTestHelper.GetDefaultCourseAdminFieldWithAnswer(
                1,
                "System Access Granted",
                "Test",
                answer1
                );
            var expected2 = PromptsTestHelper.GetDefaultCourseAdminFieldWithAnswer(
                2,
                "Priority Access",
                answer: answer2
                );
            var expected = new List <CourseAdminFieldWithAnswer> {
                expected1, expected2
            };

            A.CallTo(() => courseAdminFieldsDataService.GetCourseAdminFields(100))
            .Returns(PromptsTestHelper.GetDefaultCourseAdminFieldsResult());
            var delegateCourseInfo = new DelegateCourseInfo {
                Answer1 = answer1, Answer2 = answer2, CustomisationId = 100
            };

            // When
            var result = courseAdminFieldsService.GetCourseAdminFieldsWithAnswersForCourse(delegateCourseInfo);

            // Then
            result.Should().BeEquivalentTo(expected);
        }
Beispiel #6
0
        private CourseDelegate GetCourseDelegateWithAdminFields(DelegateCourseInfo delegateCourseInfo)
        {
            var coursePrompts = courseAdminFieldsService.GetCourseAdminFieldsWithAnswersForCourse(delegateCourseInfo);

            delegateCourseInfo.CourseAdminFields = coursePrompts;
            return(new CourseDelegate(delegateCourseInfo));
        }
Beispiel #7
0
        public void UpdateSupervisor_updates_records_if_new_supervisor_does_not_match_current()
        {
            // Given
            const int oldSupervisorId = 1;
            const int newSupervisorId = 6;
            const int progressId      = 1;
            var       courseInfo      = new DelegateCourseInfo {
                SupervisorAdminId = oldSupervisorId
            };

            A.CallTo(() => courseDataService.GetDelegateCourseInfoByProgressId(progressId)).Returns(courseInfo);

            // When
            progressService.UpdateSupervisor(progressId, newSupervisorId);

            // Then
            A.CallTo(
                () => progressDataService.UpdateProgressSupervisorAndCompleteByDate(
                    progressId,
                    newSupervisorId,
                    A <DateTime?> ._
                    )
                ).MustHaveHappened();
            A.CallTo(
                () => progressDataService.ClearAspProgressVerificationRequest(progressId)
                ).MustHaveHappened();
        }
        public void DelegateCourseInfoViewModel_sets_date_strings_correctly()
        {
            // Given
            var enrolledDate   = new DateTime(2021, 05, 1, 12, 12, 12);
            var updatedDate    = new DateTime(2021, 05, 2, 13, 13, 13);
            var completeByDate = new DateTime(2021, 05, 3, 14, 14, 14);
            var completedDate  = new DateTime(2021, 05, 4, 15, 15, 15);
            var evaluatedDate  = new DateTime(2021, 05, 5, 16, 16, 16);
            var info           = new DelegateCourseInfo
            {
                Enrolled    = enrolledDate,
                LastUpdated = updatedDate,
                CompleteBy  = completeByDate,
                Completed   = completedDate,
                Evaluated   = evaluatedDate,
            };

            // When
            var model = new DelegateCourseInfoViewModel(
                info,
                DelegateAccessRoute.CourseDelegates,
                new ReturnPageQuery(1, null)
                );

            // Then
            using (new AssertionScope())
            {
                model.Enrolled.Should().Be("01/05/2021 12:12");
                model.LastAccessed.Should().Be("02/05/2021 13:13");
                model.CompleteBy.Should().Be("03/05/2021 14:14");
                model.Completed.Should().Be("04/05/2021 15:15");
                model.Evaluated.Should().Be("05/05/2021 16:16");
            }
        }
Beispiel #9
0
        public void DelegateCourseInfoViewModel_sets_date_strings_correctly()
        {
            // Given
            var enrolledDate   = new DateTime(2021, 05, 1);
            var updatedDate    = new DateTime(2021, 05, 2);
            var completeByDate = new DateTime(2021, 05, 3);
            var completedDate  = new DateTime(2021, 05, 4);
            var evaluatedDate  = new DateTime(2021, 05, 5);
            var info           = new DelegateCourseInfo
            {
                Enrolled    = enrolledDate,
                LastUpdated = updatedDate,
                CompleteBy  = completeByDate,
                Completed   = completedDate,
                Evaluated   = evaluatedDate
            };
            var details = new DelegateCourseDetails(info, customPromptsWithAnswers, attemptStats);

            // When
            var model = new DelegateCourseInfoViewModel(details);

            // Then
            model.Enrolled.Should().Be("01/05/2021");
            model.LastUpdated.Should().Be("02/05/2021");
            model.CompleteBy.Should().Be("03/05/2021");
            model.Completed.Should().Be("04/05/2021");
            model.Evaluated.Should().Be("05/05/2021");
        }
Beispiel #10
0
        public void ViewModel_sets_Enrolment_method_text_correctly(int enrolmentMethodId, string expectedText)
        {
            // Given
            var delegateInfo = new DelegateCourseInfo
            {
                EnrolmentMethodId     = enrolmentMethodId,
                EnrolledByForename    = "Ronnie",
                EnrolledBySurname     = "Dio",
                EnrolledByAdminActive = true,
                DelegateId            = 1,
            };
            var viewModel = new DelegateProgressViewModel(
                DelegateAccessRoute.ViewDelegate,
                new DetailedCourseProgress(
                    new Progress(),
                    new List <DetailedSectionProgress>(),
                    delegateInfo
                    ),
                A.Fake <IConfiguration>(),
                ReturnPageQueryHelper.GetDefaultReturnPageQuery()
                );

            // Then
            viewModel.EnrolmentMethod.Should().Be(expectedText);
        }
Beispiel #11
0
        public void GetDelegateAttemptsAndCourseCustomPrompts_should_call_correct_data_service_and_helper_methods()
        {
            // Given
            const int delegateId      = 20;
            const int customisationId = 111;
            var       attemptStatsReturnedByDataService = new AttemptStats(10, 5);
            var       info = new DelegateCourseInfo
            {
                DelegateId = delegateId, CustomisationId = customisationId, IsAssessed = true
            };

            A.CallTo(() => courseDataService.GetDelegateCourseAttemptStats(delegateId, customisationId))
            .Returns(attemptStatsReturnedByDataService);

            // When
            var results = courseService.GetDelegateAttemptsAndCourseCustomPrompts(info);

            // Then
            A.CallTo(
                () => courseAdminFieldsService.GetCustomPromptsWithAnswersForCourse(
                    info,
                    customisationId
                    )
                ).MustHaveHappenedOnceExactly();
            A.CallTo(() => courseDataService.GetDelegateCourseAttemptStats(delegateId, customisationId))
            .MustHaveHappenedOnceExactly();
            results.DelegateCourseInfo.Should().BeEquivalentTo(info);
            results.AttemptStats.Should().Be(attemptStatsReturnedByDataService);
        }
Beispiel #12
0
        public void GetAllCoursesForDelegate_returns_only_courses_at_centre_or_all_centres_courses()
        {
            // Given
            const int delegateId = 1;
            const int centreId   = 1;
            const int categoryId = 1;
            var       delegateCourseInfoAtCentre = new DelegateCourseInfo
            {
                CustomisationCentreId = centreId, CourseCategoryId = categoryId
            };
            var delegateCourseInfoNotAtCentre = new DelegateCourseInfo
            {
                CustomisationCentreId = 1000, CourseCategoryId = categoryId
            };
            var allCentresCourseInfoNotAtCentre = new DelegateCourseInfo
            {
                CustomisationCentreId = 1000, CourseCategoryId = categoryId, AllCentresCourse = true
            };

            A.CallTo(() => courseDataService.GetDelegateCoursesInfo(delegateId))
            .Returns(
                new[] { delegateCourseInfoAtCentre, delegateCourseInfoNotAtCentre, allCentresCourseInfoNotAtCentre }
                );

            // When
            var result = courseService.GetAllCoursesInCategoryForDelegate(delegateId, centreId, categoryId).ToList();

            // Then
            result.Count.Should().Be(2);
            result.All(
                x => x.DelegateCourseInfo.CustomisationCentreId == centreId || x.DelegateCourseInfo.AllCentresCourse
                ).Should().BeTrue();
        }
        private DelegateCourseInfoViewModel(DelegateCourseInfo info)
        {
            ProgressId      = info.ProgressId;
            CustomisationId = info.CustomisationId;

            DelegateId   = info.DelegateId;
            DelegateName = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(
                info.DelegateFirstName,
                info.DelegateLastName
                );
            CourseDelegatesDisplayName =
                NameQueryHelper.GetSortableFullName(info.DelegateFirstName, info.DelegateLastName);
            Email          = info.DelegateEmail;
            DelegateNumber = info.CandidateNumber;
            ProfessionalRegistrationNumber = PrnStringHelper.GetPrnDisplayString(
                info.HasBeenPromptedForPrn,
                info.ProfessionalRegistrationNumber
                );

            Enrolled   = info.Enrolled.ToString(DateHelper.StandardDateAndTimeFormat);
            Supervisor = info.SupervisorSurname != null
                ? DisplayStringHelper.GetPotentiallyInactiveAdminName(
                info.SupervisorForename,
                info.SupervisorSurname,
                info.SupervisorAdminActive !.Value
                )
                : "None";

            CompleteBy   = info.CompleteBy?.ToString(DateHelper.StandardDateAndTimeFormat);
            LastAccessed = info.LastUpdated.ToString(DateHelper.StandardDateAndTimeFormat);
            Completed    = info.Completed?.ToString(DateHelper.StandardDateAndTimeFormat);
            Evaluated    = info.Evaluated?.ToString(DateHelper.StandardDateAndTimeFormat);
            RemovedDate  = info.RemovedDate?.ToString(DateHelper.StandardDateAndTimeFormat);

            var enrolledByFullName = DisplayStringHelper.GetPotentiallyInactiveAdminName(
                info.EnrolledByForename,
                info.EnrolledBySurname,
                info.EnrolledByAdminActive
                );

            EnrolmentMethod = info.EnrolmentMethodId switch
            {
                1 => "Self enrolled",
                2 => "Enrolled by " + (enrolledByFullName ?? "Admin"),
                3 => "Group",
                _ => "System",
            };

            LoginCount      = info.LoginCount;
            LearningTime    = info.LearningTime + " mins";
            DiagnosticScore = info.DiagnosticScore;
            CourseAdminFieldsWithAnswers = info.CourseAdminFields;
            IsAssessed       = info.IsAssessed;
            IsProgressLocked = info.IsProgressLocked;
            TotalAttempts    = info.AllAttempts;
            AttemptsPassed   = info.AttemptsPassed;
            PassRate         = info.PassRate;
            CourseName       = info.CourseName;
        }
Beispiel #14
0
        public void ViewModel_sets_full_names_correctly()
        {
            // Given
            var missingNamesDelegateInfo = new DelegateCourseInfo
            {
                DelegateFirstName  = null,
                DelegateLastName   = "Osbourne",
                DelegateEmail      = "Prince@Darkness",
                SupervisorAdminId  = null,
                SupervisorForename = "Tony",
                SupervisorSurname  = "Iommi",
                EnrolledByAdminId  = null,
                EnrolledByForename = "Geezer",
                EnrolledBySurname  = "Butler",
                DelegateId         = 1,
            };
            var missingNamesViewModel = new DelegateProgressViewModel(
                DelegateProgressAccessRoute.ViewDelegate,
                new DelegateCourseDetails(
                    missingNamesDelegateInfo,
                    new List <CustomPromptWithAnswer>(),
                    new AttemptStats(0, 0)
                    )
                );
            var fullNamesDelegateInfo = new DelegateCourseInfo
            {
                DelegateFirstName  = "Ozzy",
                DelegateLastName   = "Osbourne",
                DelegateEmail      = "Prince@Darkness",
                SupervisorAdminId  = 1,
                SupervisorForename = "Tony",
                SupervisorSurname  = "Iommi",
                EnrolledByAdminId  = 1,
                EnrolledByForename = "Geezer",
                EnrolledBySurname  = "Butler",
                DelegateId         = 2,
            };
            var fullNamesViewModel = new DelegateProgressViewModel(
                DelegateProgressAccessRoute.ViewDelegate,
                new DelegateCourseDetails(
                    fullNamesDelegateInfo,
                    new List <CustomPromptWithAnswer>(),
                    new AttemptStats(0, 0)
                    )
                );

            // Then
            using (new AssertionScope())
            {
                missingNamesViewModel.DelegateFullName.Should().Be("Osbourne");
                missingNamesViewModel.DelegateNameAndEmail.Should().Be("Osbourne (Prince@Darkness)");
                missingNamesViewModel.SupervisorFullName.Should().Be("None");
                missingNamesViewModel.EnrolledByFullName.Should().BeNull();
                fullNamesViewModel.DelegateFullName.Should().Be("Ozzy Osbourne");
                fullNamesViewModel.DelegateNameAndEmail.Should().Be("Ozzy Osbourne (Prince@Darkness)");
                fullNamesViewModel.SupervisorFullName.Should().Be("Tony Iommi");
                fullNamesViewModel.EnrolledByFullName.Should().Be("Geezer Butler");
            }
        }
        public List <CourseAdminFieldWithAnswer> GetCourseAdminFieldsWithAnswersForCourse(
            DelegateCourseInfo delegateCourseInfo
            )
        {
            var result = GetCourseAdminFieldsResultForCourse(delegateCourseInfo.CustomisationId);

            return(PopulateCourseAdminFieldWithAnswerListFromResult(result, delegateCourseInfo));
        }
Beispiel #16
0
        public List <CustomPromptWithAnswer> GetCustomPromptsWithAnswersForCourse(
            DelegateCourseInfo delegateCourseInfo,
            int customisationId
            )
        {
            var result = GetCourseCustomPromptsResultForCourse(customisationId);

            return(PopulateCustomPromptWithAnswerListFromCourseAdminFieldsResult(result, delegateCourseInfo));
        }
Beispiel #17
0
 protected EditDelegateCourseAdminFieldFormData(
     DelegateCourseInfo delegateCourseInfo,
     ReturnPageQuery?returnPageQuery = null
     )
 {
     DelegateId      = delegateCourseInfo.DelegateId;
     CustomisationId = delegateCourseInfo.CustomisationId;
     ReturnPageQuery = returnPageQuery;
 }
 public DelegateCourseInfoViewModel(
     DelegateCourseInfo delegateCourseInfo,
     DelegateAccessRoute accessedVia,
     ReturnPageQuery?returnPageQuery = null
     ) : this(delegateCourseInfo)
 {
     AccessedVia     = accessedVia;
     ReturnPageQuery = returnPageQuery;
 }
Beispiel #19
0
 public EditCompleteByDateViewModel(
     int progressId,
     DelegateProgressAccessRoute accessedVia,
     DelegateCourseInfo info
     ) : base(info)
 {
     ProgressId  = progressId;
     AccessedVia = accessedVia;
 }
Beispiel #20
0
 protected EditSupervisorFormData(DelegateCourseInfo info)
 {
     DelegateId      = info.DelegateId;
     SupervisorId    = info.SupervisorAdminId;
     CustomisationId = info.CustomisationId;
     CourseName      = info.CourseName;
     DelegateName    = info.DelegateFirstName == null
         ? info.DelegateLastName
         : $"{info.DelegateFirstName} {info.DelegateLastName}";
 }
Beispiel #21
0
        private List <RadiosItemViewModel> GetRadioItems(DelegateCourseInfo info, int promptNumber)
        {
            var answerOptions = Options.Select(
                option => new RadiosItemViewModel(option, option, option == info.GetAnswer(promptNumber), null)
                ).ToList();
            var noOptionIsSelected = answerOptions.All(ao => !ao.Selected);

            answerOptions.Add(new RadiosItemViewModel(string.Empty, "Leave blank", noOptionIsSelected, null));
            return(answerOptions);
        }
Beispiel #22
0
 public EditCompletionDateViewModel(
     int progressId,
     DelegateAccessRoute accessedVia,
     DelegateCourseInfo info,
     ReturnPageQuery?returnPageQuery
     ) : base(info, returnPageQuery)
 {
     ProgressId  = progressId;
     AccessedVia = accessedVia;
 }
        public void GetCoursesAndCourseDelegatesForCentre_populates_course_delegates_data()
        {
            // Given
            const int centreId           = 2;
            const int categoryId         = 1;
            const int customisationId    = 1;
            var       delegateCourseInfo = new DelegateCourseInfo();

            A.CallTo(() => courseDataService.GetCoursesAvailableToCentreByCategory(centreId, categoryId))
            .Returns(
                new List <CourseAssessmentDetails>
            {
                new CourseAssessmentDetails {
                    CustomisationId = customisationId
                }
            }
                );
            A.CallTo(() => courseDataService.GetDelegateCourseInfosForCourse(A <int> ._, A <int> ._))
            .Returns(new List <DelegateCourseInfo> {
                delegateCourseInfo
            });
            A.CallTo(() => courseAdminFieldsService.GetCourseAdminFieldsForCourse(A <int> ._))
            .Returns(
                new CourseAdminFields(
                    customisationId,
                    new List <CourseAdminField> {
                new CourseAdminField(1, "prompt", null)
            }
                    )
                );
            A.CallTo(() => courseAdminFieldsService.GetCourseAdminFieldsWithAnswersForCourse(delegateCourseInfo))
            .Returns(
                new List <CourseAdminFieldWithAnswer>
            {
                new CourseAdminFieldWithAnswer(1, "prompt", null, "answer")
            }
                );

            // When
            var result = courseDelegatesService.GetCoursesAndCourseDelegatesForCentre(
                centreId,
                categoryId,
                null
                );

            // Then
            using (new AssertionScope())
            {
                result.Courses.Should().HaveCount(1);
                result.Delegates.Should().HaveCount(1);
                result.Delegates.First().CourseAdminFields.Should().HaveCount(1);
                result.CustomisationId.Should().Be(customisationId);
                result.CourseAdminFields.Should().HaveCount(1);
            }
        }
Beispiel #24
0
 public EditSupervisorViewModel(
     int progressId,
     DelegateProgressAccessRoute accessedVia,
     IEnumerable <AdminUser> supervisors,
     DelegateCourseInfo info
     ) : base(info)
 {
     ProgressId  = progressId;
     AccessedVia = accessedVia;
     Supervisors = PopulateSupervisors(info.SupervisorAdminId, supervisors);
 }
 public DetailedCourseProgress(
     Progress progress,
     IEnumerable <DetailedSectionProgress> sections,
     DelegateCourseInfo delegateCourseInfo
     ) : base(delegateCourseInfo)
 {
     DiagnosticScore = progress.DiagnosticScore;
     ProgressId      = progress.ProgressId;
     CustomisationId = progress.CustomisationId;
     DelegateId      = progress.CandidateId;
     Sections        = sections;
 }
Beispiel #26
0
 protected EditCompletionDateFormData(DelegateCourseInfo info)
 {
     DelegateId      = info.DelegateId;
     Day             = info.Completed?.Day;
     Month           = info.Completed?.Month;
     Year            = info.Completed?.Year;
     CustomisationId = info.CustomisationId;
     CourseName      = info.CourseName;
     DelegateName    = info.DelegateFirstName == null
         ? info.DelegateLastName
         : $"{info.DelegateFirstName} {info.DelegateLastName}";
 }
Beispiel #27
0
        private List <CustomPromptWithAnswer> PopulateCustomPromptWithAnswerListFromCourseAdminFieldsResult(
            CourseAdminFieldsResult?result,
            DelegateCourseInfo delegateCourseInfo
            )
        {
            var list = new List <CustomPromptWithAnswer>();

            if (result == null)
            {
                return(list);
            }

            var prompt1 = CustomPromptHelper.PopulateCustomPromptWithAnswer(
                1,
                result.CustomField1Prompt,
                result.CustomField1Options,
                false,
                delegateCourseInfo.Answer1
                );

            if (prompt1 != null)
            {
                list.Add(prompt1);
            }

            var prompt2 = CustomPromptHelper.PopulateCustomPromptWithAnswer(
                2,
                result.CustomField2Prompt,
                result.CustomField2Options,
                false,
                delegateCourseInfo.Answer2
                );

            if (prompt2 != null)
            {
                list.Add(prompt2);
            }

            var prompt3 = CustomPromptHelper.PopulateCustomPromptWithAnswer(
                3,
                result.CustomField3Prompt,
                result.CustomField3Options,
                false,
                delegateCourseInfo.Answer3
                );

            if (prompt3 != null)
            {
                list.Add(prompt3);
            }

            return(list);
        }
Beispiel #28
0
 protected EditCompleteByDateFormData(DelegateCourseInfo info, ReturnPageQuery?returnPageQuery)
 {
     DelegateId      = info.DelegateId;
     Day             = info.CompleteBy?.Day;
     Month           = info.CompleteBy?.Month;
     Year            = info.CompleteBy?.Year;
     CustomisationId = info.CustomisationId;
     CourseName      = info.CourseName;
     DelegateName    = info.DelegateFirstName == null
         ? info.DelegateLastName
         : $"{info.DelegateFirstName} {info.DelegateLastName}";
     ReturnPageQuery = returnPageQuery;
 }
        EditDelegateCourseAdminField_GET_returns_not_found_if_no_course_admin_field_corresponds_to_prompt_number()
        {
            // Given
            const int    validPromptNumber   = 1;
            const int    invalidPromptNumber = 2;
            const string promptText          = "Prompt text";
            const string options             = "Answer";

            var courseAdminFieldWithAnswer = new CourseAdminFieldWithAnswer(
                validPromptNumber,
                promptText,
                options,
                options
                );
            var delegateCourseInfo = new DelegateCourseInfo
            {
                CourseAdminFields = new List <CourseAdminFieldWithAnswer> {
                    courseAdminFieldWithAnswer
                }
            };
            var delegateCourseDetails = new DetailedCourseProgress(
                new Progress(),
                new List <DetailedSectionProgress>(),
                delegateCourseInfo
                );

            var courseAdminField           = new CourseAdminField(validPromptNumber, promptText, options);
            var courseAdminFieldsForCourse = new CourseAdminFields(
                CustomisationId,
                new List <CourseAdminField> {
                courseAdminField
            }
                );

            A.CallTo(() => progressService.GetDetailedCourseProgress(ProgressId))
            .Returns(delegateCourseDetails);
            A.CallTo(() => courseAdminFieldsService.GetCourseAdminFieldsForCourse(CustomisationId))
            .Returns(courseAdminFieldsForCourse);

            // When
            var result = delegateProgressController.EditDelegateCourseAdminField(
                invalidPromptNumber,
                ProgressId,
                DelegateAccessRoute.CourseDelegates
                );

            // Then
            result.Should().BeNotFoundResult();
        }
Beispiel #30
0
        public void DelegateCourseInfoViewModel_without_customisation_name_sets_course_name_correctly()
        {
            // Given
            var info = new DelegateCourseInfo
            {
                ApplicationName = "my application", CustomisationName = ""
            };
            var details = new DelegateCourseDetails(info, customPromptsWithAnswers, attemptStats);

            // When
            var model = new DelegateCourseInfoViewModel(details);

            // Then
            model.CourseName.Should().Be("my application");
        }