Skip to content

Commit 6f2f49a

Browse files
committed
TD-3907 RegisterInternalAdminController - refactor
1 parent 5d4c8ee commit 6f2f49a

File tree

3 files changed

+39
-31
lines changed

3 files changed

+39
-31
lines changed

DigitalLearningSolutions.Web.Tests/Controllers/Register/RegisterInternalAdminControllerTests.cs

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
using System.Collections.Generic;
55
using System.Data;
66
using System.Threading.Tasks;
7-
using DigitalLearningSolutions.Data.DataServices;
8-
using DigitalLearningSolutions.Data.DataServices.UserDataService;
97
using DigitalLearningSolutions.Data.Models.Register;
10-
using DigitalLearningSolutions.Data.Models.User;
8+
using DigitalLearningSolutions.Data.Models.User;
119
using DigitalLearningSolutions.Web.Controllers.Register;
1210
using DigitalLearningSolutions.Web.Services;
1311
using DigitalLearningSolutions.Web.Tests.ControllerHelpers;
@@ -31,7 +29,6 @@ public class RegisterInternalAdminControllerTests
3129
private const string DefaultCentreSpecificEmail = "[email protected]";
3230
private const int DefaultUserId = 2;
3331
private const int DefaultDelegateId = 5;
34-
private ICentresDataService centresDataService = null!;
3532
private ICentresService centresService = null!;
3633
private IConfiguration config = null!;
3734
private RegisterInternalAdminController controller = null!;
@@ -41,15 +38,12 @@ public class RegisterInternalAdminControllerTests
4138
private IRegisterAdminService registerAdminService = null!;
4239
private IRegistrationService registrationService = null!;
4340
private HttpRequest request = null!;
44-
private IUserDataService userDataService = null!;
4541
private IUserService userService = null!;
4642

4743
[SetUp]
4844
public void Setup()
4945
{
50-
centresDataService = A.Fake<ICentresDataService>();
5146
centresService = A.Fake<ICentresService>();
52-
userDataService = A.Fake<IUserDataService>();
5347
userService = A.Fake<IUserService>();
5448
registrationService = A.Fake<IRegistrationService>();
5549
delegateApprovalsService = A.Fake<IDelegateApprovalsService>();
@@ -59,9 +53,7 @@ public void Setup()
5953
config = A.Fake<IConfiguration>();
6054
request = A.Fake<HttpRequest>();
6155
controller = new RegisterInternalAdminController(
62-
centresDataService,
6356
centresService,
64-
userDataService,
6557
userService,
6658
registrationService,
6759
delegateApprovalsService,
@@ -91,13 +83,13 @@ public void IndexGet_with_no_centreId_param_shows_notfound_error()
9183
public void IndexGet_with_invalid_centreId_param_shows_notfound_error()
9284
{
9385
// Given
94-
A.CallTo(() => centresDataService.GetCentreName(DefaultCentreId)).Returns(null);
86+
A.CallTo(() => centresService.GetCentreName(DefaultCentreId)).Returns(null);
9587

9688
// When
9789
var result = controller.Index(DefaultCentreId);
9890

9991
// Then
100-
A.CallTo(() => centresDataService.GetCentreName(DefaultCentreId)).MustHaveHappenedOnceExactly();
92+
A.CallTo(() => centresService.GetCentreName(DefaultCentreId)).MustHaveHappenedOnceExactly();
10193

10294
result.Should().BeNotFoundResult();
10395
}
@@ -106,7 +98,7 @@ public void IndexGet_with_invalid_centreId_param_shows_notfound_error()
10698
public void IndexGet_with_not_allowed_admin_registration_returns_access_denied()
10799
{
108100
// Given
109-
A.CallTo(() => centresDataService.GetCentreName(DefaultCentreId)).Returns("Some centre");
101+
A.CallTo(() => centresService.GetCentreName(DefaultCentreId)).Returns("Some centre");
110102
A.CallTo(() => registerAdminService.IsRegisterAdminAllowed(DefaultCentreId, DefaultUserId)).Returns(false);
111103

112104
// When
@@ -124,7 +116,7 @@ public void IndexGet_with_not_allowed_admin_registration_returns_access_denied()
124116
public void IndexGet_with_allowed_admin_registration_returns_view_model()
125117
{
126118
// Given
127-
A.CallTo(() => centresDataService.GetCentreName(DefaultCentreId)).Returns("Some centre");
119+
A.CallTo(() => centresService.GetCentreName(DefaultCentreId)).Returns("Some centre");
128120
A.CallTo(() => registerAdminService.IsRegisterAdminAllowed(DefaultCentreId, DefaultUserId)).Returns(true);
129121

130122
// When
@@ -206,7 +198,7 @@ bool isDelegateApproved
206198
centreSpecificEmail
207199
)
208200
).MustHaveHappenedOnceExactly();
209-
A.CallTo(() => userDataService.GetDelegateAccountsByUserId(DefaultUserId)).MustHaveHappenedOnceExactly();
201+
A.CallTo(() => userService.GetDelegateAccountsByUserId(DefaultUserId)).MustHaveHappenedOnceExactly();
210202

211203
if (hasDelegateAccount)
212204
{
@@ -243,7 +235,7 @@ bool isDelegateApproved
243235
).MustHaveHappenedOnceExactly();
244236
A.CallTo(() => delegateApprovalsService.ApproveDelegate(A<int>._, A<int>._)).MustNotHaveHappened();
245237
A.CallTo(
246-
() => userDataService.SetCentreEmail(
238+
() => userService.SetCentreEmail(
247239
A<int>._,
248240
A<int>._,
249241
A<string?>._,
@@ -353,9 +345,9 @@ bool isDelegateApproved
353345
if (centreSpecificEmail != null)
354346
{
355347
A.CallTo(
356-
() => userDataService.CentreSpecificEmailIsInUseAtCentre(centreSpecificEmail, DefaultCentreId)
348+
() => userService.CentreSpecificEmailIsInUseAtCentre(centreSpecificEmail, DefaultCentreId)
357349
).Returns(false);
358-
A.CallTo(() => userDataService.GetCentreEmail(DefaultUserId, DefaultCentreId)).Returns(null);
350+
A.CallTo(() => userService.GetCentreEmail(DefaultUserId, DefaultCentreId)).Returns(null);
359351
}
360352

361353
A.CallTo(() => registerAdminService.IsRegisterAdminAllowed(DefaultCentreId, DefaultUserId)).Returns(true);
@@ -383,7 +375,7 @@ bool isDelegateApproved
383375
centreId: DefaultCentreId,
384376
approved: isDelegateApproved
385377
);
386-
A.CallTo(() => userDataService.GetDelegateAccountsByUserId(DefaultUserId)).Returns(
378+
A.CallTo(() => userService.GetDelegateAccountsByUserId(DefaultUserId)).Returns(
387379
hasDelegateAccount ? new List<DelegateAccount> { delegateAccount } : new List<DelegateAccount>()
388380
);
389381

@@ -398,7 +390,7 @@ bool isDelegateApproved
398390
).Returns(("candidate", true, true));
399391

400392
A.CallTo(
401-
() => userDataService.SetCentreEmail(
393+
() => userService.SetCentreEmail(
402394
DefaultUserId,
403395
DefaultCentreId,
404396
centreSpecificEmail,

DigitalLearningSolutions.Web/Controllers/Register/RegisterInternalAdminController.cs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
using System.Collections.Generic;
44
using System.Linq;
55
using System.Threading.Tasks;
6-
using DigitalLearningSolutions.Data.DataServices;
7-
using DigitalLearningSolutions.Data.DataServices.UserDataService;
86
using DigitalLearningSolutions.Data.Extensions;
97
using DigitalLearningSolutions.Data.Models.Register;
108
using DigitalLearningSolutions.Web.Attributes;
@@ -23,21 +21,17 @@
2321
[ServiceFilter(typeof(VerifyUserHasVerifiedPrimaryEmail))]
2422
public class RegisterInternalAdminController : Controller
2523
{
26-
private readonly ICentresDataService centresDataService;
2724
private readonly ICentresService centresService;
2825
private readonly IConfiguration config;
2926
private readonly IDelegateApprovalsService delegateApprovalsService;
3027
private readonly IEmailVerificationService emailVerificationService;
3128
private readonly IFeatureManager featureManager;
3229
private readonly IRegisterAdminService registerAdminService;
3330
private readonly IRegistrationService registrationService;
34-
private readonly IUserDataService userDataService;
3531
private readonly IUserService userService;
3632

3733
public RegisterInternalAdminController(
38-
ICentresDataService centresDataService,
3934
ICentresService centresService,
40-
IUserDataService userDataService,
4135
IUserService userService,
4236
IRegistrationService registrationService,
4337
IDelegateApprovalsService delegateApprovalsService,
@@ -47,9 +41,7 @@ public RegisterInternalAdminController(
4741
IConfiguration config
4842
)
4943
{
50-
this.centresDataService = centresDataService;
5144
this.centresService = centresService;
52-
this.userDataService = userDataService;
5345
this.userService = userService;
5446
this.registrationService = registrationService;
5547
this.delegateApprovalsService = delegateApprovalsService;
@@ -62,7 +54,7 @@ IConfiguration config
6254
[HttpGet]
6355
public IActionResult Index(int? centreId = null)
6456
{
65-
var centreName = centreId == null ? null : centresDataService.GetCentreName(centreId.Value);
57+
var centreName = centreId == null ? null : centresService.GetCentreName(centreId.Value);
6658

6759
if (centreName == null)
6860
{
@@ -81,7 +73,7 @@ public IActionResult Index(int? centreId = null)
8173
Centre = centreId,
8274
CentreName = centreName,
8375
PrimaryEmail = User.GetUserPrimaryEmailKnownNotNull(),
84-
CentreSpecificEmail = userDataService.GetCentreEmail(User.GetUserIdKnownNotNull(), centreId.Value),
76+
CentreSpecificEmail = userService.GetCentreEmail(User.GetUserIdKnownNotNull(), centreId.Value),
8577
};
8678

8779
return View(model);
@@ -117,7 +109,7 @@ public async Task<IActionResult> Index(InternalAdminInformationViewModel model)
117109

118110
if (!ModelState.IsValid)
119111
{
120-
model.CentreName = centresDataService.GetCentreName(model.Centre!.Value);
112+
model.CentreName = centresService.GetCentreName(model.Centre!.Value);
121113
model.PrimaryEmail = User.GetUserPrimaryEmailKnownNotNull();
122114
return View(model);
123115
}
@@ -128,7 +120,7 @@ public async Task<IActionResult> Index(InternalAdminInformationViewModel model)
128120
model.CentreSpecificEmail
129121
);
130122

131-
var delegateAccount = userDataService.GetDelegateAccountsByUserId(userId)
123+
var delegateAccount = userService.GetDelegateAccountsByUserId(userId)
132124
.SingleOrDefault(da => da.CentreId == model.Centre);
133125

134126
if (delegateAccount == null)

DigitalLearningSolutions.Web/Services/UserService.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace DigitalLearningSolutions.Web.Services
33
using System;
44
using System.Collections.Generic;
55
using System.ComponentModel.DataAnnotations;
6+
using System.Data;
67
using System.Linq;
78
using DigitalLearningSolutions.Data.DataServices;
89
using DigitalLearningSolutions.Data.DataServices.UserDataService;
@@ -143,6 +144,14 @@ string registrationConfirmationHash
143144
AdminUser? GetAdminUserByEmailAddress(string emailAddress);
144145
DelegateAccount? GetDelegateAccountById(int id);
145146
int? GetUserIdFromUsername(string username);
147+
IEnumerable<DelegateAccount> GetDelegateAccountsByUserId(int userId);
148+
void SetCentreEmail(
149+
int userId,
150+
int centreId,
151+
string? email,
152+
DateTime? emailVerified,
153+
IDbTransaction? transaction = null
154+
);
146155
}
147156

148157
public class UserService : IUserService
@@ -791,5 +800,20 @@ public bool CentreSpecificEmailIsInUseAtCentre(string email, int centreId)
791800
{
792801
return userDataService.GetUserIdFromUsername(username);
793802
}
803+
804+
public IEnumerable<DelegateAccount> GetDelegateAccountsByUserId(int userId)
805+
{
806+
return userDataService.GetDelegateAccountsByUserId(userId);
807+
}
808+
public void SetCentreEmail(
809+
int userId,
810+
int centreId,
811+
string? email,
812+
DateTime? emailVerified,
813+
IDbTransaction? transaction = null)
814+
{
815+
userDataService.SetCentreEmail(userId, centreId, email, emailVerified, transaction);
816+
}
817+
794818
}
795819
}

0 commit comments

Comments
 (0)