Skip to content

Commit d1ceea5

Browse files
committed
fix: use stj generator for trimming
1 parent 3cfeab5 commit d1ceea5

File tree

5 files changed

+24
-16
lines changed

5 files changed

+24
-16
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System.Text.Json.Serialization;
2+
3+
namespace Nuggy.Models;
4+
5+
[JsonSerializable(typeof(AppSettings))]
6+
[JsonSerializable(typeof(FeedConfiguration))]
7+
[JsonSerializable(typeof(List<FeedConfiguration>))]
8+
[JsonSourceGenerationOptions(
9+
WriteIndented = true,
10+
PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
11+
public partial class AppSettingsJsonContext : JsonSerializerContext
12+
{
13+
}

src/Services/ConfigurationManager.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ public class ConfigurationManager
88
private readonly string _configDirectory;
99
private readonly string _settingsFilePath;
1010
private AppSettings? _cachedSettings;
11-
private static readonly JsonSerializerOptions jsonSerializerOptions = new()
12-
{
13-
WriteIndented = true,
14-
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
15-
};
1611

1712
public ConfigurationManager(string? homeDirectory = null)
1813
{
@@ -64,7 +59,7 @@ public async Task<AppSettings> LoadSettingsAsync()
6459
try
6560
{
6661
var json = await File.ReadAllTextAsync(_settingsFilePath);
67-
_cachedSettings = JsonSerializer.Deserialize<AppSettings>(json) ?? new AppSettings();
62+
_cachedSettings = JsonSerializer.Deserialize(json, AppSettingsJsonContext.Default.AppSettings) ?? new AppSettings();
6863
_cachedSettings.ConfigDirectory = _configDirectory;
6964

7065
// Ensure we have at least the default NuGet feed
@@ -92,7 +87,7 @@ public async Task SaveSettingsAsync(AppSettings settings)
9287
{
9388
try
9489
{
95-
var json = JsonSerializer.Serialize(settings, jsonSerializerOptions);
90+
var json = JsonSerializer.Serialize(settings, AppSettingsJsonContext.Default.AppSettings);
9691
await File.WriteAllTextAsync(_settingsFilePath, json);
9792
_cachedSettings = settings;
9893
}

tests/Models/FeedConfigurationTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ public void FeedConfiguration_ShouldSerializeToJson()
3434
};
3535

3636
// Act
37-
var json = JsonSerializer.Serialize(feed);
38-
var deserialized = JsonSerializer.Deserialize<FeedConfiguration>(json);
37+
var json = JsonSerializer.Serialize(feed, AppSettingsJsonContext.Default.FeedConfiguration);
38+
var deserialized = JsonSerializer.Deserialize(json, AppSettingsJsonContext.Default.FeedConfiguration);
3939

4040
// Assert
4141
deserialized.ShouldNotBeNull();
@@ -58,7 +58,7 @@ public void FeedConfiguration_ShouldDeserializeWithJsonPropertyNames()
5858
""";
5959

6060
// Act
61-
var feed = JsonSerializer.Deserialize<FeedConfiguration>(json);
61+
var feed = JsonSerializer.Deserialize(json, AppSettingsJsonContext.Default.FeedConfiguration);
6262

6363
// Assert
6464
feed.ShouldNotBeNull();

tests/Services/ConfigurationManagerTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public async Task LoadSettingsAsync_WhenFileExists_ShouldLoadFromFile()
5959
]
6060
};
6161

62-
var json = JsonSerializer.Serialize(expectedSettings);
62+
var json = JsonSerializer.Serialize(expectedSettings, AppSettingsJsonContext.Default.AppSettings);
6363
Directory.CreateDirectory(_testConfigDirectory);
6464
await File.WriteAllTextAsync(_testSettingsPath, json);
6565

@@ -99,7 +99,7 @@ public async Task SaveSettingsAsync_ShouldSerializeAndWriteToFile()
9999
var writtenContent = await File.ReadAllTextAsync(_testSettingsPath);
100100
writtenContent.ShouldNotBeNull();
101101

102-
var deserializedSettings = JsonSerializer.Deserialize<AppSettings>(writtenContent);
102+
var deserializedSettings = JsonSerializer.Deserialize(writtenContent, AppSettingsJsonContext.Default.AppSettings);
103103
deserializedSettings!.Feeds.Count.ShouldBe(1);
104104
deserializedSettings.Feeds[0].Name.ShouldBe("test-feed");
105105
}
@@ -292,7 +292,7 @@ public async Task RemoveFeedAsync_ShouldRemoveFeedFromSettings()
292292

293293
private void SetupExistingSettings(AppSettings settings)
294294
{
295-
var json = JsonSerializer.Serialize(settings);
295+
var json = JsonSerializer.Serialize(settings, AppSettingsJsonContext.Default.AppSettings);
296296
Directory.CreateDirectory(_testConfigDirectory);
297297
File.WriteAllText(_testSettingsPath, json);
298298
}
@@ -301,7 +301,7 @@ private async Task<AppSettings> GetSavedSettings()
301301
{
302302
File.Exists(_testSettingsPath).ShouldBeTrue();
303303
var json = await File.ReadAllTextAsync(_testSettingsPath);
304-
return JsonSerializer.Deserialize<AppSettings>(json)!;
304+
return JsonSerializer.Deserialize(json, AppSettingsJsonContext.Default.AppSettings)!;
305305
}
306306

307307
public void Dispose()

tests/Services/FeedServiceTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ private async Task SetupExistingSettings(AppSettings settings)
123123
// Set the correct config directory for our temp location
124124
settings.ConfigDirectory = _testConfigDirectory;
125125

126-
var json = JsonSerializer.Serialize(settings);
126+
var json = JsonSerializer.Serialize(settings, AppSettingsJsonContext.Default.AppSettings);
127127
Directory.CreateDirectory(_testConfigDirectory);
128128
await File.WriteAllTextAsync(_testSettingsPath, json);
129129

@@ -135,7 +135,7 @@ private async Task<AppSettings> GetSavedSettings()
135135
{
136136
File.Exists(_testSettingsPath).ShouldBeTrue();
137137
var json = await File.ReadAllTextAsync(_testSettingsPath);
138-
return JsonSerializer.Deserialize<AppSettings>(json)!;
138+
return JsonSerializer.Deserialize(json, AppSettingsJsonContext.Default.AppSettings)!;
139139
}
140140

141141
public void Dispose()

0 commit comments

Comments
 (0)