Skip to content

Commit ab20738

Browse files
Merge pull request #980 from TechnologyEnhancedLearning/HEEDLS-Move-ConfigHelper
HEEDLS-609 : Move ConfigHelper to the data project
2 parents d6df0a4 + a0c48da commit ab20738

File tree

74 files changed

+1959
-1805
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1959
-1805
lines changed

DigitalLearningSolutions.Data.Tests/Services/ConfigServiceTests.cs renamed to DigitalLearningSolutions.Data.Tests/DataServices/ConfigDataServiceTests.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
1-
namespace DigitalLearningSolutions.Data.Tests.Services
1+
namespace DigitalLearningSolutions.Data.Tests.DataServices
22
{
3-
using DigitalLearningSolutions.Data.Services;
4-
using DigitalLearningSolutions.Data.Tests.Helpers;
3+
using DigitalLearningSolutions.Data.DataServices;
54
using DigitalLearningSolutions.Data.Tests.TestHelpers;
6-
using NUnit.Framework;
75
using FluentAssertions;
6+
using NUnit.Framework;
87

9-
public class ConfigServiceTests
8+
public class ConfigDataServiceTests
109
{
11-
private ConfigService configService;
10+
private ConfigDataService configDataService = null!;
1211

1312
[SetUp]
1413
public void Setup()
1514
{
1615
var connection = ServiceTestHelper.GetDatabaseConnection();
17-
configService = new ConfigService(connection);
16+
configDataService = new ConfigDataService(connection);
1817
}
1918

2019
[Test]
2120
public void Get_config_value_returns_the_expected_value()
2221
{
2322
// When
24-
var result = configService.GetConfigValue(ConfigService.MailFromAddress);
23+
var result = configDataService.GetConfigValue(ConfigDataService.MailFromAddress);
2524

2625
// Then
2726
result.Should().Be("noreply@itskills.nhs.uk");

DigitalLearningSolutions.Data.Tests/Services/ActionPlanServiceTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using System.Threading.Tasks;
77
using DigitalLearningSolutions.Data.DataServices;
88
using DigitalLearningSolutions.Data.DataServices.SelfAssessmentDataService;
9-
using DigitalLearningSolutions.Data.Helpers;
109
using DigitalLearningSolutions.Data.Models.External.LearningHubApiClient;
1110
using DigitalLearningSolutions.Data.Models.LearningResources;
1211
using DigitalLearningSolutions.Data.Services;
@@ -16,6 +15,7 @@
1615
using FluentAssertions.Execution;
1716
using Microsoft.Extensions.Configuration;
1817
using NUnit.Framework;
18+
using ConfigurationExtensions = DigitalLearningSolutions.Data.Extensions.ConfigurationExtensions;
1919

2020
public class ActionPlanServiceTests
2121
{
@@ -371,7 +371,7 @@ public void RemoveActionPlanResource_removes_item()
371371
public void VerifyDelegateCanAccessActionPlanResource_returns_null_if_signposting_is_deactivated()
372372
{
373373
// Given
374-
A.CallTo(() => config[ConfigHelper.UseSignposting]).Returns("false");
374+
A.CallTo(() => config[ConfigurationExtensions.UseSignposting]).Returns("false");
375375

376376
// When
377377
var result = actionPlanService.VerifyDelegateCanAccessActionPlanResource(
@@ -392,7 +392,7 @@ public void
392392
VerifyDelegateCanAccessActionPlanResource_returns_null_if_LearningLogItem_with_given_id_does_not_exist()
393393
{
394394
// Given
395-
A.CallTo(() => config[ConfigHelper.UseSignposting]).Returns("true");
395+
A.CallTo(() => config[ConfigurationExtensions.UseSignposting]).Returns("true");
396396
A.CallTo(() => learningLogItemsDataService.GetLearningLogItem(GenericLearningLogItemId)).Returns(null);
397397

398398
// When
@@ -414,7 +414,7 @@ public void
414414
public void VerifyDelegateCanAccessActionPlanResource_returns_null_if_LearningLogItem_is_removed()
415415
{
416416
// Given
417-
A.CallTo(() => config[ConfigHelper.UseSignposting]).Returns("true");
417+
A.CallTo(() => config[ConfigurationExtensions.UseSignposting]).Returns("true");
418418
var learningLogItem = Builder<LearningLogItem>.CreateNew()
419419
.With(i => i.LearningHubResourceReferenceId = GenericLearningHubResourceReferenceId)
420420
.And(i => i.ArchivedDate = DateTime.UtcNow)
@@ -441,7 +441,7 @@ public void VerifyDelegateCanAccessActionPlanResource_returns_null_if_LearningLo
441441
public void VerifyDelegateCanAccessActionPlanResource_returns_null_if_LearningLogItem_has_no_linked_resource()
442442
{
443443
// Given
444-
A.CallTo(() => config[ConfigHelper.UseSignposting]).Returns("true");
444+
A.CallTo(() => config[ConfigurationExtensions.UseSignposting]).Returns("true");
445445
var learningLogItem = Builder<LearningLogItem>.CreateNew()
446446
.With(i => i.LearningHubResourceReferenceId = null)
447447
.And(i => i.ArchivedDate = null)
@@ -469,7 +469,7 @@ public void
469469
VerifyDelegateCanAccessActionPlanResource_returns_false_if_LearningLogItem_is_for_different_delegate()
470470
{
471471
// Given
472-
A.CallTo(() => config[ConfigHelper.UseSignposting]).Returns("true");
472+
A.CallTo(() => config[ConfigurationExtensions.UseSignposting]).Returns("true");
473473
var learningLogItem = Builder<LearningLogItem>.CreateNew()
474474
.With(i => i.LearningHubResourceReferenceId = GenericLearningHubResourceReferenceId)
475475
.And(i => i.ArchivedDate = null)
@@ -496,7 +496,7 @@ public void
496496
public void VerifyDelegateCanAccessActionPlanResource_returns_true_if_all_conditions_met()
497497
{
498498
// Given
499-
A.CallTo(() => config[ConfigHelper.UseSignposting]).Returns("true");
499+
A.CallTo(() => config[ConfigurationExtensions.UseSignposting]).Returns("true");
500500
var learningLogItem = Builder<LearningLogItem>.CreateNew()
501501
.With(i => i.LearningHubResourceReferenceId = GenericLearningHubResourceReferenceId)
502502
.And(i => i.ArchivedDate = null)

DigitalLearningSolutions.Data.Tests/Services/EmailServiceTests.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,39 +16,39 @@ namespace DigitalLearningSolutions.Data.Tests.Services
1616

1717
public class EmailServiceTests
1818
{
19-
private IConfigService configService;
20-
private IEmailDataService emailDataService;
21-
private EmailService emailService;
22-
private ISmtpClient smtpClient;
19+
private IConfigDataService configDataService = null!;
20+
private IEmailDataService emailDataService = null!;
21+
private EmailService emailService = null!;
22+
private ISmtpClient smtpClient = null!;
2323

2424
[SetUp]
2525
public void Setup()
2626
{
2727
emailDataService = A.Fake<IEmailDataService>();
28-
configService = A.Fake<IConfigService>();
28+
configDataService = A.Fake<IConfigDataService>();
2929
var smtpClientFactory = A.Fake<ISmtpClientFactory>();
3030
smtpClient = A.Fake<ISmtpClient>();
3131
A.CallTo(() => smtpClientFactory.GetSmtpClient()).Returns(smtpClient);
3232

33-
A.CallTo(() => configService.GetConfigValue(ConfigService.MailPort)).Returns("25");
34-
A.CallTo(() => configService.GetConfigValue(ConfigService.MailUsername)).Returns("username");
35-
A.CallTo(() => configService.GetConfigValue(ConfigService.MailPassword)).Returns("password");
36-
A.CallTo(() => configService.GetConfigValue(ConfigService.MailServer)).Returns("smtp.example.com");
37-
A.CallTo(() => configService.GetConfigValue(ConfigService.MailFromAddress)).Returns("test@example.com");
33+
A.CallTo(() => configDataService.GetConfigValue(ConfigDataService.MailPort)).Returns("25");
34+
A.CallTo(() => configDataService.GetConfigValue(ConfigDataService.MailUsername)).Returns("username");
35+
A.CallTo(() => configDataService.GetConfigValue(ConfigDataService.MailPassword)).Returns("password");
36+
A.CallTo(() => configDataService.GetConfigValue(ConfigDataService.MailServer)).Returns("smtp.example.com");
37+
A.CallTo(() => configDataService.GetConfigValue(ConfigDataService.MailFromAddress)).Returns("test@example.com");
3838

3939
var logger = A.Fake<ILogger<EmailService>>();
40-
emailService = new EmailService(emailDataService, configService, smtpClientFactory, logger);
40+
emailService = new EmailService(emailDataService, configDataService, smtpClientFactory, logger);
4141
}
4242

43-
[TestCase(ConfigService.MailPort)]
44-
[TestCase(ConfigService.MailUsername)]
45-
[TestCase(ConfigService.MailPassword)]
46-
[TestCase(ConfigService.MailServer)]
47-
[TestCase(ConfigService.MailFromAddress)]
43+
[TestCase(ConfigDataService.MailPort)]
44+
[TestCase(ConfigDataService.MailUsername)]
45+
[TestCase(ConfigDataService.MailPassword)]
46+
[TestCase(ConfigDataService.MailServer)]
47+
[TestCase(ConfigDataService.MailFromAddress)]
4848
public void Trying_to_send_mail_with_null_config_values_should_throw_an_exception(string configKey)
4949
{
5050
// Given
51-
A.CallTo(() => configService.GetConfigValue(configKey)).Returns(null);
51+
A.CallTo(() => configDataService.GetConfigValue(configKey)).Returns(null);
5252

5353
// Then
5454
Assert.Throws<ConfigValueMissingException>(() => emailService.SendEmail(EmailTestHelper.GetDefaultEmail()));
@@ -183,7 +183,7 @@ public void The_recipient_email_address_is_correct()
183183
public void The_recipient_email_addresses_are_correct()
184184
{
185185
// When
186-
emailService.SendEmail(EmailTestHelper.GetDefaultEmail(new string[2] { "recipient1@example.com", "recipient2@example.com" }));
186+
emailService.SendEmail(EmailTestHelper.GetDefaultEmail(new [] { "recipient1@example.com", "recipient2@example.com" }));
187187

188188
// Then
189189
A.CallTo(() =>
@@ -221,7 +221,7 @@ public void The_cc_email_address_is_correct()
221221
public void The_cc_email_addresses_are_correct()
222222
{
223223
// When
224-
emailService.SendEmail(EmailTestHelper.GetDefaultEmail(cc: new string[2] { "cc1@example.com", "cc2@example.com" }));
224+
emailService.SendEmail(EmailTestHelper.GetDefaultEmail(cc: new[] { "cc1@example.com", "cc2@example.com" }));
225225

226226
// Then
227227
A.CallTo(() =>
@@ -259,7 +259,7 @@ public void The_bcc_email_address_is_correct()
259259
public void The_bcc_email_addresses_are_correct()
260260
{
261261
// When
262-
emailService.SendEmail(EmailTestHelper.GetDefaultEmail(bcc: new string[2] { "bcc1@example.com", "bcc2@example.com" }));
262+
emailService.SendEmail(EmailTestHelper.GetDefaultEmail(bcc: new [] { "bcc1@example.com", "bcc2@example.com" }));
263263

264264
// Then
265265
A.CallTo(() =>

DigitalLearningSolutions.Data.Tests/Services/GroupServiceTests/GroupsServiceTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Linq;
66
using DigitalLearningSolutions.Data.DataServices;
77
using DigitalLearningSolutions.Data.Enums;
8-
using DigitalLearningSolutions.Data.Helpers;
98
using DigitalLearningSolutions.Data.Models;
109
using DigitalLearningSolutions.Data.Models.CustomPrompts;
1110
using DigitalLearningSolutions.Data.Models.DelegateGroups;
@@ -62,14 +61,15 @@ public void Setup()
6261
configuration = A.Fake<IConfiguration>();
6362
centreRegistrationPromptsService = A.Fake<ICentreRegistrationPromptsService>();
6463
logger = A.Fake<ILogger<IGroupsService>>();
65-
6664
jobGroupsDataService = A.Fake<IJobGroupsDataService>(x => x.Strict());
65+
6766
A.CallTo(() => jobGroupsDataService.GetJobGroupsAlphabetical()).Returns(
6867
JobGroupsTestHelper.GetDefaultJobGroupsAlphabetical()
6968
);
69+
A.CallTo(() => configuration["AppRootPath"]).Returns("baseUrl");
7070

71-
A.CallTo(() => configuration[ConfigHelper.AppRootPathName]).Returns("baseUrl");
7271
DatabaseModificationsDoNothing();
72+
7373
groupsService = new GroupsService(
7474
groupsDataService,
7575
clockService,

DigitalLearningSolutions.Data.Tests/Services/LearningHubLinkServiceTests.cs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.Web;
55
using DigitalLearningSolutions.Data.DataServices.UserDataService;
66
using DigitalLearningSolutions.Data.Exceptions;
7-
using DigitalLearningSolutions.Data.Helpers;
87
using DigitalLearningSolutions.Data.Models.Signposting;
98
using DigitalLearningSolutions.Data.Services;
109
using FakeItEasy;
@@ -25,18 +24,10 @@ public void Setup()
2524
userDataService = A.Fake<IUserDataService>();
2625
learningHubSsoSecurityService = A.Fake<ILearningHubSsoSecurityService>();
2726

28-
A.CallTo(() => config[$"{ConfigHelper.LearningHubSsoSectionKey}:{ConfigHelper.LearningHubAuthBaseUrl}"])
29-
.Returns("www.example.com");
30-
A.CallTo(
31-
() => config[$"{ConfigHelper.LearningHubSsoSectionKey}:{ConfigHelper.LearningHubAuthClientCode}"]
32-
).Returns("test");
33-
A.CallTo(
34-
() => config[$"{ConfigHelper.LearningHubSsoSectionKey}:{ConfigHelper.LearningHubAuthLoginEndpoint}"]
35-
).Returns("/insert-log");
36-
A.CallTo(
37-
() => config[
38-
$"{ConfigHelper.LearningHubSsoSectionKey}:{ConfigHelper.LearningHubAuthLinkingEndpoint}"]
39-
).Returns("/to-the-past");
27+
A.CallTo(() => config["LearningHubSSO:BaseUrl"]).Returns("www.example.com");
28+
A.CallTo(() => config["LearningHubSSO:ClientCode"]).Returns("test");
29+
A.CallTo(() => config["LearningHubSSO:LoginEndpoint"]).Returns("/insert-log");
30+
A.CallTo(() => config["LearningHubSSO:LinkingEndpoint"]).Returns("/to-the-past");
4031

4132
A.CallTo(() => learningHubSsoSecurityService.VerifyHash("56789", "invalid-hash")).Returns(false);
4233
A.CallTo(() => learningHubSsoSecurityService.VerifyHash("12345", "valid-hash")).Returns(true);

DigitalLearningSolutions.Data.Tests/Services/UnlockServiceTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace DigitalLearningSolutions.Data.Tests.Services
22
{
3-
using DigitalLearningSolutions.Data.Helpers;
3+
using DigitalLearningSolutions.Data.DataServices;
44
using DigitalLearningSolutions.Data.Models;
55
using DigitalLearningSolutions.Data.Models.Email;
66
using DigitalLearningSolutions.Data.Services;
@@ -44,8 +44,8 @@ public void Setup()
4444
featureManager
4545
);
4646

47-
A.CallTo(() => configuration[ConfigHelper.AppRootPathName]).Returns("https://new-tracking-system.com");
48-
A.CallTo(() => configuration[ConfigHelper.CurrentSystemBaseUrlName])
47+
A.CallTo(() => configuration["AppRootPath"]).Returns("https://new-tracking-system.com");
48+
A.CallTo(() => configuration["CurrentSystemBaseUrl"])
4949
.Returns("https://old-tracking-system.com");
5050
}
5151

@@ -64,7 +64,7 @@ public void Throws_an_exception_when_tracking_system_base_url_is_null()
6464
{
6565
// Given
6666
A.CallTo(() => featureManager.IsEnabledAsync(A<string>._)).Returns(false);
67-
A.CallTo(() => configuration[ConfigHelper.CurrentSystemBaseUrlName]).Returns("");
67+
A.CallTo(() => configuration["CurrentSystemBaseUrl"]).Returns("");
6868

6969
// Then
7070
Assert.ThrowsAsync<ConfigValueMissingException>(async () => await notificationService.SendUnlockRequest(1));

DigitalLearningSolutions.Data/ApiClients/LearningHubApiClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System.Net.Http;
77
using System.Threading.Tasks;
88
using DigitalLearningSolutions.Data.Exceptions;
9-
using DigitalLearningSolutions.Data.Helpers;
9+
using DigitalLearningSolutions.Data.Extensions;
1010
using DigitalLearningSolutions.Data.Models.External.LearningHubApiClient;
1111
using Microsoft.Extensions.Configuration;
1212
using Microsoft.Extensions.Logging;

DigitalLearningSolutions.Data/Services/ConfigService.cs renamed to DigitalLearningSolutions.Data/DataServices/ConfigDataService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
namespace DigitalLearningSolutions.Data.Services
1+
namespace DigitalLearningSolutions.Data.DataServices
22
{
33
using System;
44
using System.Data;
55
using System.Linq;
66
using Dapper;
77

8-
public interface IConfigService
8+
public interface IConfigDataService
99
{
1010
string? GetConfigValue(string key);
1111
bool GetCentreBetaTesting(int centreId);
1212
string GetConfigValueMissingExceptionMessage(string missingConfigValue);
1313
}
1414

15-
public class ConfigService : IConfigService
15+
public class ConfigDataService : IConfigDataService
1616
{
1717
public const string MailServer = "MailServer";
1818
public const string MailFromAddress = "MailFromAddress";
@@ -26,7 +26,7 @@ public class ConfigService : IConfigService
2626

2727
private readonly IDbConnection connection;
2828

29-
public ConfigService(IDbConnection connection)
29+
public ConfigDataService(IDbConnection connection)
3030
{
3131
this.connection = connection;
3232
}

DigitalLearningSolutions.Data/Helpers/ConfigHelper.cs renamed to DigitalLearningSolutions.Data/Extensions/ConfigurationExtensions.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
1-
namespace DigitalLearningSolutions.Data.Helpers
1+
namespace DigitalLearningSolutions.Data.Extensions
22
{
33
using Microsoft.Extensions.Configuration;
44

5-
public static class ConfigHelper
5+
public static class ConfigurationExtensions
66
{
7-
public const string AppRootPathName = "AppRootPath";
8-
public const string CurrentSystemBaseUrlName = "CurrentSystemBaseUrl";
7+
public const string UseSignposting = "FeatureManagement:UseSignposting";
8+
9+
private const string AppRootPathName = "AppRootPath";
10+
private const string CurrentSystemBaseUrlName = "CurrentSystemBaseUrl";
911
private const string LearningHubOpenApiKey = "LearningHubOpenAPIKey";
1012
private const string LearningHubOpenApiBaseUrl = "LearningHubOpenAPIBaseUrl";
11-
public const string UseSignposting = "FeatureManagement:UseSignposting";
1213
private const string PricingPageEnabled = "FeatureManagement:PricingPage";
1314

14-
public const string LearningHubAuthBaseUrl = "BaseUrl";
15-
public const string LearningHubAuthLoginEndpoint = "LoginEndpoint";
16-
public const string LearningHubAuthLinkingEndpoint = "LinkingEndpoint";
17-
public const string LearningHubAuthClientCode = "ClientCode";
15+
private const string LearningHubAuthBaseUrl = "BaseUrl";
16+
private const string LearningHubAuthLoginEndpoint = "LoginEndpoint";
17+
private const string LearningHubAuthLinkingEndpoint = "LinkingEndpoint";
18+
private const string LearningHubAuthClientCode = "ClientCode";
1819

19-
public const string LearningHubSsoSectionKey = "LearningHubSSO";
20+
private const string MapsApiKey = "MapsAPIKey";
21+
private const string LearningHubSsoSectionKey = "LearningHubSSO";
2022
private const string LearningHubSsoToleranceKey = "ToleranceInSeconds";
2123
private const string LearningHubSsoIterationsKey = "HashIterations";
2224
private const string LearningHubSsoByteLengthKey = "ByteLength";
@@ -91,5 +93,10 @@ public static string GetLearningHubSsoSecretKey(this IConfiguration config)
9193
{
9294
return config[$"{LearningHubSsoSectionKey}:{LearningHubSsoSecretKey}"];
9395
}
96+
97+
public static string GetMapsApiKey(this IConfiguration config)
98+
{
99+
return config[MapsApiKey];
100+
}
94101
}
95102
}

DigitalLearningSolutions.Data/Services/ActionPlanService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
using DigitalLearningSolutions.Data.DataServices;
99
using DigitalLearningSolutions.Data.DataServices.SelfAssessmentDataService;
1010
using DigitalLearningSolutions.Data.Exceptions;
11-
using DigitalLearningSolutions.Data.Helpers;
11+
using DigitalLearningSolutions.Data.Extensions;
1212
using DigitalLearningSolutions.Data.Models.LearningResources;
1313
using Microsoft.Extensions.Configuration;
1414

0 commit comments

Comments
 (0)