public void EditAdminField_adds_model_error_if_trimmed_case_insensitive_answer_is_already_in_options_list()
        {
            // Given
            var model = new EditAdminFieldViewModel(1, "prompt", "test");

            model.Answer = "  tEsT  ";
            var initialTempData = new EditAdminFieldTempData
            {
                PromptNumber = model.PromptNumber, Prompt = model.Prompt, OptionsString = model.OptionsString
            };

            A.CallTo(
                () => multiPageFormService.GetMultiPageFormData <EditAdminFieldTempData>(
                    MultiPageFormDataFeature.EditAdminField,
                    controller.TempData
                    )
                ).Returns(initialTempData);
            const string action = "addPrompt";

            // When
            var result = controller.EditAdminField(1, model, action);

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <EditAdminFieldViewModel>();
                AssertModelStateErrorIsExpected(result, "That response is already in the list of options");
            }
        }
Beispiel #2
0
        public void PostEditAdminField_save_calls_correct_methods()
        {
            // Given
            var          model  = new EditAdminFieldViewModel(1, "Test", "Options");
            const string action = "save";

            A.CallTo(
                () => courseAdminFieldsService.UpdateCustomPromptForCourse(
                    1,
                    1,
                    "Options"
                    )
                ).DoesNothing();

            // When
            var result = controller.EditAdminField(1, model, action);

            // Then
            A.CallTo(
                () => courseAdminFieldsService.UpdateCustomPromptForCourse(
                    1,
                    1,
                    "Options"
                    )
                ).MustHaveHappened();
            result.Should().BeRedirectToActionResult().WithActionName("Index");
        }
 public static EditAdminFieldTempData ToEditAdminFieldTempData(this EditAdminFieldViewModel model)
 {
     return(new EditAdminFieldTempData
     {
         PromptNumber = model.PromptNumber,
         Prompt = model.Prompt,
         OptionsString = model.OptionsString,
         Answer = model.Answer,
         IncludeAnswersTableCaption = model.IncludeAnswersTableCaption,
     });
 }
Beispiel #4
0
        public void PostEditAdminField_returns_error_with_unexpected_action()
        {
            // Given
            var          model  = new EditAdminFieldViewModel(1, "Test", "Options");
            const string action = "deletetest";

            // When
            var result = controller.EditAdminField(1, model, action);

            // Then
            result.Should().BeStatusCodeResult().WithStatusCode(500);
        }
Beispiel #5
0
        public void PostAdminField_bulk_sets_up_temp_data_and_redirects()
        {
            // Given
            var          model  = new EditAdminFieldViewModel(1, "Test", "Options");
            const string action = "bulk";

            // When
            var result = controller.EditAdminField(1, model, action);

            // Then
            using (new AssertionScope())
            {
                AssertEditTempDataIsExpected(model);
                result.Should().BeRedirectToActionResult().WithActionName("EditAdminFieldAnswersBulk");
            }
        }
Beispiel #6
0
        public void PostEditAdminField_delete_removes_configured_answer()
        {
            // Given
            var          model  = new EditAdminFieldViewModel(1, "Test", "Test\r\nAnswer");
            const string action = "delete0";

            // When
            var result = controller.EditAdminField(1, model, action);

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <EditAdminFieldViewModel>();
                AssertNumberOfConfiguredAnswersOnView(result, 1);
            }
        }
        public void EditAdminFieldAnswersBulk_updates_temp_data_and_redirects_to_edit()
        {
            // Given
            var inputViewModel       = new BulkAdminFieldAnswersViewModel("Test\r\nAnswer");
            var initialEditViewModel = new EditAdminFieldViewModel(1, "Test", "Test");
            var initialTempData      = new EditAdminFieldTempData
            {
                PromptNumber  = initialEditViewModel.PromptNumber,
                Prompt        = initialEditViewModel.Prompt,
                OptionsString = initialEditViewModel.OptionsString,
                Answer        = initialEditViewModel.Answer,
                IncludeAnswersTableCaption = initialEditViewModel.IncludeAnswersTableCaption,
            };

            A.CallTo(
                () => multiPageFormService.GetMultiPageFormData <EditAdminFieldTempData>(
                    MultiPageFormDataFeature.EditAdminField,
                    controller.TempData
                    )
                ).Returns(initialTempData);

            A.CallTo(() => courseService.VerifyAdminUserCanManageCourse(A <int> ._, A <int> ._, A <int> ._))
            .Returns(true);

            // When
            var result = controller.EditAdminFieldAnswersBulk(1, inputViewModel);

            // Then
            using (new AssertionScope())
            {
                A.CallTo(
                    () => multiPageFormService.SetMultiPageFormData(
                        A <EditAdminFieldTempData> .That.Matches(
                            d => d.PromptNumber == initialTempData.PromptNumber &&
                            d.Prompt == initialTempData.Prompt &&
                            d.Answer == initialTempData.Answer &&
                            d.IncludeAnswersTableCaption == initialTempData.IncludeAnswersTableCaption &&
                            d.OptionsString == inputViewModel.OptionsString
                            ),
                        MultiPageFormDataFeature.EditAdminField,
                        controller.TempData
                        )
                    ).MustHaveHappenedOnceExactly();
                result.Should().BeRedirectToActionResult().WithActionName("EditAdminField");
            }
        }
        public IActionResult EditAdminField(
            int customisationId,
            EditAdminFieldViewModel model,
            string action
            )
        {
            if (action.StartsWith(DeleteAction) && TryGetAnswerIndexFromDeleteAction(action, out var index))
            {
                return(AdminFieldAnswersPostRemovePrompt(model, index));
            }

            return(action switch
            {
                SaveAction => EditAdminFieldPostSave(customisationId, model),
                AddPromptAction => AdminFieldAnswersPostAddPrompt(model),
                BulkAction => EditAdminFieldBulk(customisationId, model),
                _ => new StatusCodeResult(500),
            });
        public void PostEditAdminField_add_configures_new_answer()
        {
            // Given
            var model = new EditAdminFieldViewModel(1, "Test", "Options")
            {
                Answer = "new option",
            };
            const string action = "addPrompt";

            // When
            var result = controller.EditAdminField(1, model, action);

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <EditAdminFieldViewModel>();
                AssertNumberOfConfiguredAnswersOnView(result, 2);
            }
        }
Beispiel #10
0
        public void EditAdminFieldAnswersBulk_updates_temp_data_and_redirects_to_edit()
        {
            // Given
            var inputViewModel       = new BulkAdminFieldAnswersViewModel("Test\r\nAnswer");
            var initialEditViewModel = new EditAdminFieldViewModel(1, "Test", "Test");
            var expectedViewModel    = new EditAdminFieldViewModel(1, "Test", "Test\r\nAnswer");
            var initialTempData      = new EditAdminFieldData(initialEditViewModel);

            controller.TempData.Set(initialTempData);

            A.CallTo(() => courseService.VerifyAdminUserCanManageCourse(A <int> ._, A <int> ._, A <int> ._))
            .Returns(true);

            // When
            var result = controller.EditAdminFieldAnswersBulk(1, 1, inputViewModel);

            // Then
            using (new AssertionScope())
            {
                AssertEditTempDataIsExpected(expectedViewModel);
                result.Should().BeRedirectToActionResult().WithActionName("EditAdminField");
            }
        }
Beispiel #11
0
        public void PostEditAdminField_add_configures_new_answer()
        {
            // Given
            var          model  = new EditAdminFieldViewModel(1, "Test", "Options");
            const string action = "addPrompt";

            A.CallTo(
                () => courseAdminFieldsService.UpdateCustomPromptForCourse(
                    1,
                    1,
                    "Test"
                    )
                ).DoesNothing();

            // When
            var result = controller.EditAdminField(1, model, action);

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <EditAdminFieldViewModel>();
                AssertNumberOfConfiguredAnswersOnView(result, 2);
            }
        }
        public void PostAdminField_bulk_sets_up_temp_data_and_redirects()
        {
            // Given
            var model        = new EditAdminFieldViewModel(1, "Test", "Options");
            var expectedData = new EditAdminFieldTempData
            {
                PromptNumber  = model.PromptNumber,
                Prompt        = model.Prompt,
                OptionsString = model.OptionsString,
                Answer        = model.Answer,
                IncludeAnswersTableCaption = model.IncludeAnswersTableCaption,
            };
            const string action = "bulk";

            // When
            var result = controller.EditAdminField(1, model, action);

            // Then
            using (new AssertionScope())
            {
                AssertEditAdminFieldMultiPageFormDataIsUpdatedCorrectly(expectedData);
                result.Should().BeRedirectToActionResult().WithActionName("EditAdminFieldAnswersBulk");
            }
        }
Beispiel #13
0
 public EditAdminFieldData(EditAdminFieldViewModel model)
 {
     Id        = Guid.NewGuid();
     EditModel = model;
 }
Beispiel #14
0
 private void AssertEditTempDataIsExpected(EditAdminFieldViewModel expectedData)
 {
     controller.TempData.Peek <EditAdminFieldData>() !.EditModel.Should()
     .BeEquivalentTo(expectedData);
 }