public void AddAdminField_adds_model_error_if_field_name_is_already_in_use()
        {
            // Given
            var model           = new AddAdminFieldViewModel(1, "test");
            var initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = model.AdminFieldId, OptionsString = model.OptionsString
            };

            A.CallTo(
                () => multiPageFormService.GetMultiPageFormData <AddAdminFieldTempData>(
                    MultiPageFormDataFeature.AddAdminField,
                    controller.TempData
                    )
                ).Returns(initialTempData);
            const string action = "save";

            A.CallTo(() => courseAdminFieldsDataService.GetCourseFieldPromptIdsForCustomisation(A <int> ._))
            .Returns(new[] { 1, 0, 0 });

            // When
            var result = controller.AddAdminField(100, model, action);

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
                AssertModelStateErrorIsExpected(result, "That field name already exists for this course");
            }
        }
        public void AddAdminField_removes_answer_without_admin_field_selected()
        {
            var          model           = new AddAdminFieldViewModel(null, "Test\r\nAnswer");
            const string action          = "delete0";
            var          initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = model.AdminFieldId, OptionsString = model.OptionsString
            };

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

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

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
                AssertNumberOfConfiguredAnswersOnView(result, 1);
            }
        }
        public void AddAdminField_bulk_redirects_without_admin_field_selected()
        {
            // Given
            var          model           = new AddAdminFieldViewModel(null, "Options");
            const string action          = "bulk";
            var          initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = model.AdminFieldId, OptionsString = model.OptionsString
            };

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

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

            // Then
            using (new AssertionScope())
            {
                AssertAddAdminFieldMultiPageFormDataIsUpdatedCorrectly(initialTempData);
                result.Should().BeRedirectToActionResult().WithActionName("AddAdminFieldAnswersBulk");
            }
        }
        public void AddAdminField_adds_answer_without_admin_field_selected()
        {
            var initialViewModel = new AddAdminFieldViewModel(null, null, "Answer");
            var initialTempData  = new AddAdminFieldTempData
            {
                AdminFieldId  = initialViewModel.AdminFieldId,
                OptionsString = initialViewModel.OptionsString,
                Answer        = initialViewModel.Answer,
                IncludeAnswersTableCaption = initialViewModel.IncludeAnswersTableCaption,
            };

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

            const string action = "addPrompt";

            // When
            controller.AddAdminField(1, initialViewModel, action);

            // Then
            AssertAddAdminFieldMultiPageFormDataIsUpdatedCorrectly(initialTempData);
        }
        public void AddAdminField_adds_model_error_if_new_answer_surpasses_character_limit(
            string optionsString,
            string newAnswerInput,
            string expectedErrorMessage
            )
        {
            // Given
            var initialViewModel = new AddAdminFieldViewModel(1, optionsString, newAnswerInput);
            var initialTempData  = new AddAdminFieldTempData
            {
                AdminFieldId = initialViewModel.AdminFieldId, OptionsString = initialViewModel.OptionsString
            };

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

            // When
            var result =
                controller.AddAdminField(1, initialViewModel, action);

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
                AssertModelStateErrorIsExpected(result, expectedErrorMessage);
            }
        }
Esempio n. 6
0
        public void AddAdminField_calls_service_and_redirects_to_error_on_failure()
        {
            // Given
            var          model           = new AddAdminFieldViewModel(1, "Test");
            const string action          = "save";
            var          initialTempData = new AddAdminFieldData(model);

            controller.TempData.Set(initialTempData);

            A.CallTo(
                () => courseAdminFieldsService.AddCustomPromptToCourse(
                    100,
                    1,
                    "Test"
                    )
                ).Returns(false);

            // When
            var result = controller.AddAdminField(100, model, action);

            // Then
            using (new AssertionScope())
            {
                result.Should().BeStatusCodeResult().WithStatusCode(500);
            }
        }
        public void AddAdminField_calls_service_and_redirects_to_error_on_failure()
        {
            // Given
            var          model           = new AddAdminFieldViewModel(1, "Test");
            const string action          = "save";
            var          initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = model.AdminFieldId, OptionsString = model.OptionsString
            };

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

            A.CallTo(
                () => courseAdminFieldsService.AddAdminFieldToCourse(
                    100,
                    1,
                    "Test"
                    )
                ).Returns(false);

            // When
            var result = controller.AddAdminField(100, model, action);

            // Then
            using (new AssertionScope())
            {
                result.Should().BeStatusCodeResult().WithStatusCode(500);
            }
        }
        public void AddAdminField_save_redirects_successfully_without_answers_configured()
        {
            // Given
            var          model           = new AddAdminFieldViewModel(1, null);
            const string action          = "save";
            var          initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = model.AdminFieldId, OptionsString = model.OptionsString
            };

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

            A.CallTo(
                () => courseAdminFieldsService.AddAdminFieldToCourse(
                    100,
                    1,
                    null
                    )
                ).Returns(true);

            // When
            var result = controller.AddAdminField(100, model, action);

            // Then
            result.Should().BeRedirectToActionResult().WithActionName("Index");
        }
        public void AddAdminFieldAnswersBulk_updates_temp_data_and_redirects_to_add()
        {
            // Given
            var inputViewModel      = new AddBulkAdminFieldAnswersViewModel("Test\r\nAnswer", 1);
            var initialAddViewModel = new AddAdminFieldViewModel(1, "Test");
            var expectedData        = new AddAdminFieldTempData {
                AdminFieldId = 1, OptionsString = "Test\r\nAnswer"
            };
            var initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = initialAddViewModel.AdminFieldId, OptionsString = initialAddViewModel.OptionsString
            };

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

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

            // Then
            using (new AssertionScope())
            {
                AssertAddAdminFieldMultiPageFormDataIsUpdatedCorrectly(expectedData);
                result.Should().BeRedirectToActionResult().WithActionName("AddAdminField");
            }
        }
        public void AddAdminField_adds_model_error_if_trimmed_case_insensitive_answer_is_already_in_options_list()
        {
            // Given
            var model           = new AddAdminFieldViewModel(1, "test", "  tEsT  ");
            var initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = model.AdminFieldId, OptionsString = model.OptionsString
            };

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

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

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
                AssertModelStateErrorIsExpected(result, "That response is already in the list of options");
            }
        }
 public static AddAdminFieldTempData ToAddAdminFieldTempData(this AddAdminFieldViewModel model)
 {
     return(new AddAdminFieldTempData
     {
         AdminFieldId = model.AdminFieldId,
         OptionsString = model.OptionsString,
         Answer = model.Answer,
         IncludeAnswersTableCaption = model.IncludeAnswersTableCaption,
     });
 }
Esempio n. 12
0
        public void AddAdminField_post_updates_temp_data_and_redirects()
        {
            var expectedPromptModel = new AddAdminFieldViewModel();
            var initialTempData     = new AddAdminFieldData(expectedPromptModel);

            controller.TempData.Set(initialTempData);

            // When
            var result = controller.AddAdminField(1);

            // Then
            AssertAddTempDataIsExpected(expectedPromptModel);
            result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
        }
Esempio n. 13
0
        public void AddAdminField_returns_error_with_unexpected_action()
        {
            // Given
            var          model           = new AddAdminFieldViewModel();
            const string action          = "deletetest";
            var          initialTempData = new AddAdminFieldData(model);

            controller.TempData.Set(initialTempData);

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

            // Then
            result.Should().BeStatusCodeResult().WithStatusCode(500);
        }
Esempio n. 14
0
        public void AddAdminField_removes_answer_without_admin_field_selected()
        {
            var          model           = new AddAdminFieldViewModel(null, "Test\r\nAnswer");
            const string action          = "delete0";
            var          initialTempData = new AddAdminFieldData(model);

            controller.TempData.Set(initialTempData);

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

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
                AssertNumberOfConfiguredAnswersOnView(result, 1);
            }
        }
Esempio n. 15
0
        public void AddAdminField_bulk_redirects_without_admin_field_selected()
        {
            // Given
            var          model           = new AddAdminFieldViewModel(null, "Options");
            const string action          = "bulk";
            var          initialTempData = new AddAdminFieldData(model);

            controller.TempData.Set(initialTempData);

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

            // Then
            using (new AssertionScope())
            {
                AssertAddTempDataIsExpected(model);
                result.Should().BeRedirectToActionResult().WithActionName("AddAdminFieldAnswersBulk");
            }
        }
Esempio n. 16
0
        public void AddAdminField_adds_answer_without_admin_field_selected()
        {
            var initialViewModel = new AddAdminFieldViewModel(null, null, "Answer");
            var initialTempData  = new AddAdminFieldData(initialViewModel);

            controller.TempData.Set(initialTempData);

            var          expectedViewModel = new AddAdminFieldViewModel(null, "Answer");
            const string action            = "addPrompt";

            // When
            controller.AddAdminField(1, initialViewModel, action);

            // Then
            using (new AssertionScope())
            {
                AssertAddTempDataIsExpected(expectedViewModel);
            }
        }
Esempio n. 17
0
        public void AddAdminFieldAnswersBulk_updates_temp_data_and_redirects_to_add()
        {
            // Given
            var inputViewModel      = new AddBulkAdminFieldAnswersViewModel("Test\r\nAnswer", 1);
            var initialAddViewModel = new AddAdminFieldViewModel(1, "Test");
            var expectedViewModel   = new AddAdminFieldViewModel(1, "Test\r\nAnswer");
            var initialTempData     = new AddAdminFieldData(initialAddViewModel);

            controller.TempData.Set(initialTempData);

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

            // Then
            using (new AssertionScope())
            {
                AssertAddTempDataIsExpected(expectedViewModel);
                result.Should().BeRedirectToActionResult().WithActionName("AddAdminField");
            }
        }
Esempio n. 18
0
        public void AddAdminField_add_configures_new_answer_and_updates_temp_data()
        {
            var initialViewModel = new AddAdminFieldViewModel(1, "Test", "Answer");
            var initialTempData  = new AddAdminFieldData(initialViewModel);

            controller.TempData.Set(initialTempData);

            var          expectedViewModel = new AddAdminFieldViewModel(1, "Test\r\nAnswer");
            const string action            = "addPrompt";

            // When
            var result =
                controller.AddAdminField(1, initialViewModel, action);

            // Then
            using (new AssertionScope())
            {
                AssertAddTempDataIsExpected(expectedViewModel);
                result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
                AssertNumberOfConfiguredAnswersOnView(result, 2);
            }
        }
        public void AddAdminField_add_configures_new_answer_and_updates_temp_data()
        {
            var initialViewModel = new AddAdminFieldViewModel(1, "Test", "Answer");
            var initialTempData  = new AddAdminFieldTempData
            {
                AdminFieldId  = initialViewModel.AdminFieldId,
                OptionsString = initialViewModel.OptionsString,
                Answer        = initialViewModel.Answer,
                IncludeAnswersTableCaption = initialViewModel.IncludeAnswersTableCaption,
            };

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

            var expectedData = new AddAdminFieldTempData
            {
                AdminFieldId  = 1,
                OptionsString = "Test\r\nAnswer",
                Answer        = null,
                IncludeAnswersTableCaption = initialViewModel.IncludeAnswersTableCaption,
            };
            const string action = "addPrompt";

            // When
            var result =
                controller.AddAdminField(1, initialViewModel, action);

            // Then
            using (new AssertionScope())
            {
                AssertAddAdminFieldMultiPageFormDataIsUpdatedCorrectly(expectedData);
                result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
                AssertNumberOfConfiguredAnswersOnView(result, 2);
            }
        }
Esempio n. 20
0
        public void AddAdminField_save_redirects_successfully_without_answers_configured()
        {
            // Given
            var          model           = new AddAdminFieldViewModel(1, null);
            const string action          = "save";
            var          initialTempData = new AddAdminFieldData(model);

            controller.TempData.Set(initialTempData);

            A.CallTo(
                () => courseAdminFieldsService.AddCustomPromptToCourse(
                    100,
                    1,
                    null
                    )
                ).Returns(true);

            // When
            var result = controller.AddAdminField(100, model, action);

            // Then
            result.Should().BeRedirectToActionResult().WithActionName("Index");
        }
        public void AddAdminField_returns_error_with_unexpected_action()
        {
            // Given
            var          model           = new AddAdminFieldViewModel();
            const string action          = "deletetest";
            var          initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = model.AdminFieldId, OptionsString = model.OptionsString
            };

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

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

            // Then
            result.Should().BeStatusCodeResult().WithStatusCode(500);
        }
        public void AddAdminField_save_redirects_to_index()
        {
            // Given
            var          model           = new AddAdminFieldViewModel(1, "Test");
            const string action          = "save";
            var          initialTempData = new AddAdminFieldTempData
            {
                AdminFieldId = model.AdminFieldId, OptionsString = model.OptionsString
            };

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

            A.CallTo(
                () => courseAdminFieldsService.AddAdminFieldToCourse(
                    100,
                    1,
                    "Test"
                    )
                ).Returns(true);

            // When
            var result = controller.AddAdminField(100, model, action);

            // Then
            A.CallTo(
                () => multiPageFormService.ClearMultiPageFormData(
                    MultiPageFormDataFeature.AddAdminField,
                    controller.TempData
                    )
                ).MustHaveHappenedOnceExactly();
            result.Should().BeRedirectToActionResult().WithActionName("Index");
        }
Esempio n. 23
0
        public void AddAdminField_adds_model_error_if_new_answer_surpasses_character_limit(
            string optionsString,
            string newAnswerInput,
            string expectedErrorMessage
            )
        {
            // Given
            var initialViewModel = new AddAdminFieldViewModel(1, optionsString, newAnswerInput);
            var initialTempData  = new AddAdminFieldData(initialViewModel);

            controller.TempData.Set(initialTempData);
            const string action = "addPrompt";

            // When
            var result =
                controller.AddAdminField(1, initialViewModel, action);

            // Then
            using (new AssertionScope())
            {
                result.As <ViewResult>().Model.Should().BeOfType <AddAdminFieldViewModel>();
                AssertModelStateErrorIsExpected(result, expectedErrorMessage);
            }
        }
Esempio n. 24
0
 private void AssertAddTempDataIsExpected(AddAdminFieldViewModel expectedData)
 {
     controller.TempData.Peek <AddAdminFieldData>() !.AddModel.Should()
     .BeEquivalentTo(expectedData);
 }
Esempio n. 25
0
 public AddAdminFieldData(AddAdminFieldViewModel model)
 {
     Id       = Guid.NewGuid();
     AddModel = model;
 }