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); } }
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, }); }
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>(); }
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); }
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); } }
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"); } }
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); } }
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"); } }
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); } }
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"); }
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); } }
private void AssertAddTempDataIsExpected(AddAdminFieldViewModel expectedData) { controller.TempData.Peek <AddAdminFieldData>() !.AddModel.Should() .BeEquivalentTo(expectedData); }
public AddAdminFieldData(AddAdminFieldViewModel model) { Id = Guid.NewGuid(); AddModel = model; }