From 169b08f00a0598334fc3942707d8a92e8b210990 Mon Sep 17 00:00:00 2001 From: David Sexton Date: Fri, 22 Nov 2024 17:57:22 +0000 Subject: [PATCH] Updates for 2.3.0 * Syrx.Commanders.Databases.Settings.Readers - removed redundant references. * Syrx.Commander.Databases.Settings.Extensions - marked Evalute method as private. * Syrx.Commanders.Databases.Settings.Extensions.Json - added `UseFile` extension method to provide better syntactic support. * Syrx.Commanders.Databases.Settings.Extensions.Xml - added `UseFile` extension method to provide better syntactic support. --- .github/workflows/publish.yml | 2 +- Directory.Build.props | 20 +++-- Syrx.Commanders.Databases.sln | 12 +++ .../ServiceCollectionExtensions.cs | 10 ++- ....Databases.Settings.Extensions.Json.csproj | 1 + .../UseFileExtensions.cs | 19 ++++ .../ServiceCollectionExtensions.cs | 5 +- ...s.Databases.Settings.Extensions.Xml.csproj | 1 + .../UseFileExtensions.cs | 19 ++++ .../CommanderSettingsBuilder.cs | 2 +- ...mmanders.Databases.Settings.Readers.csproj | 28 +++--- .../AddDatabaseConnector.cs | 36 -------- .../AddProvider.cs | 41 +++++++++ .../JsonFileFixture.cs | 4 +- .../AddSyrxJsonFile.cs | 17 ++-- .../UseFile.cs | 90 +++++++++++++++++++ ...Settings.Extensions.Json.Tests.Unit.csproj | 2 + .../AddSyrxXmlFile.cs | 5 +- .../UseFile.cs | 38 ++++++++ ....Settings.Extensions.Xml.Tests.Unit.csproj | 75 ++++++++-------- .../XmlFileFixture.cs | 4 +- ...tabases.Settings.Readers.Tests.Unit.csproj | 1 + 22 files changed, 316 insertions(+), 116 deletions(-) create mode 100644 src/Syrx.Commanders.Databases.Settings.Extensions.Json/UseFileExtensions.cs create mode 100644 src/Syrx.Commanders.Databases.Settings.Extensions.Xml/UseFileExtensions.cs create mode 100644 tests/unit/Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit/ServiceCollectionExtensionsTests/AddProvider.cs create mode 100644 tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/ServiceCollectionExtensionsTests/UseFile.cs create mode 100644 tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/ServiceCollectionExtensionsTests/UseFile.cs diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f3efd56..517d700 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -66,7 +66,7 @@ jobs: run_test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 - name: Run tests diff --git a/Directory.Build.props b/Directory.Build.props index e077db3..e868b05 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -17,18 +17,28 @@ true - - - - 2.2.0 + 2.3.0 true true MIT syrx;data access;orm;micro-orm - Updated to .NET8.0. + + # Minor release + ## Syrx.Commanders.Databases.Settings.Readers + * Removed redundant references. + + ## Syrx.Commander.Databases.Settings.Extensions + * Marked Evalute method as private. + + ## Syrx.Commanders.Databases.Settings.Extensions.Json + * Added `UseFile` extension method to provide better syntactic support. + + ## Syrx.Commanders.Databases.Settings.Extensions.Xml + * Added `UseFile` extension method to provide better syntactic support. + diff --git a/Syrx.Commanders.Databases.sln b/Syrx.Commanders.Databases.sln index 1d3e451..ca3f527 100644 --- a/Syrx.Commanders.Databases.sln +++ b/Syrx.Commanders.Databases.sln @@ -69,6 +69,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Syrx.Commanders.Databases.T EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Syrx.Commanders.Databases.Tests.Unit", "tests\unit\Syrx.Commanders.Databases.Tests.Unit\Syrx.Commanders.Databases.Tests.Unit.csproj", "{71185BE7-919D-4E24-AC2F-86B95B6457CD}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{383C4438-FEB7-4797-90D1-8C9DC20FB2A5}" + ProjectSection(SolutionItems) = preProject + .github\dependabot.yml = .github\dependabot.yml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{6C8F7C7B-BAEA-4918-A204-1C91BCF0651D}" + ProjectSection(SolutionItems) = preProject + .github\workflows\publish.yml = .github\workflows\publish.yml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -196,5 +206,7 @@ Global {024675DD-4FC1-41D2-AD34-C83D3E767A17} = {5B0FA313-655F-466D-8376-E126871A30E2} {512E9A90-AD79-4497-9526-BF1076A11DCF} = {5B0FA313-655F-466D-8376-E126871A30E2} {71185BE7-919D-4E24-AC2F-86B95B6457CD} = {5B0FA313-655F-466D-8376-E126871A30E2} + {383C4438-FEB7-4797-90D1-8C9DC20FB2A5} = {62B696A9-D903-4211-AE85-C1198FF372E4} + {6C8F7C7B-BAEA-4918-A204-1C91BCF0651D} = {383C4438-FEB7-4797-90D1-8C9DC20FB2A5} EndGlobalSection EndGlobal diff --git a/src/Syrx.Commanders.Databases.Settings.Extensions.Json/ServiceCollectionExtensions.cs b/src/Syrx.Commanders.Databases.Settings.Extensions.Json/ServiceCollectionExtensions.cs index 4256c41..815b7db 100644 --- a/src/Syrx.Commanders.Databases.Settings.Extensions.Json/ServiceCollectionExtensions.cs +++ b/src/Syrx.Commanders.Databases.Settings.Extensions.Json/ServiceCollectionExtensions.cs @@ -1,12 +1,12 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using System; using static Syrx.Validation.Contract; namespace Syrx.Commanders.Databases.Settings.Extensions.Json { public static class ServiceCollectionExtensions - { + { + //[Obsolete("This method is deprecated and will be removed in the 3.0.0 version.", true)] public static IServiceCollection AddSyrxJsonFile( this IServiceCollection services, IConfigurationBuilder builder, @@ -17,6 +17,8 @@ public static IServiceCollection AddSyrxJsonFile( builder?.AddJsonFile(fileName); return services; - } - } + } + + + } } diff --git a/src/Syrx.Commanders.Databases.Settings.Extensions.Json/Syrx.Commanders.Databases.Settings.Extensions.Json.csproj b/src/Syrx.Commanders.Databases.Settings.Extensions.Json/Syrx.Commanders.Databases.Settings.Extensions.Json.csproj index d82a399..a1a0955 100644 --- a/src/Syrx.Commanders.Databases.Settings.Extensions.Json/Syrx.Commanders.Databases.Settings.Extensions.Json.csproj +++ b/src/Syrx.Commanders.Databases.Settings.Extensions.Json/Syrx.Commanders.Databases.Settings.Extensions.Json.csproj @@ -8,6 +8,7 @@ + diff --git a/src/Syrx.Commanders.Databases.Settings.Extensions.Json/UseFileExtensions.cs b/src/Syrx.Commanders.Databases.Settings.Extensions.Json/UseFileExtensions.cs new file mode 100644 index 0000000..4d3ba1f --- /dev/null +++ b/src/Syrx.Commanders.Databases.Settings.Extensions.Json/UseFileExtensions.cs @@ -0,0 +1,19 @@ +using Microsoft.Extensions.Configuration; +using Syrx.Extensions; +using static Syrx.Validation.Contract; + +namespace Syrx.Commanders.Databases.Settings.Extensions.Json +{ + public static class UseFileExtensions + { + public static SyrxBuilder UseFile(this SyrxBuilder factory, string fileName, IConfigurationBuilder builder) + { + Throw(builder != null, $"ConfigurationBuilder is null! Check bootstrap."); + Throw(!string.IsNullOrWhiteSpace(fileName), nameof(fileName)); + + builder?.AddJsonFile(fileName); + + return factory; + } + } +} diff --git a/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/ServiceCollectionExtensions.cs b/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/ServiceCollectionExtensions.cs index 22a7bac..4aa0bd6 100644 --- a/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/ServiceCollectionExtensions.cs +++ b/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/ServiceCollectionExtensions.cs @@ -5,7 +5,8 @@ namespace Syrx.Commanders.Databases.Settings.Extensions.Xml { public static class ServiceCollectionExtensions - { + { + //[Obsolete("This method is deprecated and will be removed in the 3.0.0 version.", false)] public static IServiceCollection AddSyrxXmlFile( this IServiceCollection services, IConfigurationBuilder builder, @@ -17,5 +18,5 @@ public static IServiceCollection AddSyrxXmlFile( builder?.AddXmlFile(fileName); return services; } - } + } } diff --git a/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/Syrx.Commanders.Databases.Settings.Extensions.Xml.csproj b/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/Syrx.Commanders.Databases.Settings.Extensions.Xml.csproj index 3068605..6e1f7fc 100644 --- a/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/Syrx.Commanders.Databases.Settings.Extensions.Xml.csproj +++ b/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/Syrx.Commanders.Databases.Settings.Extensions.Xml.csproj @@ -7,6 +7,7 @@ + diff --git a/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/UseFileExtensions.cs b/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/UseFileExtensions.cs new file mode 100644 index 0000000..09569c0 --- /dev/null +++ b/src/Syrx.Commanders.Databases.Settings.Extensions.Xml/UseFileExtensions.cs @@ -0,0 +1,19 @@ +using Microsoft.Extensions.Configuration; +using Syrx.Extensions; +using static Syrx.Validation.Contract; + +namespace Syrx.Commanders.Databases.Settings.Extensions.Xml +{ + public static class UseFileExtensions + { + public static SyrxBuilder UseFile(this SyrxBuilder factory, string fileName, IConfigurationBuilder builder) + { + Throw(builder != null, $"ConfigurationBuilder is null! Check bootstrap."); + Throw(!string.IsNullOrWhiteSpace(fileName), nameof(fileName)); + + builder?.AddXmlFile(fileName); + + return factory; + } + } +} diff --git a/src/Syrx.Commanders.Databases.Settings.Extensions/CommanderSettingsBuilder.cs b/src/Syrx.Commanders.Databases.Settings.Extensions/CommanderSettingsBuilder.cs index 12884c3..8aaa856 100644 --- a/src/Syrx.Commanders.Databases.Settings.Extensions/CommanderSettingsBuilder.cs +++ b/src/Syrx.Commanders.Databases.Settings.Extensions/CommanderSettingsBuilder.cs @@ -51,7 +51,7 @@ public CommanderSettingsBuilder AddCommand(NamespaceSetting options) return this; } - public void Evaluate(NamespaceSetting option) + private void Evaluate(NamespaceSetting option) { // pretty sure this can be done more elegantly. if (_settings.TryGetValue(option.Namespace, out var ns)) diff --git a/src/Syrx.Commanders.Databases.Settings.Readers/Syrx.Commanders.Databases.Settings.Readers.csproj b/src/Syrx.Commanders.Databases.Settings.Readers/Syrx.Commanders.Databases.Settings.Readers.csproj index 6cabe9a..bfaf55b 100644 --- a/src/Syrx.Commanders.Databases.Settings.Readers/Syrx.Commanders.Databases.Settings.Readers.csproj +++ b/src/Syrx.Commanders.Databases.Settings.Readers/Syrx.Commanders.Databases.Settings.Readers.csproj @@ -1,17 +1,15 @@ - - - This package adds support for reading settings for Database Commanders from configuration sources. - syrx;data access;orm;micro-orm - - - - - - - - + + + This package adds support for reading settings for Database Commanders from configuration sources. + syrx;data access;orm;micro-orm + + + + + + - - - + + + \ No newline at end of file diff --git a/tests/unit/Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit/ServiceCollectionExtensionsTests/AddDatabaseConnector.cs b/tests/unit/Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit/ServiceCollectionExtensionsTests/AddDatabaseConnector.cs index 3376701..04902ec 100644 --- a/tests/unit/Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit/ServiceCollectionExtensionsTests/AddDatabaseConnector.cs +++ b/tests/unit/Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit/ServiceCollectionExtensionsTests/AddDatabaseConnector.cs @@ -1,9 +1,6 @@ using Microsoft.Extensions.DependencyInjection; -using Moq; using Syrx.Commanders.Databases.Settings; -using Syrx.Commanders.Databases.Tests.Extensions; using System.Data; -using System.Data.Common; using static Xunit.Assert; namespace Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit.ServiceCollectionExtensionsTests @@ -34,37 +31,4 @@ public IDbConnection CreateConnection(CommandSetting options) } } - - public class AddProvider - { - private readonly IServiceCollection _services; - - public AddProvider() - { - _services = new ServiceCollection(); - } - - [Fact] - public void NullProviderThrowsArgumentNullException() - { - var result = Throws(() => _services.AddProvider(null)); - result.HasMessage("The DbProviderFactory delegate cannot be null. (Parameter 'providerFactory')"); - } - - [Fact] - public void Successfully() - { - var connection = new Mock(); - var dbProviderFactory = new Mock(); - dbProviderFactory.Setup(x => x.CreateConnection()).Returns(connection.Object); - - Func factory = () => dbProviderFactory.Object; - var result = _services.AddProvider(factory); - - var provider = _services.BuildServiceProvider(); - var resolved = provider.GetService>(); - NotNull(resolved); - Same(factory, resolved); - } - } } diff --git a/tests/unit/Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit/ServiceCollectionExtensionsTests/AddProvider.cs b/tests/unit/Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit/ServiceCollectionExtensionsTests/AddProvider.cs new file mode 100644 index 0000000..41b380f --- /dev/null +++ b/tests/unit/Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit/ServiceCollectionExtensionsTests/AddProvider.cs @@ -0,0 +1,41 @@ +using Microsoft.Extensions.DependencyInjection; +using Moq; +using Syrx.Commanders.Databases.Tests.Extensions; +using System.Data.Common; +using static Xunit.Assert; + +namespace Syrx.Commanders.Databases.Connectors.Extensions.Tests.Unit.ServiceCollectionExtensionsTests +{ + public class AddProvider + { + private readonly IServiceCollection _services; + + public AddProvider() + { + _services = new ServiceCollection(); + } + + [Fact] + public void NullProviderThrowsArgumentNullException() + { + var result = Throws(() => _services.AddProvider(null)); + result.HasMessage("The DbProviderFactory delegate cannot be null. (Parameter 'providerFactory')"); + } + + [Fact] + public void Successfully() + { + var connection = new Mock(); + var dbProviderFactory = new Mock(); + dbProviderFactory.Setup(x => x.CreateConnection()).Returns(connection.Object); + + Func factory = () => dbProviderFactory.Object; + var result = _services.AddProvider(factory); + + var provider = _services.BuildServiceProvider(); + var resolved = provider.GetService>(); + NotNull(resolved); + Same(factory, resolved); + } + } +} diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/JsonFileFixture.cs b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/JsonFileFixture.cs index b57778b..a86a0c8 100644 --- a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/JsonFileFixture.cs +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/JsonFileFixture.cs @@ -19,9 +19,9 @@ public JsonFileFixture() ConfigurationBuilder = new ConfigurationBuilder(); } - public string WriteToFile(CommanderSettings options) + public string WriteToFile(CommanderSettings options, string path = null) { - var path = FileName; + path = path ?? FileName; File.WriteAllText(path, options.Serialize()); return path; } diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/ServiceCollectionExtensionsTests/AddSyrxJsonFile.cs b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/ServiceCollectionExtensionsTests/AddSyrxJsonFile.cs index 74f1bb1..c25f142 100644 --- a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/ServiceCollectionExtensionsTests/AddSyrxJsonFile.cs +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/ServiceCollectionExtensionsTests/AddSyrxJsonFile.cs @@ -9,7 +9,7 @@ public class AddSyrxJsonFile(JsonFileFixture fixture) : IClassFixture(); @@ -34,8 +33,10 @@ public void Successfully() Equal(settings.Namespaces.Single().Namespace, resolved.Namespaces.Single().Namespace); Single(resolved.Namespaces.Single().Types); Equal(settings.Namespaces.Single().Types.Single().Name, resolved.Namespaces.Single().Types.Single().Name); - Equal(2, resolved.Namespaces.Single().Types.Single().Commands.Count); + Equal(2, resolved.Namespaces.Single().Types.Single().Commands.Count); + + Equivalent(settings, resolved); - } - } + } + } } diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/ServiceCollectionExtensionsTests/UseFile.cs b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/ServiceCollectionExtensionsTests/UseFile.cs new file mode 100644 index 0000000..cb10fbd --- /dev/null +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/ServiceCollectionExtensionsTests/UseFile.cs @@ -0,0 +1,90 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Syrx.Extensions; +using static Xunit.Assert; + +namespace Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit.ServiceCollectionExtensionsTests +{ + public class UseFile(JsonFileFixture fixture) : IClassFixture + { + + [Fact] + public void UseFileOverload() + { + var fileName = $"syrx.settings.file-overload.{DateTime.UtcNow.ToString("yyMMddHH")}.json"; + var services = fixture.Services; + var builder = fixture.ConfigurationBuilder; + + // write file + var settings = fixture.GetTestOptions(); + var filename = fixture.WriteToFile(settings, fileName); + + services.UseSyrx(a => a.UseFile(filename, builder)); + + var provider = services.BuildServiceProvider(); + + var configuration = builder.Build(); + var resolved = configuration.Get(); + + NotNull(resolved); + + Equivalent(settings, resolved); + } + + //[Fact] + //public void IntegratesWithSettings() + //{ + // var fileName = $"syrx.settings.integration.{DateTime.UtcNow.ToString("yyMMddHH")}.json"; + // var services = fixture.Services; + // //var builder = fixture.ConfigurationBuilder; + // var builder = new ConfigurationBuilder(); + + // // write file + // var settings = fixture.GetTestOptions(); + // var filename = fixture.WriteToFile(settings, fileName); + + // var connector = new Mock().Object; + + // //services.UseSyrx(a => a + // // .UseConnector(() => connector, b => b + // // .AddCommand(c => c + // // .ForType(d => d + // // .ForMethod(nameof(IntegratesWithSettings), e => e + // // .UseConnectionAlias("test-alias-2") + // // .UseCommandText("select 1/0;"))))) + // // //.UseFile(filename, builder) + // // ); + + // services.UseSyrx(a => a.UseFile(filename, builder)); + + // var provider = services.BuildServiceProvider(); + + // var configuration = builder.Build(); + // var resolved = configuration.Get(); + + + // //var commanderSettings = provider.GetRequiredService(); + // //NotNull(commanderSettings); + + // resolved.PrintAsJson(); + // //commanderSettings.PrintAsJson(); + + // var method = resolved.Namespaces.Single().Types.Single().Commands.First().Key; + // Equal("Method1", method); + // method.PrintAsJson(); + + // var reader = provider.GetRequiredService(); + // var method1 = reader.GetCommand(typeof(AddSyrxJsonFile), "Method1"); + // var method2 = reader.GetCommand(typeof(AddSyrxJsonFile), "Method2"); + + + + // NotNull(resolved); + + // Equivalent(settings, resolved); + // //Equivalent(settings, commanderSettings); + // //Equivalent(resolved, commanderSettings); + //} + + } +} diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit.csproj b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit.csproj index 2a73aea..362fe1f 100644 --- a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit.csproj +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit/Syrx.Commanders.Databases.Settings.Extensions.Json.Tests.Unit.csproj @@ -20,6 +20,7 @@ + all @@ -28,6 +29,7 @@ + diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/ServiceCollectionExtensionsTests/AddSyrxXmlFile.cs b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/ServiceCollectionExtensionsTests/AddSyrxXmlFile.cs index d8a15c3..cc4eeb2 100644 --- a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/ServiceCollectionExtensionsTests/AddSyrxXmlFile.cs +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/ServiceCollectionExtensionsTests/AddSyrxXmlFile.cs @@ -33,7 +33,7 @@ public void Successfully() // assertions NotNull(resolved); - //Equivalent(settings, resolved); + Equivalent(settings, resolved); Equal(settings.Connections, resolved.Connections); Single(resolved.Namespaces); @@ -49,8 +49,7 @@ public void SuccessfullyWithPrebuiltFile() var services = fixture.Services; var builder = fixture.ConfigurationBuilder; const string path = "syrx.settings.xml"; - services.AddSyrxXmlFile(builder, path); - + services.AddSyrxXmlFile(builder, path); // finalze build var configuration = builder.Build(); diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/ServiceCollectionExtensionsTests/UseFile.cs b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/ServiceCollectionExtensionsTests/UseFile.cs new file mode 100644 index 0000000..707c3a2 --- /dev/null +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/ServiceCollectionExtensionsTests/UseFile.cs @@ -0,0 +1,38 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Syrx.Extensions; +using static Xunit.Assert; + +namespace Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit.ServiceCollectionExtensionsTests +{ + public class UseFile(XmlFileFixture fixture) : IClassFixture + { + + [Fact] + public void UseFileOverload() + { + var fileName = $"syrx.settings.file-overload.{DateTime.UtcNow.ToString("yyMMddHH")}.json"; + var services = fixture.Services; + var builder = fixture.ConfigurationBuilder; + + // write file + var settings = fixture.GetTestOptions(); + var filename = fixture.WriteToFile(settings, fileName); + + services.UseSyrx(a => a.UseFile(filename, builder)); + + var provider = services.BuildServiceProvider(); + + var configuration = builder.Build(); + var resolved = configuration.Get(); + + NotNull(resolved); + + Equivalent(settings, resolved); + } + + + + + } +} diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit.csproj b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit.csproj index d7960cc..34ecf9d 100644 --- a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit.csproj +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit.csproj @@ -1,46 +1,47 @@ - - net8.0 - enable - disable + + net8.0 + enable + disable - false - true - + false + true + - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - - - - + + + + + + + - - - + + + - - - Always - - + + + Always + + diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/XmlFileFixture.cs b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/XmlFileFixture.cs index 4dc99ac..c5f13c9 100644 --- a/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/XmlFileFixture.cs +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Extensions.Xml.Tests.Unit/XmlFileFixture.cs @@ -20,9 +20,9 @@ public XmlFileFixture() ConfigurationBuilder = new ConfigurationBuilder(); } - public string WriteToFile(CommanderSettings options) + public string WriteToFile(CommanderSettings options, string path = null) { - var path = FileName; + path = path ?? FileName; WriteXml(path, options); return path; diff --git a/tests/unit/Syrx.Commanders.Databases.Settings.Readers.Tests.Unit/Syrx.Commanders.Databases.Settings.Readers.Tests.Unit.csproj b/tests/unit/Syrx.Commanders.Databases.Settings.Readers.Tests.Unit/Syrx.Commanders.Databases.Settings.Readers.Tests.Unit.csproj index 41e5f50..8d8de5f 100644 --- a/tests/unit/Syrx.Commanders.Databases.Settings.Readers.Tests.Unit/Syrx.Commanders.Databases.Settings.Readers.Tests.Unit.csproj +++ b/tests/unit/Syrx.Commanders.Databases.Settings.Readers.Tests.Unit/Syrx.Commanders.Databases.Settings.Readers.Tests.Unit.csproj @@ -16,6 +16,7 @@ +