From 9b3467165624d85c90c8e774153e3df0fbc7c80f Mon Sep 17 00:00:00 2001 From: Matthew Hill Date: Fri, 29 Nov 2024 16:15:24 +0000 Subject: [PATCH] fix: duplicate array entries --- TestConfig/Controllers/SubsController.cs | 12 +++++++----- TestConfig/Program.cs | 4 ++-- TestConfig/SubscriptionTIers.cs | 16 +++++++++++++--- TestConfig/appsettings.json | 22 ++++++++++++---------- 4 files changed, 34 insertions(+), 20 deletions(-) diff --git a/TestConfig/Controllers/SubsController.cs b/TestConfig/Controllers/SubsController.cs index 0411a1b..c5c97e5 100644 --- a/TestConfig/Controllers/SubsController.cs +++ b/TestConfig/Controllers/SubsController.cs @@ -6,24 +6,26 @@ namespace TestConfig.Controllers; [ApiController] [Route("[controller]")] -public class SubsController(IOptions opts) : ControllerBase +public class SubsController(IOptions opts) : ControllerBase { + private readonly SubscriptionTier[] _subscriptionTiers = opts.Value.SubscriptionTiers; + [HttpGet] - public SubscriptionTiers Get() + public SubscriptionTier[] Get() { TestInjectedData(); - return opts.Value; + return _subscriptionTiers; } private void TestInjectedData() { - var free = opts.Value.First(x => x.Tier == "Free"); + var free = _subscriptionTiers.First(x => x.Tier == "Free"); // This is failing when it should only have 1 empty string Assert.AreEqual(1, free.ActiveModules.Count()); Assert.AreEqual(0, free.ActiveModules.Where(x => !string.IsNullOrWhiteSpace(x)).Count()); - var other = opts.Value.First(x => x.Tier == "Growth"); + var other = _subscriptionTiers.First(x => x.Tier == "Growth"); // Again this is failing when there are only 2 values configured Assert.AreEqual(2, other.ActiveModules.Count()); } diff --git a/TestConfig/Program.cs b/TestConfig/Program.cs index 392d077..3ebdb4f 100644 --- a/TestConfig/Program.cs +++ b/TestConfig/Program.cs @@ -9,8 +9,8 @@ builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); -builder.Services.AddValidatedOptions( - builder.Configuration, SubscriptionTiers.SectionName); +builder.Services.AddValidatedOptions( + builder.Configuration, AppSettings.SectionName); var app = builder.Build(); diff --git a/TestConfig/SubscriptionTIers.cs b/TestConfig/SubscriptionTIers.cs index 3a1534e..a447c09 100644 --- a/TestConfig/SubscriptionTIers.cs +++ b/TestConfig/SubscriptionTIers.cs @@ -2,9 +2,19 @@ namespace TestConfig; -public class SubscriptionTiers : List +public class AppSettings { - public const string SectionName = "SubscriptionTiers"; + public const string SectionName = "AppSettings"; + + public SubscriptionTier[] SubscriptionTiers { get; set; } = []; } -public record SubscriptionTier([Required] string Tier, IEnumerable ActiveModules); +public class SubscriptionTier +{ + public const string SectionName = "SubscriptionTiers"; + + [Required] + public string Tier { get; set; } = string.Empty; + + public List ActiveModules { get; set; } = new(); +} diff --git a/TestConfig/appsettings.json b/TestConfig/appsettings.json index f1ef917..47d1f2e 100644 --- a/TestConfig/appsettings.json +++ b/TestConfig/appsettings.json @@ -6,14 +6,16 @@ } }, "AllowedHosts": "*", - "SubscriptionTiers": [ - { - "Tier": "Free", - "ActiveModules": [ "" ] - }, - { - "Tier": "Growth", - "ActiveModules": [ "UnlimitedRefills", "FreeSandwiches" ] - } - ] + "AppSettings": { + "SubscriptionTiers": [ + { + "Tier": "Free", + "ActiveModules": [ "" ] + }, + { + "Tier": "Growth", + "ActiveModules": [ "UnlimitedRefills", "FreeSandwiches" ] + } + ] + } }