diff --git a/DigitalLearningSolutions.Data.Tests/DataServices/UserDataServiceTests/AdminUserDataServiceTests.cs b/DigitalLearningSolutions.Data.Tests/DataServices/UserDataServiceTests/AdminUserDataServiceTests.cs index 77465adde9..c5f696605d 100644 --- a/DigitalLearningSolutions.Data.Tests/DataServices/UserDataServiceTests/AdminUserDataServiceTests.cs +++ b/DigitalLearningSolutions.Data.Tests/DataServices/UserDataServiceTests/AdminUserDataServiceTests.cs @@ -203,16 +203,15 @@ public void UpdateAdminUserFailedLoginCount_updates_user() public void DeactivateAdminUser_updates_user() { using var transaction = new TransactionScope(); - var adminUser = userDataService.GetAdminUserById(7)!; + var adminUser = UserTestHelper.GetDefaultAdminUser(); try { // When - userDataService.DeactivateAdmin(7); - var updatedAdminUser = userDataService.GetAdminUserById(7)!; + userDataService.DeactivateAdmin(adminUser.Id); + var updatedAdminUser = userDataService.GetAdminUserById(adminUser.Id)!; // Then - adminUser.Active.Should().Be(true); updatedAdminUser.Active.Should().Be(false); } finally diff --git a/DigitalLearningSolutions.Web.Tests/Controllers/TrackingSystem/Centre/Administrator/AdministratorControllerTests.cs b/DigitalLearningSolutions.Web.Tests/Controllers/TrackingSystem/Centre/Administrator/AdministratorControllerTests.cs index d9c885d2b0..31318cd2a1 100644 --- a/DigitalLearningSolutions.Web.Tests/Controllers/TrackingSystem/Centre/Administrator/AdministratorControllerTests.cs +++ b/DigitalLearningSolutions.Web.Tests/Controllers/TrackingSystem/Centre/Administrator/AdministratorControllerTests.cs @@ -11,6 +11,7 @@ using DigitalLearningSolutions.Web.Tests.ControllerHelpers; using DigitalLearningSolutions.Web.ViewModels.TrackingSystem.Centre.Administrator; using FakeItEasy; + using FizzWare.NBuilder; using FluentAssertions; using FluentAssertions.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; @@ -176,38 +177,37 @@ public void UnlockAccount_unlocks_account_and_returns_to_page() public void DeactivateAdminUser_does_not_deactivate_admin_user_without_confirmation() { // Given - var adminUser = UserTestHelper.GetDefaultAdminUser(active: true); + var adminUserId = UserTestHelper.GetDefaultAdminUser().Id; const string expectedErrorMessage = "You must confirm before deactivating this account"; - A.CallTo(() => userDataService.GetAdminUserById(1)).Returns(UserTestHelper.GetDefaultAdminUser()); - var deactivateViewModel = new DeactivateAdminViewModel(adminUser) { Confirm = false }; + var deactivateViewModel = + Builder.CreateNew().With(vm => vm.Confirm = false).Build(); administratorController.ModelState.AddModelError(nameof(DeactivateAdminViewModel.Confirm), expectedErrorMessage); - // When - var result = administratorController.DeactivateAdmin(1, deactivateViewModel); + var result = administratorController.DeactivateAdmin(adminUserId, deactivateViewModel); // Then result.Should().BeViewResult().WithDefaultViewName().ModelAs(); administratorController.ModelState[nameof(DeactivateAdminViewModel.Confirm)].Errors[0].ErrorMessage.Should() .BeEquivalentTo(expectedErrorMessage); - A.CallTo(() => userDataService.DeactivateAdmin(1)).MustNotHaveHappened(); + A.CallTo(() => userDataService.DeactivateAdmin(adminUserId)).MustNotHaveHappened(); } [Test] public void DeactivateAdminUser_deactivates_admin_user_with_confirmation() { // Given - var adminUser = UserTestHelper.GetDefaultAdminUser(active: true); - A.CallTo(() => userDataService.GetAdminUserById(1)).Returns(UserTestHelper.GetDefaultAdminUser()); - var deactivateViewModel = new DeactivateAdminViewModel(adminUser) { Confirm = true }; + var adminUserId = UserTestHelper.GetDefaultAdminUser().Id; + A.CallTo(() => userDataService.DeactivateAdmin(adminUserId)).DoesNothing(); + var deactivateViewModel = + Builder.CreateNew().With(vm => vm.Confirm = true).Build(); // When - var result = administratorController.DeactivateAdmin(1, deactivateViewModel); + var result = administratorController.DeactivateAdmin(adminUserId, deactivateViewModel); // Then - A.CallTo(() => userDataService.GetAdminUserById(1)).MustHaveHappened(); - A.CallTo(() => userDataService.DeactivateAdmin(1)).MustHaveHappened(); + A.CallTo(() => userDataService.DeactivateAdmin(adminUserId)).MustHaveHappened(); result.Should().BeViewResult().WithViewName("DeactivateAdminConfirmation"); } } diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Centre/Administrator/AdministratorController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Centre/Administrator/AdministratorController.cs index 6f608e1e66..5cffec9476 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Centre/Administrator/AdministratorController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Centre/Administrator/AdministratorController.cs @@ -151,7 +151,6 @@ public IActionResult DeactivateAdmin(int adminId, DeactivateAdminViewModel model return View(model); } - var adminUser = userDataService.GetAdminUserById(adminId); userDataService.DeactivateAdmin(adminId); return View("DeactivateAdminConfirmation"); diff --git a/DigitalLearningSolutions.Web/ViewComponents/ConfirmCheckboxViewComponent.cs b/DigitalLearningSolutions.Web/ViewComponents/ConfirmCheckboxViewComponent.cs deleted file mode 100644 index 841b949b4f..0000000000 --- a/DigitalLearningSolutions.Web/ViewComponents/ConfirmCheckboxViewComponent.cs +++ /dev/null @@ -1,46 +0,0 @@ -namespace DigitalLearningSolutions.Web.ViewComponents -{ - using System.Linq; - using DigitalLearningSolutions.Web.ViewModels.Common.ViewComponents; - using Microsoft.AspNetCore.Mvc; - - public class ConfirmCheckboxViewComponent : ViewComponent - { - /// - /// Render ConfirmCheckboxViewComponent component. - /// - /// - /// - /// Leave blank for no hint. - /// Initial current value - /// - public IViewComponentResult Invoke( - string aspFor, - string label, - string? hintText, - bool populateWithCurrentValues - ) - { - var model = ViewData.Model; - var property = model.GetType().GetProperty(aspFor); - var hasError = ViewData.ModelState[property?.Name]?.Errors?.Count > 0; - var errorMessages = hasError - ? ViewData.ModelState[property?.Name]?.Errors.Select(e => e.ErrorMessage) - : new string[] { }; - - var value = (bool)property?.GetValue(model)!; - - var checkboxViewModel = new ConfirmCheckboxViewModel( - aspFor, - aspFor, - label, - value, - hintText, - errorMessages, - hasError - ); - - return View(checkboxViewModel); - } - } -} diff --git a/DigitalLearningSolutions.Web/ViewModels/Common/ViewComponents/ConfirmCheckboxViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/Common/ViewComponents/ConfirmCheckboxViewModel.cs deleted file mode 100644 index 8d9e88aaf2..0000000000 --- a/DigitalLearningSolutions.Web/ViewModels/Common/ViewComponents/ConfirmCheckboxViewModel.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace DigitalLearningSolutions.Web.ViewModels.Common.ViewComponents -{ - using System.Collections.Generic; - - public class ConfirmCheckboxViewModel - { - public ConfirmCheckboxViewModel( - string id, - string name, - string label, - bool value, - string? hintText, - IEnumerable? errorMessages, - bool hasError - ) - { - Id = id; - Name = name; - Label = label; - Value = value; - HintText = hintText; - ErrorMessages = errorMessages; - HasError = hasError; - } - - public string Id { get; set; } - public string Name { get; set; } - public string Label { get; set; } - public bool Value { get; set; } - public string? HintText { get; set; } - public IEnumerable? ErrorMessages { get; set; } - public bool HasError { get; set; } - } -} diff --git a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Centre/Administrator/DeactivateAdminViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Centre/Administrator/DeactivateAdminViewModel.cs index e8cfa0acc8..0e159ae92f 100644 --- a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Centre/Administrator/DeactivateAdminViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Centre/Administrator/DeactivateAdminViewModel.cs @@ -9,14 +9,12 @@ public DeactivateAdminViewModel() { } public DeactivateAdminViewModel(AdminUser user) { - UserId = user.Id; FullName = user.FullName; EmailAddress = user.EmailAddress; } - public string? FullName { get; set; } + public string FullName { get; set; } public string? EmailAddress { get; set; } - public int UserId { get; } [BooleanMustBeTrue(ErrorMessage = "You must confirm before deactivating this account")] public bool Confirm { get; set; } diff --git a/DigitalLearningSolutions.Web/Views/Shared/Components/ConfirmCheckbox/Default.cshtml b/DigitalLearningSolutions.Web/Views/Shared/Components/ConfirmCheckbox/Default.cshtml deleted file mode 100644 index 7d6fe901ff..0000000000 --- a/DigitalLearningSolutions.Web/Views/Shared/Components/ConfirmCheckbox/Default.cshtml +++ /dev/null @@ -1,50 +0,0 @@ -@using DigitalLearningSolutions.Web.Extensions -@using DigitalLearningSolutions.Web.ViewModels.Common.ViewComponents -@model ConfirmCheckboxViewModel - -
- -
- - @if (Model.HintText != null) - { -
- @Model.HintText -
- } - - @if (Model.HasError) - { -
- @foreach (var errorMessage in Model.ErrorMessages!) - { - - Error: @errorMessage - - } -
- } - -
-
- - - @if (Model.HintText != null) - { -
- @Model.HintText -
- } -
-
-
- -
diff --git a/DigitalLearningSolutions.Web/Views/TrackingSystem/Centre/Administrator/DeactivateAdmin.cshtml b/DigitalLearningSolutions.Web/Views/TrackingSystem/Centre/Administrator/DeactivateAdmin.cshtml index cc575df59d..798fb887ae 100644 --- a/DigitalLearningSolutions.Web/Views/TrackingSystem/Centre/Administrator/DeactivateAdmin.cshtml +++ b/DigitalLearningSolutions.Web/Views/TrackingSystem/Centre/Administrator/DeactivateAdmin.cshtml @@ -2,16 +2,20 @@ @model DeactivateAdminViewModel @{ - ViewData["Title"] = !ViewData.ModelState.IsValid ? "Error: " : "" + "Deactivate Admin Account"; + var errorHasOccurred = !ViewData.ModelState.IsValid; + ViewData["Title"] = errorHasOccurred ? "Error: " : "" + "Deactivate Admin Account"; }
+ @if (errorHasOccurred) { + + }

Are you sure you would like to deactivate this admin account?

-
+
User @@ -27,10 +31,9 @@
- +