From 3e5f09dd635ac464ff50a583971e6c84cd7f9a55 Mon Sep 17 00:00:00 2001 From: Alex Jackson Date: Fri, 25 Feb 2022 13:27:21 +0000 Subject: [PATCH 1/2] HEEDLS-790 Change name format to lastname, firstname on sorted list pages --- .../AllDelegatesSearchTests.cs | 2 +- .../Models/DelegateGroups/GroupDelegate.cs | 10 ++++++++-- DigitalLearningSolutions.Data/Models/User/User.cs | 4 +++- .../CentreAdministratorsViewModelTests.cs | 6 +++--- .../Delegates/GroupDelegatesController.cs | 2 +- .../Delegates/SetDelegatePasswordController.cs | 4 ++-- .../TrackingSystem/Delegates/ViewDelegateController.cs | 7 +++++-- .../ViewModels/Common/AdminRolesFormData.cs | 3 ++- .../Centre/Administrator/DeactivateAdminViewModel.cs | 3 ++- .../EmailDelegates/EmailDelegatesItemViewModel.cs | 5 +++-- .../GroupDelegates/ConfirmDelegateAddedViewModel.cs | 10 ++++++++-- .../Delegates/GroupDelegates/GroupDelegateViewModel.cs | 3 +++ .../GroupDelegates/GroupDelegatesViewModel.cs | 7 ++++++- .../Delegates/Shared/DelegateInfoViewModel.cs | 8 ++++++-- .../ViewDelegate/WelcomeEmailSentViewModel.cs | 3 ++- .../AllDelegates/_SearchableDelegateCard.cshtml | 2 +- .../Delegates/GroupDelegates/SelectDelegate.cshtml | 2 +- .../GroupDelegates/_AddGroupDelegateCard.cshtml | 2 +- .../Delegates/GroupDelegates/_GroupDelegateCard.cshtml | 2 +- 19 files changed, 59 insertions(+), 26 deletions(-) diff --git a/DigitalLearningSolutions.Data.Tests/Helpers/GenericSearchHelperTests/AllDelegatesSearchTests.cs b/DigitalLearningSolutions.Data.Tests/Helpers/GenericSearchHelperTests/AllDelegatesSearchTests.cs index d34e270387..688fc5fd9a 100644 --- a/DigitalLearningSolutions.Data.Tests/Helpers/GenericSearchHelperTests/AllDelegatesSearchTests.cs +++ b/DigitalLearningSolutions.Data.Tests/Helpers/GenericSearchHelperTests/AllDelegatesSearchTests.cs @@ -58,7 +58,7 @@ public void SetUp() [TestCase("Mark", new[] { 10, 200 })] [TestCase("MJ1", new[] { 10 })] [TestCase("J1", new[] { 10, 12 })] - [TestCase("Harper H14", new[] { 14, 144 })] + [TestCase("Harper", new[] { 14, 144 })] [TestCase("lo", new[] { 200, 202 })] public void DelegateUsers_should_be_filtered_on_name_and_candidateNumber_correctly( string searchString, diff --git a/DigitalLearningSolutions.Data/Models/DelegateGroups/GroupDelegate.cs b/DigitalLearningSolutions.Data/Models/DelegateGroups/GroupDelegate.cs index c6d96b2650..68f9ebb167 100644 --- a/DigitalLearningSolutions.Data/Models/DelegateGroups/GroupDelegate.cs +++ b/DigitalLearningSolutions.Data/Models/DelegateGroups/GroupDelegate.cs @@ -1,6 +1,8 @@ namespace DigitalLearningSolutions.Data.Models.DelegateGroups { - public class GroupDelegate + using DigitalLearningSolutions.Data.Helpers; + + public class GroupDelegate : BaseSearchableItem { public int GroupDelegateId { get; set; } @@ -16,6 +18,10 @@ public class GroupDelegate public string CandidateNumber { get; set; } - public string Name => $"{FirstName} {LastName}"; + public override string SearchableName + { + get => SearchableNameOverrideForFuzzySharp ?? NameQueryHelper.GetSortableFullName(FirstName, LastName); + set => SearchableNameOverrideForFuzzySharp = value; + } } } diff --git a/DigitalLearningSolutions.Data/Models/User/User.cs b/DigitalLearningSolutions.Data/Models/User/User.cs index 1dd89eaec7..89d32e2ec5 100644 --- a/DigitalLearningSolutions.Data/Models/User/User.cs +++ b/DigitalLearningSolutions.Data/Models/User/User.cs @@ -1,5 +1,7 @@ namespace DigitalLearningSolutions.Data.Models.User { + using DigitalLearningSolutions.Data.Helpers; + public abstract class User : BaseSearchableItem { public int Id { get; set; } @@ -28,7 +30,7 @@ public abstract class User : BaseSearchableItem public override string SearchableName { - get => SearchableNameOverrideForFuzzySharp ?? $"{FirstName} {LastName}"; + get => SearchableNameOverrideForFuzzySharp ?? NameQueryHelper.GetSortableFullName(FirstName, LastName); set => SearchableNameOverrideForFuzzySharp = value; } diff --git a/DigitalLearningSolutions.Web.Tests/ViewModels/TrackingSystem/Centre/Administrator/CentreAdministratorsViewModelTests.cs b/DigitalLearningSolutions.Web.Tests/ViewModels/TrackingSystem/Centre/Administrator/CentreAdministratorsViewModelTests.cs index 71271d0514..0fec287d4a 100644 --- a/DigitalLearningSolutions.Web.Tests/ViewModels/TrackingSystem/Centre/Administrator/CentreAdministratorsViewModelTests.cs +++ b/DigitalLearningSolutions.Web.Tests/ViewModels/TrackingSystem/Centre/Administrator/CentreAdministratorsViewModelTests.cs @@ -51,7 +51,7 @@ public void Centre_administrators_should_default_to_returning_the_first_ten_admi using (new AssertionScope()) { model.Admins.Count().Should().Be(10); - model.Admins.FirstOrDefault(adminUser => adminUser.Name == "k Surname").Should().BeNull(); + model.Admins.FirstOrDefault(adminUser => adminUser.Name == "Surname, k").Should().BeNull(); } } @@ -74,7 +74,7 @@ public void Centre_administrators_should_correctly_return_the_second_page_of_adm using (new AssertionScope()) { model.Admins.Count().Should().Be(5); - model.Admins.First().Name.Should().BeEquivalentTo("k Surname"); + model.Admins.First().Name.Should().BeEquivalentTo("Surname, k"); } } @@ -141,7 +141,7 @@ public void Centre_administrators_with_custom_items_per_page_should_return_the_s using (new AssertionScope()) { model.Admins.Count().Should().Be(itemsPerPage); - model.Admins.FirstOrDefault(adminUser => adminUser.Name == "m Surname").Should().BeNull(); + model.Admins.FirstOrDefault(adminUser => adminUser.Name == "Surname, m").Should().BeNull(); } } } diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/GroupDelegatesController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/GroupDelegatesController.cs index cb0a2ec421..9fa06f9657 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/GroupDelegatesController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/GroupDelegatesController.cs @@ -115,7 +115,7 @@ public IActionResult ConfirmDelegateAdded(int groupId, int delegateId) var centreId = User.GetCentreId(); var groupName = groupsService.GetGroupName(groupId, centreId); - var model = new ConfirmDelegateAddedViewModel(delegateUser!.FullName, groupName!, groupId); + var model = new ConfirmDelegateAddedViewModel(delegateUser!, groupName!, groupId); return View(model); } diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/SetDelegatePasswordController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/SetDelegatePasswordController.cs index 2e2b4cb6f3..03c943fcca 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/SetDelegatePasswordController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/SetDelegatePasswordController.cs @@ -6,8 +6,8 @@ using DigitalLearningSolutions.Data.Services; using DigitalLearningSolutions.Web.Attributes; using DigitalLearningSolutions.Web.Helpers; - using DigitalLearningSolutions.Web.ServiceFilter; using DigitalLearningSolutions.Web.Models.Enums; + using DigitalLearningSolutions.Web.ServiceFilter; using DigitalLearningSolutions.Web.ViewModels.TrackingSystem.Delegates.SetDelegatePassword; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -41,7 +41,7 @@ public IActionResult Index(int delegateId, bool isFromViewDelegatePage, int? ret } var model = new SetDelegatePasswordViewModel( - delegateUser.FullName, + DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(delegateUser.FirstName, delegateUser.LastName), delegateId, returnPage, isFromViewDelegatePage diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ViewDelegateController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ViewDelegateController.cs index 0f9b9c3585..a6e79defa2 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ViewDelegateController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ViewDelegateController.cs @@ -62,7 +62,7 @@ public IActionResult SendWelcomeEmail(int delegateId) { var delegateUser = userDataService.GetDelegateUserCardById(delegateId)!; - string baseUrl = ConfigHelper.GetAppConfig().GetAppRootPath(); + var baseUrl = ConfigHelper.GetAppConfig().GetAppRootPath(); passwordResetService.GenerateAndSendDelegateWelcomeEmail( delegateUser.EmailAddress!, @@ -102,7 +102,10 @@ public IActionResult ConfirmRemoveFromCourse(int delegateId, int customisationId DelegateId = delegateUser!.Id, CustomisationId = customisationId, CourseName = course!.CourseName, - Name = delegateUser.FullName, + Name = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly( + delegateUser.FirstName, + delegateUser.LastName + ), Confirm = false, }; return View("ConfirmRemoveFromCourse", model); diff --git a/DigitalLearningSolutions.Web/ViewModels/Common/AdminRolesFormData.cs b/DigitalLearningSolutions.Web/ViewModels/Common/AdminRolesFormData.cs index 95931e3062..8d99b74400 100644 --- a/DigitalLearningSolutions.Web/ViewModels/Common/AdminRolesFormData.cs +++ b/DigitalLearningSolutions.Web/ViewModels/Common/AdminRolesFormData.cs @@ -2,6 +2,7 @@ { using DigitalLearningSolutions.Data.Models; using DigitalLearningSolutions.Data.Models.User; + using DigitalLearningSolutions.Web.Helpers; using DigitalLearningSolutions.Web.Models.Enums; public class AdminRolesFormData @@ -10,7 +11,7 @@ public AdminRolesFormData() { } public AdminRolesFormData(User user) { - FullName = user.FullName; + FullName = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(user.FirstName, user.LastName); } public string? FullName { get; set; } diff --git a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Centre/Administrator/DeactivateAdminViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Centre/Administrator/DeactivateAdminViewModel.cs index d8aca5ab26..cd0a71f561 100644 --- a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Centre/Administrator/DeactivateAdminViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Centre/Administrator/DeactivateAdminViewModel.cs @@ -2,6 +2,7 @@ { using DigitalLearningSolutions.Data.Models.User; using DigitalLearningSolutions.Web.Attributes; + using DigitalLearningSolutions.Web.Helpers; public class DeactivateAdminViewModel { @@ -9,7 +10,7 @@ public DeactivateAdminViewModel() { } public DeactivateAdminViewModel(AdminUser user, int? returnPage) { - FullName = user.FullName; + FullName = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(user.FirstName, user.LastName); EmailAddress = user.EmailAddress; ReturnPage = returnPage; } diff --git a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/EmailDelegates/EmailDelegatesItemViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/EmailDelegates/EmailDelegatesItemViewModel.cs index c7c0daf417..d76c8a2187 100644 --- a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/EmailDelegates/EmailDelegatesItemViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/EmailDelegates/EmailDelegatesItemViewModel.cs @@ -4,6 +4,7 @@ using DigitalLearningSolutions.Data.Helpers; using DigitalLearningSolutions.Data.Models.CustomPrompts; using DigitalLearningSolutions.Data.Models.User; + using DigitalLearningSolutions.Web.Helpers; using DigitalLearningSolutions.Web.ViewModels.Common; using DigitalLearningSolutions.Web.ViewModels.TrackingSystem.Delegates.Shared; using DateHelper = DigitalLearningSolutions.Web.Helpers.DateHelper; @@ -16,7 +17,7 @@ bool isDelegateSelected ) { Id = delegateUser.Id; - Name = delegateUser.SearchableName; + Name = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(delegateUser.FirstName, delegateUser.LastName); Email = delegateUser.EmailAddress; if (delegateUser.DateRegistered.HasValue) { @@ -35,7 +36,7 @@ IEnumerable promptsWithOptions ) { Id = delegateUser.Id; - Name = delegateUser.SearchableName; + Name = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(delegateUser.FirstName, delegateUser.LastName); Email = delegateUser.EmailAddress; if (delegateUser.DateRegistered.HasValue) { diff --git a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/ConfirmDelegateAddedViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/ConfirmDelegateAddedViewModel.cs index d8ddbf5b78..0ff08e499c 100644 --- a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/ConfirmDelegateAddedViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/ConfirmDelegateAddedViewModel.cs @@ -1,12 +1,18 @@ namespace DigitalLearningSolutions.Web.ViewModels.TrackingSystem.Delegates.GroupDelegates { + using DigitalLearningSolutions.Data.Models.User; + using DigitalLearningSolutions.Web.Helpers; + public class ConfirmDelegateAddedViewModel { public ConfirmDelegateAddedViewModel() { } - public ConfirmDelegateAddedViewModel(string delegateName, string groupName, int groupId) + public ConfirmDelegateAddedViewModel(DelegateUser delegateUser, string groupName, int groupId) { - DelegateName = delegateName; + DelegateName = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly( + delegateUser.FirstName, + delegateUser.LastName + ); GroupName = groupName; GroupId = groupId; } diff --git a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegateViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegateViewModel.cs index 308838ff18..6e9f34e0c4 100644 --- a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegateViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegateViewModel.cs @@ -10,6 +10,7 @@ public GroupDelegateViewModel(GroupDelegate groupDelegate) GroupDelegateId = groupDelegate.GroupDelegateId; GroupId = groupDelegate.GroupId; DelegateId = groupDelegate.DelegateId; + TitleName = groupDelegate.SearchableName; Name = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(groupDelegate.FirstName, groupDelegate.LastName); EmailAddress = groupDelegate.EmailAddress; CandidateNumber = groupDelegate.CandidateNumber; @@ -21,6 +22,8 @@ public GroupDelegateViewModel(GroupDelegate groupDelegate) public int DelegateId { get; set; } + public string TitleName { get; set; } + public string Name { get; set; } public string? EmailAddress { get; set; } diff --git a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegatesViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegatesViewModel.cs index 7d1c2fc04e..54d7883023 100644 --- a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegatesViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegatesViewModel.cs @@ -2,6 +2,7 @@ { using System.Collections.Generic; using System.Linq; + using DigitalLearningSolutions.Data.Helpers; using DigitalLearningSolutions.Data.Models.DelegateGroups; using DigitalLearningSolutions.Web.Models.Enums; using DigitalLearningSolutions.Web.ViewModels.Common.SearchablePage; @@ -19,7 +20,11 @@ int page GroupId = groupId; NavViewModel = new DelegateGroupsSideNavViewModel(groupId, groupName, DelegateGroupPage.Delegates); - var sortedItems = groupDelegates.OrderBy(gd => gd.Name).ToList(); + var sortedItems = GenericSortingHelper.SortAllItems( + groupDelegates.AsQueryable(), + nameof(GroupDelegate.SearchableName), + GenericSortingHelper.Ascending + ).ToList(); MatchingSearchResults = sortedItems.Count; SetTotalPages(); diff --git a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/Shared/DelegateInfoViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/Shared/DelegateInfoViewModel.cs index 3a78c2cb43..c0eac8163a 100644 --- a/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/Shared/DelegateInfoViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/Shared/DelegateInfoViewModel.cs @@ -1,7 +1,6 @@ namespace DigitalLearningSolutions.Web.ViewModels.TrackingSystem.Delegates.Shared { using System.Collections.Generic; - using System.Linq; using DigitalLearningSolutions.Data.Enums; using DigitalLearningSolutions.Data.Models.User; using DigitalLearningSolutions.Web.Helpers; @@ -12,7 +11,11 @@ public class DelegateInfoViewModel public DelegateInfoViewModel(DelegateUserCard delegateUser, IEnumerable customFields) { Id = delegateUser.Id; - Name = delegateUser.SearchableName; + TitleName = delegateUser.SearchableName; + Name = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly( + delegateUser.FirstName, + delegateUser.LastName + ); CandidateNumber = delegateUser.CandidateNumber; IsActive = delegateUser.Active; @@ -34,6 +37,7 @@ public DelegateInfoViewModel(DelegateUserCard delegateUser, IEnumerable - @Model.DelegateInfo.Name (@Model.DelegateInfo.CandidateNumber) + @Model.DelegateInfo.TitleName (@Model.DelegateInfo.CandidateNumber) diff --git a/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/SelectDelegate.cshtml b/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/SelectDelegate.cshtml index ee1d051f65..b1000997cd 100644 --- a/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/SelectDelegate.cshtml +++ b/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/SelectDelegate.cshtml @@ -17,7 +17,7 @@
-

@ViewData["Title"]

+

@ViewData["Title"]

diff --git a/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/_AddGroupDelegateCard.cshtml b/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/_AddGroupDelegateCard.cshtml index d3b89021ac..c801174d30 100644 --- a/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/_AddGroupDelegateCard.cshtml +++ b/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/_AddGroupDelegateCard.cshtml @@ -10,7 +10,7 @@
- @Model.DelegateInfo.Name@emailString + @Model.DelegateInfo.TitleName@emailString diff --git a/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/_GroupDelegateCard.cshtml b/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/_GroupDelegateCard.cshtml index c2cad6641a..29ae4ca625 100644 --- a/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/_GroupDelegateCard.cshtml +++ b/DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/GroupDelegates/_GroupDelegateCard.cshtml @@ -5,7 +5,7 @@
- @Model.Name + @Model.TitleName
From f791d6a89887218be66847f0e6058ec30dcc012e Mon Sep 17 00:00:00 2001 From: Alex Jackson Date: Fri, 25 Feb 2022 13:47:10 +0000 Subject: [PATCH 2/2] HEEDLS-790 Remove inconsistent NBuilder behaviour from tests --- .../GroupDelegatesViewModelTests.cs | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/DigitalLearningSolutions.Web.Tests/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegatesViewModelTests.cs b/DigitalLearningSolutions.Web.Tests/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegatesViewModelTests.cs index 719e7495e3..cb49ba239a 100644 --- a/DigitalLearningSolutions.Web.Tests/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegatesViewModelTests.cs +++ b/DigitalLearningSolutions.Web.Tests/ViewModels/TrackingSystem/Delegates/GroupDelegates/GroupDelegatesViewModelTests.cs @@ -2,11 +2,9 @@ { using System.Linq; using DigitalLearningSolutions.Data.Models.DelegateGroups; - using DigitalLearningSolutions.Data.Tests.NBuilderHelpers; using DigitalLearningSolutions.Web.Models.Enums; using DigitalLearningSolutions.Web.ViewModels.TrackingSystem.Delegates.GroupDelegates; using DigitalLearningSolutions.Web.ViewModels.TrackingSystem.Delegates.Shared; - using FizzWare.NBuilder; using FluentAssertions; using FluentAssertions.Execution; using NUnit.Framework; @@ -16,17 +14,24 @@ public class GroupDelegatesViewModelTests private readonly DelegateGroupsSideNavViewModel expectedNavViewModel = new DelegateGroupsSideNavViewModel(1, "Group name", DelegateGroupPage.Delegates); - private GroupDelegate[] groupDelegates = null!; - - [SetUp] - public void SetUp() + private readonly GroupDelegate[] groupDelegates = { - groupDelegates = Builder.CreateListOfSize(15) - .All() - .With(g => g.LastName = "Surname") - .With((g, i) => g.FirstName = NBuilderAlphabeticalPropertyNamingHelper.IndexToAlphabeticalString(i)) - .Build().ToArray(); - } + new GroupDelegate { FirstName = "A", LastName = "Surname" }, + new GroupDelegate { FirstName = "B", LastName = "Surname" }, + new GroupDelegate { FirstName = "C", LastName = "Surname" }, + new GroupDelegate { FirstName = "D", LastName = "Surname" }, + new GroupDelegate { FirstName = "E", LastName = "Surname" }, + new GroupDelegate { FirstName = "F", LastName = "Surname" }, + new GroupDelegate { FirstName = "G", LastName = "Surname" }, + new GroupDelegate { FirstName = "H", LastName = "Surname" }, + new GroupDelegate { FirstName = "I", LastName = "Surname" }, + new GroupDelegate { FirstName = "J", LastName = "Surname" }, + new GroupDelegate { FirstName = "K", LastName = "Surname" }, + new GroupDelegate { FirstName = "L", LastName = "Surname" }, + new GroupDelegate { FirstName = "M", LastName = "Surname" }, + new GroupDelegate { FirstName = "N", LastName = "Surname" }, + new GroupDelegate { FirstName = "O", LastName = "Surname" }, + }; [Test] public void GroupDelegatesViewModel_should_return_the_first_page_worth_of_delegates()