Skip to content

Commit 6be609c

Browse files
committed
Begin refactoring Settings to IOptions pattern
1 parent 7564e1f commit 6be609c

File tree

7 files changed

+59
-55
lines changed

7 files changed

+59
-55
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,5 @@ node_modules/
178178
*_LOCAL_*
179179
*_BASE_*
180180
*_REMOTE_*
181-
*_BACKUP_*
181+
*_BACKUP_*
182+
appsettings.Development.json

src/Devlord.Utilities/Settings.cs renamed to src/Devlord.Utilities/DevlordSettings.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,17 @@
1313

1414
using System;
1515
using Microsoft.Extensions.Configuration;
16+
using Microsoft.Extensions.Options;
1617
using Newtonsoft.Json;
1718

1819
namespace Devlord.Utilities
1920
{
20-
public class Settings
21+
public class DevlordSettings
2122
{
22-
private static IConfiguration _configuration = GetConfig();
23+
public string GoogleMapsApiKey { get; set; }
24+
private static readonly IConfiguration _configuration = GetConfig();
2325

24-
public static Settings Default { get; } = new Settings();
26+
public static DevlordSettings Default { get; } = new DevlordSettings();
2527

2628
public int SmtpPort => int.Parse(GetValue("SmtpPort"));
2729
public string SmtpLogin => GetValue("SmtpLogin");
@@ -30,15 +32,10 @@ public class Settings
3032
private static IConfiguration GetConfig()
3133
{
3234
var builder = new ConfigurationBuilder()
33-
#if NET451
34-
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
35-
#else
3635
.SetBasePath(AppContext.BaseDirectory)
37-
#endif
3836
.AddJsonFile("appsettings.json",
3937
true,
4038
true);
41-
//builder.AddUserSecrets("22b9d517-6954-4beb-b7be-ba24eb9ac441");
4239
return builder.Build();
4340
}
4441

test/Devlord.Utilities.Tests/CryptKeyTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public CryptKeyTests(ITestOutputHelper output)
1414

1515
private readonly ITestOutputHelper _output;
1616

17-
[Theory(Skip = "This is meant for outputing arrays that we can copy to code. Run it manually.")]
17+
[Fact(Skip = "This is meant for outputting arrays that we can copy to code. Run it manually.")]
1818
public void MakeNewKeyAsString()
1919
{
2020
var key = Crypt.MakeKey();

test/Devlord.Utilities.Tests/Devlord.Utilities.Tests.csproj

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,25 @@
1515
<UserSecretsId>22b9d517-6954-4beb-b7be-ba24eb9ac441</UserSecretsId>
1616
</PropertyGroup>
1717
<ItemGroup>
18-
<PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.1" />
19-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.1" />
18+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
19+
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
20+
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="7.0.0" />
21+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
22+
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="7.0.0" />
2023
<!--<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.0.0" />-->
21-
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.1" />
22-
<PackageReference Include="NBuilder" Version="5.0.0-beta-135" />
23-
<PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
24-
<PackageReference Include="FastMember" Version="1.1.0" />
25-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
24+
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
25+
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="7.0.0" />
26+
<PackageReference Include="NBuilder" Version="6.1.0" />
27+
<PackageReference Include="FastMember" Version="1.5.0" />
28+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
29+
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
2630
<PackageReference Include="System.Data.Common" Version="4.3.0" />
27-
<PackageReference Include="xunit" Version="2.2.0" />
28-
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
29-
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
31+
<PackageReference Include="xunit" Version="2.4.2" />
32+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
33+
<PrivateAssets>all</PrivateAssets>
34+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
35+
</PackageReference>
36+
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
3037
</ItemGroup>
3138
<ItemGroup Condition="'$(TargetFramework)'=='net451' Or '$(TargetFramework)'=='net462'">
3239
<PackageReference Include="xunit.runner.console" Version="2.2.0" />

test/Devlord.Utilities.Tests/DistanceApiTests.cs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,41 @@
33
using System.Net.Http;
44
using System.Text.RegularExpressions;
55
using Devlord.Utilities.MapsApi;
6+
using Microsoft.Extensions.Configuration;
7+
using Microsoft.Extensions.DependencyInjection;
68
using Newtonsoft.Json;
79
using Xunit;
810

911
namespace Devlord.Utilities.Tests
1012
{
11-
public class DistanceApiTests
13+
public class DevlordTestConfiguration
1214
{
15+
public DevlordSettings Settings { get; private set; }
16+
17+
public DevlordTestConfiguration(DevlordSettings settings)
18+
{
19+
Settings = settings;
20+
var config = new ConfigurationBuilder()
21+
.AddJsonFile("appsettings.json")
22+
.AddEnvironmentVariables()
23+
.AddUserSecrets<DistanceApiTests>()
24+
.Build();
25+
var services = new ServiceCollection().AddOptions();
26+
services.Configure<DevlordSettings>(config.GetSection("Devlord.Utilities"));
27+
Settings = services.BuildServiceProvider().GetService<DevlordSettings>();
28+
//return config;
29+
}
30+
}
31+
32+
public class DistanceApiTests : IClassFixture<DevlordTestConfiguration>
33+
{
34+
private readonly DevlordSettings _settings;
35+
36+
public DistanceApiTests(DevlordTestConfiguration settings)
37+
{
38+
_settings = settings.Settings;
39+
}
40+
1341
private static double ParseDuration(string distanceString)
1442
{
1543
var resultDuration = Regex.Match(distanceString, @"[\d\.]+(?=\smins)")
@@ -22,8 +50,9 @@ private static double ParseDuration(string distanceString)
2250
[Fact]
2351
public void ReturnsDeserializedResults()
2452
{
25-
const string endPoint =
26-
"https://maps.googleapis.com/maps/api/distancematrix/json?sensor=false&origins=95969&destinations=95928";
53+
var endPoint =
54+
"https://maps.googleapis.com/maps/api/distancematrix/json?sensor=false&origins=95969&destinations=95928&key="
55+
+ _settings.GoogleMapsApiKey;
2756
using (var httpClient = new HttpClient())
2857
{
2958
var response = httpClient.GetAsync(endPoint).Result;

test/Devlord.Utilities.Tests/SettingsTests.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.

test/Devlord.Utilities.Tests/appsettings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"Devlord.Utilities": {
33
"SmtpServer": "mail.google.com",
44
"SmtpPort": 587,
5-
"SmtpPassword": "asdf"
5+
"SmtpPassword": "asdf",
6+
"GoogleApiKey": ""
67
}
78
}

0 commit comments

Comments
 (0)