diff --git a/.gitignore b/.gitignore index 64d61479c..01de113a5 100644 --- a/.gitignore +++ b/.gitignore @@ -278,3 +278,7 @@ test/Apizr/GeneratedCode test/MultipleFiles/**/*.cs test/HelloWorld/HelloWorld/Output.cs test/MSBuild/refitter.msbuild/ + +# Install scripts +dotnet-install.sh +install.sh diff --git a/src/Refitter.Core/ApizrRegistrationGenerator.cs b/src/Refitter.Core/ApizrRegistrationGenerator.cs index 21872a3f5..099ebc467 100644 --- a/src/Refitter.Core/ApizrRegistrationGenerator.cs +++ b/src/Refitter.Core/ApizrRegistrationGenerator.cs @@ -34,7 +34,7 @@ public static string Generate( .CapitalizeFirstCharacter() : string.Empty; - if(isDependencyInjectionExtension) + if (isDependencyInjectionExtension) methodName = hasManyApis ? $"Configure{formatedTitle}ApizrManagers" : $"Configure{formatedTitle}ApizrManager"; else methodName = hasManyApis ? $"Build{formatedTitle}ApizrManagers" : $"Build{formatedTitle}ApizrManager"; @@ -209,7 +209,7 @@ public static string Generate( $$""" using Mapster; """); - if(isDependencyInjectionExtension) + if (isDependencyInjectionExtension) usingsCodeBuilder.AppendLine( $$""" using MapsterMapper; @@ -225,7 +225,7 @@ public static string Generate( break; } - if(settings.ApizrSettings.WithPriority) + if (settings.ApizrSettings.WithPriority) { apizrPackages.Add(ApizrPackages.Apizr_Integrations_Fusillade); optionsCodeBuilder.AppendLine(); @@ -381,7 +381,7 @@ public static partial class IServiceCollectionExtensions /// /// Adjust common shared options /// - """); + """); } code.AppendLine( @@ -409,7 +409,7 @@ public static partial class IServiceCollectionExtensions """); for (int i = 0; i < interfaceNames.Length; i++) { - if(i > 0) + if (i > 0) code.AppendLine(); code.Append( @@ -462,7 +462,7 @@ public static partial class IServiceCollectionExtensions /// /// Adjust common shared options /// - """); + """); } code.AppendLine( @@ -471,11 +471,11 @@ public static partial class IServiceCollectionExtensions this IServiceCollection services, """); - code.AppendLine(hasBaseUrl ? + code.AppendLine(hasBaseUrl ? $$""" Action? optionsBuilder = null) { - """ : + """ : $$""" Action optionsBuilder) { @@ -491,7 +491,7 @@ public static partial class IServiceCollectionExtensions #pragma warning disable RS1035 code.Remove(code.Length - Environment.NewLine.Length, Environment.NewLine.Length); #pragma warning restore RS1035 - } + } #endregion } @@ -533,7 +533,7 @@ public static partial class ApizrRegistration /// /// Adjust common shared options /// - """); + """); } code.AppendLine( @@ -599,7 +599,7 @@ public static partial class ApizrRegistration /// /// Adjust common shared options /// - """); + """); } code.AppendLine( @@ -614,7 +614,7 @@ public static partial class ApizrRegistration #pragma warning disable RS1035 code.Remove(code.Length - Environment.NewLine.Length, Environment.NewLine.Length); #pragma warning restore RS1035 - } + } #endregion } diff --git a/src/Refitter.Core/DependencyInjectionGenerator.cs b/src/Refitter.Core/DependencyInjectionGenerator.cs index ee29ddf2b..b39fef46a 100644 --- a/src/Refitter.Core/DependencyInjectionGenerator.cs +++ b/src/Refitter.Core/DependencyInjectionGenerator.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using System.Text; namespace Refitter.Core; @@ -29,7 +29,7 @@ public static string Generate( Action? builder = default, RefitSettings? settings = default) """; - + var configureRefitClient = string.IsNullOrEmpty(iocSettings.BaseUrl) ? ".ConfigureHttpClient(c => c.BaseAddress = baseUrl)" : $".ConfigureHttpClient(c => c.BaseAddress = new Uri(\"{iocSettings.BaseUrl}\"))"; @@ -76,7 +76,7 @@ public static partial class IServiceCollectionExtensions """"); foreach (var interfaceName in interfaceNames) { - var clientBuilderName = $"clientBuilder{interfaceName}"; + var clientBuilderName = $"clientBuilder{interfaceName}"; code.Append( $$""" var {{clientBuilderName}} = services @@ -89,7 +89,7 @@ public static partial class IServiceCollectionExtensions code.AppendLine(); code.Append($" .AddHttpMessageHandler<{httpMessageHandler}>()"); } - + code.Append(";"); code.AppendLine(); @@ -108,7 +108,7 @@ public static partial class IServiceCollectionExtensions TimeSpan.FromSeconds({{durationString}}), {{iocSettings.MaxRetryCount}}))); """); - } + } else if (iocSettings.TransientErrorHandler == TransientErrorHandler.HttpResilience) { var durationString = iocSettings.FirstBackoffRetryInSeconds.ToString(CultureInfo.InvariantCulture); @@ -132,7 +132,7 @@ public static partial class IServiceCollectionExtensions code.AppendLine($" builder?.Invoke({clientBuilderName});"); code.AppendLine(); } - + #pragma warning disable RS1035 code.Remove(code.Length - Environment.NewLine.Length, Environment.NewLine.Length); #pragma warning restore RS1035 @@ -144,4 +144,4 @@ public static partial class IServiceCollectionExtensions code.AppendLine(); return code.ToString(); } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/EnumExtensions.cs b/src/Refitter.Core/EnumExtensions.cs index 98bee4830..66658f01e 100644 --- a/src/Refitter.Core/EnumExtensions.cs +++ b/src/Refitter.Core/EnumExtensions.cs @@ -1,4 +1,4 @@ -using System.Collections.Concurrent; +using System.Collections.Concurrent; using System.ComponentModel; using System.Reflection; diff --git a/src/Refitter.Core/FilenameConstants.cs b/src/Refitter.Core/FilenameConstants.cs index e629cc23e..d4d9f1709 100644 --- a/src/Refitter.Core/FilenameConstants.cs +++ b/src/Refitter.Core/FilenameConstants.cs @@ -9,12 +9,12 @@ public static class TypenameConstants /// The typename for Refit interfaces. /// public const string RefitInterfaces = "RefitInterfaces"; - + /// /// The typename for contracts. /// public const string Contracts = "Contracts"; - + /// /// The typename for dependency injection. /// diff --git a/src/Refitter.Core/IdentifierUtils.cs b/src/Refitter.Core/IdentifierUtils.cs index 082b0022b..223bb9fde 100644 --- a/src/Refitter.Core/IdentifierUtils.cs +++ b/src/Refitter.Core/IdentifierUtils.cs @@ -1,4 +1,4 @@ -namespace Refitter.Core; +namespace Refitter.Core; internal static class IdentifierUtils { diff --git a/src/Refitter.Core/OpenApiDocumentFactory.cs b/src/Refitter.Core/OpenApiDocumentFactory.cs index 2889c97bf..5d622de15 100644 --- a/src/Refitter.Core/OpenApiDocumentFactory.cs +++ b/src/Refitter.Core/OpenApiDocumentFactory.cs @@ -1,4 +1,4 @@ -using System.Net; +using System.Net; using Microsoft.OpenApi.Extensions; using Microsoft.OpenApi.Readers; using NSwag; @@ -37,7 +37,7 @@ public static async Task CreateAsync(string openApiPath) return await OpenApiDocument.FromJsonAsync(json); } catch - { + { return await CreateUsingNSwagAsync(openApiPath); } } @@ -47,13 +47,13 @@ private static async Task CreateUsingNSwagAsync(string openApiP if (IsHttp(openApiPath)) { var content = await GetHttpContent(openApiPath); - return IsYaml(openApiPath) - ? await OpenApiYamlDocument.FromYamlAsync(content) + return IsYaml(openApiPath) + ? await OpenApiYamlDocument.FromYamlAsync(content) : await OpenApiDocument.FromJsonAsync(content); } - return IsYaml(openApiPath) - ? await OpenApiYamlDocument.FromFileAsync(openApiPath) + return IsYaml(openApiPath) + ? await OpenApiYamlDocument.FromFileAsync(openApiPath) : await OpenApiDocument.FromFileAsync(openApiPath); } @@ -111,4 +111,4 @@ private static bool IsYaml(string path) { return path.EndsWith("yaml") || path.EndsWith("yml"); } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/OperationNameGenerator.cs b/src/Refitter.Core/OperationNameGenerator.cs index 3b4ac170d..b622afda8 100644 --- a/src/Refitter.Core/OperationNameGenerator.cs +++ b/src/Refitter.Core/OperationNameGenerator.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using NSwag; using NSwag.CodeGeneration.OperationNameGenerators; using GeneratorType = Refitter.Core.OperationNameGeneratorTypes; @@ -93,4 +93,4 @@ private bool CheckForDuplicateOperationIds( return operationNames.Distinct().Count() != operationNames.Count; } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/ParameterExtractor.cs b/src/Refitter.Core/ParameterExtractor.cs index 51f4ac8f3..b28fe5d44 100644 --- a/src/Refitter.Core/ParameterExtractor.cs +++ b/src/Refitter.Core/ParameterExtractor.cs @@ -142,9 +142,9 @@ private static string GetQueryAttribute(CSharpParameterModel parameter, RefitGen { parameter.IsDate: true, settings.CodeGeneratorSettings.DateFormat: not null } => $"Query(Format = \"{settings.CodeGeneratorSettings?.DateFormat}\")", { - parameter.IsDateOrDateTime: true, parameter.Schema.Format: "date-time", - settings.CodeGeneratorSettings.DateTimeFormat: not null - } => $"Query(Format = \"{settings.CodeGeneratorSettings?.DateTimeFormat}\")", + parameter.IsDateOrDateTime: true, parameter.Schema.Format: "date-time", + settings.CodeGeneratorSettings.DateTimeFormat: not null + } => $"Query(Format = \"{settings.CodeGeneratorSettings?.DateTimeFormat}\")", _ => "Query", }; } diff --git a/src/Refitter.Core/RefitGeneratedCode.cs b/src/Refitter.Core/RefitGeneratedCode.cs index cf91d6c31..95595c5d7 100644 --- a/src/Refitter.Core/RefitGeneratedCode.cs +++ b/src/Refitter.Core/RefitGeneratedCode.cs @@ -11,4 +11,4 @@ public override string ToString() { return SourceCode; } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/RefitInterfaceGenerator.cs b/src/Refitter.Core/RefitInterfaceGenerator.cs index 0a15a43c5..8f60841f6 100644 --- a/src/Refitter.Core/RefitInterfaceGenerator.cs +++ b/src/Refitter.Core/RefitInterfaceGenerator.cs @@ -84,7 +84,7 @@ private string GenerateInterfaceBody(out string? dynamicQuerystringParameters) .AppendLine($"{Separator}{Separator}{returnType} {operationName}({parametersString});") .AppendLine(); - if (parametersString.Contains("?") && settings is {OptionalParameters: true, ApizrSettings: not null}) + if (parametersString.Contains("?") && settings is { OptionalParameters: true, ApizrSettings: not null }) { if (settings.GenerateXmlDocCodeComments) { diff --git a/src/Refitter.Core/SchemaCleaner.cs b/src/Refitter.Core/SchemaCleaner.cs index be48b07be..f1650655a 100644 --- a/src/Refitter.Core/SchemaCleaner.cs +++ b/src/Refitter.Core/SchemaCleaner.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using System.Text.RegularExpressions; using NJsonSchema; using NSwag; diff --git a/src/Refitter.Core/Settings/CacheProviderType.cs b/src/Refitter.Core/Settings/CacheProviderType.cs index 934a3646c..3977af1fa 100644 --- a/src/Refitter.Core/Settings/CacheProviderType.cs +++ b/src/Refitter.Core/Settings/CacheProviderType.cs @@ -1,4 +1,4 @@ -namespace Refitter.Core +namespace Refitter.Core { /// /// Enumeration of cache provider types. @@ -9,30 +9,30 @@ public enum CacheProviderType /// No cache provider. /// None, - + /// /// Akavache cache provider. /// Akavache, - + /// /// MonkeyCache cache provider. /// MonkeyCache, - + /// /// In-memory cache provider. /// InMemory, - + /// /// Distributed cache as string provider. /// DistributedAsString, - + /// /// Distributed cache as byte array provider. /// DistributedAsByteArray, } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/Settings/MappingProviderType.cs b/src/Refitter.Core/Settings/MappingProviderType.cs index 3f743984d..f91bb2db6 100644 --- a/src/Refitter.Core/Settings/MappingProviderType.cs +++ b/src/Refitter.Core/Settings/MappingProviderType.cs @@ -1,4 +1,4 @@ -namespace Refitter.Core +namespace Refitter.Core { /// /// Enumeration of mapping provider types. @@ -9,15 +9,15 @@ public enum MappingProviderType /// No mapping provider. /// None, - + /// /// AutoMapper mapping provider. /// AutoMapper, - + /// /// Mapster mapping provider. /// Mapster } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/Settings/OperationNameGeneratorTypes.cs b/src/Refitter.Core/Settings/OperationNameGeneratorTypes.cs index d3d074795..6e7a89c48 100644 --- a/src/Refitter.Core/Settings/OperationNameGeneratorTypes.cs +++ b/src/Refitter.Core/Settings/OperationNameGeneratorTypes.cs @@ -1,4 +1,4 @@ -using System.ComponentModel; +using System.ComponentModel; namespace Refitter.Core; diff --git a/src/Refitter.Core/Settings/RefitGeneratorSettings.cs b/src/Refitter.Core/Settings/RefitGeneratorSettings.cs index 1a014dc12..87ff8f9cc 100644 --- a/src/Refitter.Core/Settings/RefitGeneratorSettings.cs +++ b/src/Refitter.Core/Settings/RefitGeneratorSettings.cs @@ -15,7 +15,7 @@ public class RefitGeneratorSettings /// Default output folder for generated files. /// public const string DefaultOutputFolder = "./Generated"; - + /// /// Default namespace for generated code. /// @@ -365,7 +365,7 @@ payloads with (yet) unknown types are offered by newer versions of an API /// /// Gets or sets the parameter name generator for customizing parameter names. /// - [JsonIgnore] + [JsonIgnore] public IParameterNameGenerator? ParameterNameGenerator { get; set; } /// diff --git a/src/Refitter.Core/StringCasingExtensions.cs b/src/Refitter.Core/StringCasingExtensions.cs index 19bba7daa..e39ac3ab0 100644 --- a/src/Refitter.Core/StringCasingExtensions.cs +++ b/src/Refitter.Core/StringCasingExtensions.cs @@ -77,4 +77,4 @@ public static string ConvertSnakeCaseToPascalCase(this string str) return string.Join(string.Empty, parts); } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/WellKnownNamesspaces.cs b/src/Refitter.Core/WellKnownNamesspaces.cs index bee1b6ff9..7af36180d 100644 --- a/src/Refitter.Core/WellKnownNamesspaces.cs +++ b/src/Refitter.Core/WellKnownNamesspaces.cs @@ -13,4 +13,4 @@ public static string TrimImportedNamespaces(string returnTypeParameter) => .Select(s => returnTypeParameter.Replace(s + ".", string.Empty)) .FirstOrDefault() ?? returnTypeParameter; -} \ No newline at end of file +} diff --git a/src/Refitter.MSBuild/RefitterGenerateTask.cs b/src/Refitter.MSBuild/RefitterGenerateTask.cs index 2b25a75d5..cf2c810c7 100644 --- a/src/Refitter.MSBuild/RefitterGenerateTask.cs +++ b/src/Refitter.MSBuild/RefitterGenerateTask.cs @@ -63,14 +63,14 @@ private List StartProcess(string file) var expectedFiles = GetExpectedGeneratedFiles(file); var assembly = Assembly.GetExecutingAssembly(); var packageFolder = Path.GetDirectoryName(assembly.Location); - var seperator = Path.DirectorySeparatorChar; - var refitterDll = $"{packageFolder}{seperator}..{seperator}net8.0{seperator}refitter.dll"; + var separator = Path.DirectorySeparatorChar; + var refitterDll = $"{packageFolder}{separator}..{separator}net8.0{separator}refitter.dll"; List installedRuntimes = GetInstalledDotnetRuntimes(); if (installedRuntimes.Any(r => r.StartsWith("Microsoft.NETCore.App 9."))) { // Use .NET 9 version if available - refitterDll = $"{packageFolder}{seperator}..{seperator}net9.0{seperator}refitter.dll"; + refitterDll = $"{packageFolder}{separator}..{separator}net9.0{separator}refitter.dll"; TryLogCommandLine("Detected .NET 9 runtime. Using .NET 9 version of Refitter."); } else @@ -112,6 +112,10 @@ private List StartProcess(string file) return expectedFiles.Where(File.Exists).ToList(); } + /// + /// Gets the list of installed .NET runtimes by executing 'dotnet --list-runtimes' + /// + /// List of installed runtime strings private static List GetInstalledDotnetRuntimes() { var installedRuntimes = new List(); @@ -135,6 +139,11 @@ private static List GetInstalledDotnetRuntimes() return installedRuntimes; } + /// + /// Determines the expected output files that should be generated from a .refitter configuration file + /// + /// Path to the .refitter configuration file + /// List of expected output file paths private List GetExpectedGeneratedFiles(string refitterFilePath) { try @@ -150,10 +159,8 @@ private List GetExpectedGeneratedFiles(string refitterFilePath) var hasDependencyInjectionSettings = refitterContent.Contains("\"dependencyInjectionSettings\""); // If contractsOutputFolder is specified, automatically enable multiple files - if (!string.IsNullOrWhiteSpace(contractsOutputFolder)) - { - generateMultipleFiles = true; - } + bool hasContractsOutputFolder = !string.IsNullOrWhiteSpace(contractsOutputFolder); + generateMultipleFiles = generateMultipleFiles || hasContractsOutputFolder; // Default output filename based on .refitter filename if not specified if (string.IsNullOrWhiteSpace(outputFilename)) @@ -169,14 +176,14 @@ private List GetExpectedGeneratedFiles(string refitterFilePath) // Multiple files mode var baseOutputFolder = !string.IsNullOrWhiteSpace(outputFolder) ? outputFolder : "./Generated"; var interfaceOutputPath = Path.GetFullPath(Path.Combine(refitterFileDirectory, baseOutputFolder, "RefitInterfaces.cs")); - var contractsOutputPath = Path.GetFullPath(Path.Combine(refitterFileDirectory, - !string.IsNullOrWhiteSpace(contractsOutputFolder) ? contractsOutputFolder : baseOutputFolder, + var contractsOutputPath = Path.GetFullPath(Path.Combine(refitterFileDirectory, + !string.IsNullOrWhiteSpace(contractsOutputFolder) ? contractsOutputFolder : baseOutputFolder, "Contracts.cs")); var diOutputPath = Path.GetFullPath(Path.Combine(refitterFileDirectory, baseOutputFolder, "DependencyInjection.cs")); generatedFiles.Add(interfaceOutputPath); generatedFiles.Add(contractsOutputPath); - + // DependencyInjection.cs is only generated if dependencyInjectionSettings are specified if (hasDependencyInjectionSettings) { @@ -246,6 +253,12 @@ private void TryLogError(string text) } } + /// + /// Extracts a string value from a JSON property using regex pattern matching + /// + /// The JSON content to search + /// The name of the property to extract + /// The extracted string value, or null if not found private static string? ExtractJsonStringValue(string json, string propertyName) { // Simple regex to extract string values from JSON @@ -255,6 +268,12 @@ private void TryLogError(string text) return match.Success ? match.Groups[1].Value : null; } + /// + /// Extracts a boolean value from a JSON property using regex pattern matching + /// + /// The JSON content to search + /// The name of the property to extract + /// True if the property value is "true", false otherwise private static bool ExtractJsonBoolValue(string json, string propertyName) { // Simple regex to extract boolean values from JSON diff --git a/src/Refitter.SourceGenerator.Tests/CustomOutputFolderGeneratorTests.cs b/src/Refitter.SourceGenerator.Tests/CustomOutputFolderGeneratorTests.cs index 03f670aba..387e3724c 100644 --- a/src/Refitter.SourceGenerator.Tests/CustomOutputFolderGeneratorTests.cs +++ b/src/Refitter.SourceGenerator.Tests/CustomOutputFolderGeneratorTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refit; using Refitter.Tests.CustomGenerated; using Xunit; @@ -16,4 +16,4 @@ public void Can_Resolve_Refit_Interface() => RestService.For("https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/DelegatingHandlers.cs b/src/Refitter.SourceGenerator.Tests/DelegatingHandlers.cs index c5e6e6995..080a1353a 100644 --- a/src/Refitter.SourceGenerator.Tests/DelegatingHandlers.cs +++ b/src/Refitter.SourceGenerator.Tests/DelegatingHandlers.cs @@ -4,7 +4,7 @@ public class EmptyMessageHandler : DelegatingHandler { } - public class AnotherEmptyMessageHandler : DelegatingHandler + public class AnotherEmptyMessageHandler : DelegatingHandler { } -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/MultipleInterfaceByTagGeneratorTests.cs b/src/Refitter.SourceGenerator.Tests/MultipleInterfaceByTagGeneratorTests.cs index 3fb137ab4..d9c9442a9 100644 --- a/src/Refitter.SourceGenerator.Tests/MultipleInterfaceByTagGeneratorTests.cs +++ b/src/Refitter.SourceGenerator.Tests/MultipleInterfaceByTagGeneratorTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refit; using Refitter.Tests.AdditionalFiles.ByTag; using Xunit; @@ -25,4 +25,4 @@ public void Can_Resolve_Refit_Interface(Type type) => RestService.For(type, "https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/MultipleInterfaceGeneratorTests.cs b/src/Refitter.SourceGenerator.Tests/MultipleInterfaceGeneratorTests.cs index 9d3b2da56..83e380afc 100644 --- a/src/Refitter.SourceGenerator.Tests/MultipleInterfaceGeneratorTests.cs +++ b/src/Refitter.SourceGenerator.Tests/MultipleInterfaceGeneratorTests.cs @@ -57,4 +57,4 @@ public void Can_Resolve_Refit_Interface(Type type) => RestService.For(type, "https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/OptionalParametersGeneratorTest.cs b/src/Refitter.SourceGenerator.Tests/OptionalParametersGeneratorTest.cs index dc338152e..0ab440c43 100644 --- a/src/Refitter.SourceGenerator.Tests/OptionalParametersGeneratorTest.cs +++ b/src/Refitter.SourceGenerator.Tests/OptionalParametersGeneratorTest.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refit; using Refitter.Tests.AdditionalFiles.OptionalParameters; using Xunit; @@ -19,4 +19,4 @@ public void Can_Resolve_Refit_Interface() => RestService.For("https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/SingleInterfaceGeneratorTest.cs b/src/Refitter.SourceGenerator.Tests/SingleInterfaceGeneratorTest.cs index 7de77f853..462062695 100644 --- a/src/Refitter.SourceGenerator.Tests/SingleInterfaceGeneratorTest.cs +++ b/src/Refitter.SourceGenerator.Tests/SingleInterfaceGeneratorTest.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refit; using Refitter.Tests.AdditionalFiles.SingeInterface; using Xunit; @@ -19,4 +19,4 @@ public void Can_Resolve_Refit_Interface() => RestService.For("https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Build/BuildHelper.cs b/src/Refitter.Tests/Build/BuildHelper.cs index f98a99bba..915656804 100644 --- a/src/Refitter.Tests/Build/BuildHelper.cs +++ b/src/Refitter.Tests/Build/BuildHelper.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Diagnostics; using System.Text; namespace Refitter.Tests.Build; @@ -56,4 +56,4 @@ public class BuildFailedException(string Errors, string Output) : Exception($"Build failed{Crlf}Errors:{Crlf}{Errors}{Crlf}Output:{Crlf}{Output}") { private static readonly string Crlf = Environment.NewLine; -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs b/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs index 9d6ca2108..3ccd500cd 100644 --- a/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs +++ b/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs @@ -3,6 +3,7 @@ using Refitter.Core; using Refitter.Tests.Resources; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; @@ -19,9 +20,9 @@ public async Task Can_Generate_Default_DateType( { var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain(settings.CodeGeneratorSettings!.DateType); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain(settings.CodeGeneratorSettings!.DateType); } [Theory] @@ -35,9 +36,9 @@ public async Task Can_Generate_Default_DateTimeType( { var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain(settings.CodeGeneratorSettings!.DateTimeType); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain(settings.CodeGeneratorSettings!.DateTimeType); } [Theory] @@ -51,9 +52,9 @@ public async Task Can_Generate_Default_ArrayType( { var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain("ICollection<"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain("ICollection<"); } [Theory] @@ -68,9 +69,9 @@ public async Task Can_Generate_Custom_DateType( var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); settings.CodeGeneratorSettings!.DateType = "DateTime"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain("DateTime"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain("DateTime"); } [Theory] @@ -85,9 +86,9 @@ public async Task Can_Generate_Custom_DateTimeType( var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); settings.CodeGeneratorSettings!.DateTimeType = "DateTime"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain("DateTime"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain("DateTime"); } [Theory] @@ -102,9 +103,9 @@ public async Task Can_Generate_Custom_ArrayType( var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); settings.CodeGeneratorSettings!.ArrayType = "System.Collection.Generic.IList"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain("System.Collection.Generic.IList<"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain("System.Collection.Generic.IList<"); } [Theory] @@ -122,9 +123,9 @@ public async Task Can_Generate_With_ExcludedTypeNames( { "User" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().NotContain("class User"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().NotContain("class User"); } [Theory] @@ -137,10 +138,10 @@ public async Task Can_Generate_With_Immutable_Records(SampleOpenSpecifications v var settings = new RefitGeneratorSettings(); settings.ReturnIApiResponse = true; settings.CodeGeneratorSettings = new CodeGeneratorSettings { GenerateNativeRecords = true, }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("record Pet"); - generateCode.Should().Contain("Pet("); - generateCode.Should().Contain("[JsonConstructor]"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("record Pet"); + generatedCode.Should().Contain("Pet("); + generatedCode.Should().Contain("[JsonConstructor]"); } private static async Task GenerateCode( @@ -154,4 +155,4 @@ private static async Task GenerateCode( var sut = await RefitGenerator.CreateAsync(settings); return sut.Generate(); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/DependencyInjectionGeneratorWithMicrosoftHttpResilienceTests.cs b/src/Refitter.Tests/DependencyInjectionGeneratorWithMicrosoftHttpResilienceTests.cs index 4f0dfa61b..cc7bd1d14 100644 --- a/src/Refitter.Tests/DependencyInjectionGeneratorWithMicrosoftHttpResilienceTests.cs +++ b/src/Refitter.Tests/DependencyInjectionGeneratorWithMicrosoftHttpResilienceTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Xunit; @@ -97,4 +97,4 @@ public void Can_Generate_Without_BaseUrl() code.Should().Contain("Uri baseUrl"); code.Should().Contain(".ConfigureHttpClient(c => c.BaseAddress = baseUrl)"); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/DependencyInjectionGeneratorWithPollyTests.cs b/src/Refitter.Tests/DependencyInjectionGeneratorWithPollyTests.cs index 0e54a7662..dadd4608d 100644 --- a/src/Refitter.Tests/DependencyInjectionGeneratorWithPollyTests.cs +++ b/src/Refitter.Tests/DependencyInjectionGeneratorWithPollyTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Xunit; @@ -101,4 +101,4 @@ public void Can_Generate_Without_BaseUrl() code.Should().Contain("Uri baseUrl"); code.Should().Contain(".ConfigureHttpClient(c => c.BaseAddress = baseUrl)"); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs b/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs index c55c64cfb..95773db1c 100644 --- a/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs +++ b/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -62,16 +63,16 @@ public class AdditionalNamespacesTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -79,13 +80,13 @@ public async Task Can_Build_Generated_Code() [Fact] public async Task Generated_Types_Contains_Additional_Namespaces() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("using System.Diagnostics.CodeAnalysis;"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("using System.Diagnostics.CodeAnalysis;"); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var foo = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -93,17 +94,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(foo); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/ApizrTests.cs b/src/Refitter.Tests/Examples/ApizrTests.cs index afff6ea30..c820c42b6 100644 --- a/src/Refitter.Tests/Examples/ApizrTests.cs +++ b/src/Refitter.Tests/Examples/ApizrTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; +using Refitter.Tests.TestUtilities; using Xunit; namespace Refitter.Tests.Examples; @@ -107,15 +108,15 @@ public class ApizrTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } - + [Fact] public async Task Generates_Nullable_Directive() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("#nullable"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("#nullable"); } [Theory] @@ -124,78 +125,78 @@ public async Task Generates_Nullable_Directive() [InlineData("description")] public async Task Generates_Nullable_Parameters(string parameterName) { - string generateCode = await GenerateCode(); - generateCode.Should().Contain($"string? {parameterName}"); - generateCode.Should().NotContain($"string? {parameterName} = default"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain($"string? {parameterName}"); + generatedCode.Should().NotContain($"string? {parameterName} = default"); } [Fact] public async Task DoesNot_Generate_CancellationToken() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("CancellationToken cancellationToken"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("CancellationToken cancellationToken"); } [Fact] public async Task Generates_RequestOptions_Last() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[RequestOptions] IApizrRequestOptions options);"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[RequestOptions] IApizrRequestOptions options);"); } [Fact] public async Task Generates_An_Overload_Without_Optional_Parameters() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string id, [RequestOptions] IApizrRequestOptions options);"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string id, [RequestOptions] IApizrRequestOptions options);"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters() { - string generateCode = await GenerateCode(true); + string generatedCode = await GenerateCode(true); // All nullable query params ending with a nullable query parameter - generateCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); - generateCode.Should().Contain("public record GetFooDetailsQueryParams"); + generatedCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); + generatedCode.Should().Contain("public record GetFooDetailsQueryParams"); // Some required query params ending with a non-nullable query parameter with injected params - generateCode.Should().Contain("string id, [Query] GetBarDetailsQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);"); - generateCode.Should().Contain("public record GetBarDetailsQueryParams"); - generateCode.Should().Contain("public GetBarDetailsQueryParams(string title, string description)"); - generateCode.Should().Contain("Title = title;"); - generateCode.Should().Contain("Description = description;"); + generatedCode.Should().Contain("string id, [Query] GetBarDetailsQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);"); + generatedCode.Should().Contain("public record GetBarDetailsQueryParams"); + generatedCode.Should().Contain("public GetBarDetailsQueryParams(string title, string description)"); + generatedCode.Should().Contain("Title = title;"); + generatedCode.Should().Contain("Description = description;"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters_ByTag() { - string generateCode = await GenerateCode(true, MultipleInterfaces.ByTag); - generateCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); - generateCode.Should().Contain("public record GetFooDetailsQueryParams"); + string generatedCode = await GenerateCode(true, MultipleInterfaces.ByTag); + generatedCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); + generatedCode.Should().Contain("public record GetFooDetailsQueryParams"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters_ByEndpoint() { - string generateCode = await GenerateCode(true, MultipleInterfaces.ByEndpoint); - generateCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); - generateCode.Should().Contain("public record GetFooDetailsQueryParams"); + string generatedCode = await GenerateCode(true, MultipleInterfaces.ByEndpoint); + generatedCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); + generatedCode.Should().Contain("public record GetFooDetailsQueryParams"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode(bool useDynamicQuerystringParameters = false, MultipleInterfaces multipleInterfaces = MultipleInterfaces.Unset) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -211,17 +212,7 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; - } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; + var generatedCode = sut.Generate(); + return generatedCode; } } diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs index fae55630f..fe71d97bf 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -48,49 +49,40 @@ public class ArrayTypeReturnMultipleInterfacesByEndpointTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Returns_IList() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("IList"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("IList"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings - { + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); + var settings = new RefitGeneratorSettings + { OpenApiPath = swaggerFile, MultipleInterfaces = MultipleInterfaces.ByEndpoint, CodeGeneratorSettings = new CodeGeneratorSettings { ArrayType = "System.Collections.Generic.IList" } }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs index 383f27a23..4d2706313 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -48,49 +49,40 @@ public class ArrayTypeReturnMultipleInterfacesByTagTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Returns_IList() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("IList"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("IList"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings - { + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); + var settings = new RefitGeneratorSettings + { OpenApiPath = swaggerFile, MultipleInterfaces = MultipleInterfaces.ByTag, CodeGeneratorSettings = new CodeGeneratorSettings { ArrayType = "System.Collections.Generic.IList" } }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs index fb6764dff..a3a6b9381 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -48,48 +49,39 @@ public class ArrayTypeReturnTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Returns_IList() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("IList"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("IList"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings - { + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); + var settings = new RefitGeneratorSettings + { OpenApiPath = swaggerFile, CodeGeneratorSettings = new CodeGeneratorSettings { ArrayType = "System.Collections.Generic.IList" } }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs b/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs index 7d62c8e69..8b7dfe061 100644 --- a/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs +++ b/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -43,8 +44,8 @@ public class CaseSensitiveParametersTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -53,37 +54,28 @@ public async Task Can_Generate_Code() [InlineData("Description")] public async Task Generates_AliasAs_For_Parameters(string parameterName) { - string generateCode = await GenerateCode(); - generateCode.Should().Contain($"AliasAs(\"{parameterName}\")"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain($"AliasAs(\"{parameterName}\")"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/CollectionFormatTests.cs b/src/Refitter.Tests/Examples/CollectionFormatTests.cs index 831842bf8..c2a3d7a2e 100644 --- a/src/Refitter.Tests/Examples/CollectionFormatTests.cs +++ b/src/Refitter.Tests/Examples/CollectionFormatTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -63,16 +64,16 @@ public class CollectionFormatTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -85,20 +86,20 @@ public async Task Can_Build_Generated_Code() [InlineData(CollectionFormat.Pipes, "Query(CollectionFormat.Pipes)")] public async Task Generated_Code_Contains_Expected_Collection_Format(CollectionFormat format, string expectedAttribute) { - string generateCode = await GenerateCode(format); - + string generatedCode = await GenerateCode(format); + using (new AssertionScope()) { - generateCode.Should().Contain(expectedAttribute); + generatedCode.Should().Contain(expectedAttribute); // Check both array parameters use the same format - generateCode.Should().Contain($"[{expectedAttribute}] IEnumerable ids"); - generateCode.Should().Contain($"[{expectedAttribute}] IEnumerable tags"); + generatedCode.Should().Contain($"[{expectedAttribute}] IEnumerable ids"); + generatedCode.Should().Contain($"[{expectedAttribute}] IEnumerable tags"); } } private static async Task GenerateCode(CollectionFormat format = CollectionFormat.Multi) { - string swaggerFile = await CreateSwaggerFile(OpenApiSpec); + string swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); try { var settings = new RefitGeneratorSettings @@ -124,13 +125,4 @@ private static async Task GenerateCode(CollectionFormat format = Collect } } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.json"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/ColonsInPathTests.cs b/src/Refitter.Tests/Examples/ColonsInPathTests.cs index 4f2f21dd3..c8e835800 100644 --- a/src/Refitter.Tests/Examples/ColonsInPathTests.cs +++ b/src/Refitter.Tests/Examples/ColonsInPathTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -46,45 +47,36 @@ their ids. [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Path_Without_Colons() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().NotContain("/:"); + generatedCode.Should().NotContain("/:"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs b/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs index a60742655..3ed314754 100644 --- a/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs +++ b/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -74,44 +75,44 @@ public class CustomCodeGeneratorWithDateTimeTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task GeneratedCode_Contains_TimeSpan_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Fact] public async Task GeneratedCode_Contains_DateTime_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("System.DateTime"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("System.DateTime"); } [Fact] public async Task GeneratedCode_NotContains_DateTimeOffset_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("System.DateTimeOffset"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("System.DateTimeOffset"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -122,17 +123,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.json"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/CustomDateFormatTests.cs b/src/Refitter.Tests/Examples/CustomDateFormatTests.cs index 0f23a145b..4d85b77f3 100644 --- a/src/Refitter.Tests/Examples/CustomDateFormatTests.cs +++ b/src/Refitter.Tests/Examples/CustomDateFormatTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -75,37 +76,37 @@ public class CustomDateFormatTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task GeneratedCode_Contains_Date_Format_String() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-ddThh:mm:ssZ"")] "); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-ddThh:mm:ssZ"")] "); } [Fact] public async Task GeneratedCode_Contains_TimeSpan_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -116,17 +117,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.json"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/DefaultResponseObjectTests.cs b/src/Refitter.Tests/Examples/DefaultResponseObjectTests.cs index a4f88e024..324d5c1df 100644 --- a/src/Refitter.Tests/Examples/DefaultResponseObjectTests.cs +++ b/src/Refitter.Tests/Examples/DefaultResponseObjectTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -165,7 +166,7 @@ public async Task Should_Generate_Category_Contract() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -177,13 +178,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs b/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs index 427dc9c7b..5fe6d3a6d 100644 --- a/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -60,44 +61,35 @@ public class DeprecatedEndpointTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_Contain_Obsolete_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[System.Obsolete]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[System.Obsolete]"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs index 6acb3a8c0..ca7089839 100644 --- a/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -60,44 +61,44 @@ public class DeprecatedEndpointsSkippedTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_NotContain_Obsolete_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("[System.Obsolete]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("[System.Obsolete]"); } [Fact] public async Task Should_NotContain_GetAllBars() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetAllBars"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetAllBars"); } [Fact] public async Task Should_NotContain_GetBarDetails() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetBarDetails"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetBarDetails"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -105,17 +106,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs index 76f82d3be..f474683d8 100644 --- a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -60,44 +61,44 @@ public class DeprecatedMultipleInterfaceByTagEndpointsSkippedTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_NotContain_Obsolete_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("[System.Obsolete]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("[System.Obsolete]"); } [Fact] public async Task Should_NotContain_GetAllBars() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetAllBarsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetAllBarsEndpoint"); } [Fact] public async Task Should_NotContain_GetBarDetails() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetBarDetailsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetBarDetailsEndpoint"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -106,17 +107,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs index 5ccd36c71..e5d9831f2 100644 --- a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -60,44 +61,44 @@ public class DeprecatedMultipleInterfaceEndpointsSkippedTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_NotContain_Obsolete_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("[System.Obsolete]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("[System.Obsolete]"); } [Fact] public async Task Should_NotContain_GetAllBars() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetAllBarsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetAllBarsEndpoint"); } [Fact] public async Task Should_NotContain_GetBarDetails() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetBarDetailsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetBarDetailsEndpoint"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -106,17 +107,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/FilterByPathTests.cs b/src/Refitter.Tests/Examples/FilterByPathTests.cs index aa963974e..ec7029f66 100644 --- a/src/Refitter.Tests/Examples/FilterByPathTests.cs +++ b/src/Refitter.Tests/Examples/FilterByPathTests.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -58,33 +59,33 @@ public class FilterByPathTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Methods() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("\"/bar\""); - generateCode.Should().NotContain("\"/bar/{id}\""); - generateCode.Should().Contain("\"/foo\""); - generateCode.Should().Contain("\"/foo/{id}\""); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("\"/bar\""); + generatedCode.Should().NotContain("\"/bar/{id}\""); + generatedCode.Should().Contain("\"/foo\""); + generatedCode.Should().Contain("\"/foo/{id}\""); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -92,17 +93,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/FilterByTagsTests.cs b/src/Refitter.Tests/Examples/FilterByTagsTests.cs index 13ea12678..bff6e88f9 100644 --- a/src/Refitter.Tests/Examples/FilterByTagsTests.cs +++ b/src/Refitter.Tests/Examples/FilterByTagsTests.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -67,33 +68,33 @@ public class FilterByTagsTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_BarAndBaz_Methods() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("\"/bar\""); - generateCode.Should().Contain("\"/bar/{id}\""); - generateCode.Should().Contain("\"/baz\""); - generateCode.Should().NotContain("/foo"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("\"/bar\""); + generatedCode.Should().Contain("\"/bar/{id}\""); + generatedCode.Should().Contain("\"/baz\""); + generatedCode.Should().NotContain("/foo"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -101,17 +102,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs b/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs index 60fa51adb..88af9bdf7 100644 --- a/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs +++ b/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -57,71 +58,61 @@ public class IncludeInheritanceHierarchyTests additionalProperties: false "; - [Theory] - [InlineData(true)] - [InlineData(false)] - public async Task Can_Generate_Code(bool includeHierarchy) - { - string generateCode = await GenerateCode(includeHierarchy); - generateCode.Should().NotBeNullOrWhiteSpace(); - } - - [Fact] - public async Task Removes_Unreferenced_Schema() - { - string generateCode = await GenerateCode(includeHierarchy: false); - generateCode.Should().NotContain("Anonymous"); + [Theory] + [InlineData(true)] + [InlineData(false)] + public async Task Can_Generate_Code(bool includeHierarchy) + { + string generatedCode = await GenerateCode(includeHierarchy); + generatedCode.Should().NotBeNullOrWhiteSpace(); + } - generateCode.Should().NotContain("class B"); - generateCode.Should().Contain("class A"); - } + [Fact] + public async Task Removes_Unreferenced_Schema() + { + string generatedCode = await GenerateCode(includeHierarchy: false); + generatedCode.Should().NotContain("Anonymous"); - [Fact] - public async Task Keeps_All_Union_Cases_Schema() - { - string generateCode = await GenerateCode(includeHierarchy: true); - generateCode.Should().NotContain("Anonymous"); + generatedCode.Should().NotContain("class B"); + generatedCode.Should().Contain("class A"); + } - generateCode.Should().Contain("class B"); - generateCode.Should().Contain("class A"); - } + [Fact] + public async Task Keeps_All_Union_Cases_Schema() + { + string generatedCode = await GenerateCode(includeHierarchy: true); + generatedCode.Should().NotContain("Anonymous"); - [Theory] - [InlineData(true)] - [InlineData(false)] - public async Task Can_Build_Generated_Code(bool includeHierarchy) - { - string generateCode = await GenerateCode(includeHierarchy); - BuildHelper - .BuildCSharp(generateCode) - .Should() - .BeTrue(); - } + generatedCode.Should().Contain("class B"); + generatedCode.Should().Contain("class A"); + } - private static async Task GenerateCode(bool includeHierarchy) - { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings + [Theory] + [InlineData(true)] + [InlineData(false)] + public async Task Can_Build_Generated_Code(bool includeHierarchy) { - OpenApiPath = swaggerFile, - TrimUnusedSchema = true, - IncludeInheritanceHierarchy = includeHierarchy, - UsePolymorphicSerialization = true, // use System.Text.Json attributes - }; + string generatedCode = await GenerateCode(includeHierarchy); + BuildHelper + .BuildCSharp(generatedCode) + .Should() + .BeTrue(); + } - var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; - } + private static async Task GenerateCode(bool includeHierarchy) + { + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); + var settings = new RefitGeneratorSettings + { + OpenApiPath = swaggerFile, + TrimUnusedSchema = true, + IncludeInheritanceHierarchy = includeHierarchy, + UsePolymorphicSerialization = true, // use System.Text.Json attributes + }; - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; + var sut = await RefitGenerator.CreateAsync(settings); + var generatedCode = sut.Generate(); + return generatedCode; + } } } -} diff --git a/src/Refitter.Tests/Examples/KebabCaseTests.cs b/src/Refitter.Tests/Examples/KebabCaseTests.cs index 3657ee419..218245655 100644 --- a/src/Refitter.Tests/Examples/KebabCaseTests.cs +++ b/src/Refitter.Tests/Examples/KebabCaseTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -53,44 +54,35 @@ public class KebabCaseTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Replaces_KababCase_Parameters_With_PascalCase() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string job_id"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string job_id"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs b/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs index 4c058f2d5..51e89c551 100644 --- a/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs +++ b/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs @@ -1,6 +1,7 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; +using Refitter.Tests.TestUtilities; using Xunit; namespace Refitter.Tests.Examples; @@ -116,49 +117,39 @@ public class KeepSchemaPatternsTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Keeps_Unreferenced_Schema() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); - generateCode.Should().NotContain("class UserComponent2"); - generateCode.Should().Contain("class UserComponent"); - generateCode.Should().Contain("class SomeComponent"); - generateCode.Should().Contain("class Component"); - generateCode.Should().Contain("class Metadata"); + generatedCode.Should().NotContain("class UserComponent2"); + generatedCode.Should().Contain("class UserComponent"); + generatedCode.Should().Contain("class SomeComponent"); + generatedCode.Should().Contain("class Component"); + generatedCode.Should().Contain("class Metadata"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings {OpenApiPath = swaggerFile, TrimUnusedSchema = true, KeepSchemaPatterns = new[] {"^UserComponent$"},}; + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); + var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, TrimUnusedSchema = true, KeepSchemaPatterns = new[] { "^UserComponent$" }, }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs b/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs index c34439866..f2bd20363 100644 --- a/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs +++ b/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; @@ -99,16 +100,16 @@ public class MultiPartFormDataTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -116,35 +117,26 @@ public async Task Can_Build_Generated_Code() [Fact] public async Task Generated_Code_Contains_MultiPart_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[Multipart]"); - generateCode.Should().NotContain("Content-Type: multipart/form-data"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[Multipart]"); + generatedCode.Should().NotContain("Content-Type: multipart/form-data"); } [Fact] public async Task Generated_Code_Contains_Correct_Parameters() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string name, StreamPart animalClassFile, StreamPart animalCrowdFile"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string name, StreamPart animalClassFile, StreamPart animalCrowdFile"); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.json"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs index bc79f5a24..9a66d72db 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -106,60 +107,60 @@ public class MultipleInterfacesByEndpointTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_IGetAllFooEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IGetAllFoosEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IGetAllFoosEndpoint"); } [Fact] public async Task Generates_IGetFooDetailsEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IGetFooDetailsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IGetFooDetailsEndpoint"); } [Fact] public async Task Generates_IGetAllBarEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IGetAllBarsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IGetAllBarsEndpoint"); } [Fact] public async Task Generates_IGetBarDetailsEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IGetBarDetailsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IGetBarDetailsEndpoint"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters() { - string generateCode = await GenerateCode(true); - generateCode.Should().Contain("GetFooDetailsQueryParams"); - generateCode.Should().NotContain("GetAllFoosQueryParams"); - generateCode.Should().Contain("GetBarDetailsQueryParams"); + string generatedCode = await GenerateCode(true); + generatedCode.Should().Contain("GetFooDetailsQueryParams"); + generatedCode.Should().NotContain("GetAllFoosQueryParams"); + generatedCode.Should().Contain("GetBarDetailsQueryParams"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode(bool useDynamicQuerystringParameters = false) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -169,17 +170,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs index ef313337c..0119d160e 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -40,44 +41,44 @@ public class MultipleInterfacesByEndpointWithIoCTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_IDeleteFooEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IDeleteFooEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IDeleteFooEndpoint"); } [Fact] public async Task Generates_IDeleteBarEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IDeleteBarEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IDeleteBarEndpoint"); } [Fact] public async Task Generates_IServiceCollectionExtensions() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("static partial class IServiceCollectionExtensions"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("static partial class IServiceCollectionExtensions"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -91,17 +92,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs index e6ce8694f..b95057104 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -117,46 +118,46 @@ public class MultipleInterfacesByTagsTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Foo_Interface() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IFooApi"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IFooApi"); } [Fact] public async Task Generates_Bar_Interface() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IBarApi"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IBarApi"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters() { - string generateCode = await GenerateCode(true); - generateCode.Should().Contain("GetFooDetailsQueryParams"); - generateCode.Should().Contain("GetAllFoosQueryParams"); - generateCode.Should().Contain("GetBarDetailsQueryParams"); + string generatedCode = await GenerateCode(true); + generatedCode.Should().Contain("GetFooDetailsQueryParams"); + generatedCode.Should().Contain("GetAllFoosQueryParams"); + generatedCode.Should().Contain("GetBarDetailsQueryParams"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode(bool useDynamicQuerystringParameters = false) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -166,17 +167,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs b/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs index 4f5cc4c13..700c0df91 100644 --- a/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs +++ b/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; +using Refitter.Tests.TestUtilities; using Xunit; namespace Refitter.Tests.Examples; @@ -59,44 +60,34 @@ public class MultipleSuccessResponsesTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Has_No_Duplicate_Accept_Headers() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("[Headers(\"Accept: application/json, application/json\")]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("[Headers(\"Accept: application/json, application/json\")]"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; - } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; + var generatedCode = sut.Generate(); + return generatedCode; } } diff --git a/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs b/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs index b2a89baf1..f74cc14ca 100644 --- a/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs +++ b/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -56,46 +57,37 @@ their ids. [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_IApiResponse_For_NoContent() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Task"); + generatedCode.Should().Contain("Task"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; settings.ReturnIApiResponse = true; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs b/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs index efe7a7899..624719a9c 100644 --- a/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs +++ b/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -45,37 +46,37 @@ public class OctetStreamBodyTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } - + [Fact] public async Task Generates_Pet_Interface() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IPetApi"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IPetApi"); } - + [Fact] public async Task Generates_StreamPart_Parameter() { - string generateCode = await GenerateCode(true); - generateCode.Should().Contain("long petId, [Query] string additionalMetadata, StreamPart body"); + string generatedCode = await GenerateCode(true); + generatedCode.Should().Contain("long petId, [Query] string additionalMetadata, StreamPart body"); } - + [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode(bool useDynamicQuerystringParameters = false) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -85,17 +86,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/OpenApiUrlTests.cs b/src/Refitter.Tests/Examples/OpenApiUrlTests.cs index 02a63ed00..6e030987c 100644 --- a/src/Refitter.Tests/Examples/OpenApiUrlTests.cs +++ b/src/Refitter.Tests/Examples/OpenApiUrlTests.cs @@ -1,4 +1,5 @@ -#if !DEBUG +#if !DEBUG +using Refitter.Tests.TestUtilities; using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; @@ -21,9 +22,9 @@ public async Task Can_Build_Generated_Code_From_OpenApi_v3_Url_Json(string url) { var settings = new RefitGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); + var generatedCode = sut.Generate(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(url); } @@ -38,11 +39,11 @@ public async Task Can_Build_Generated_Code_From_OpenApi_v3_Url_Yaml(string url) { var settings = new RefitGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); + var generatedCode = sut.Generate(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(url); } +#endif } -#endif \ No newline at end of file diff --git a/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs b/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs index 406eeda07..09e3e189c 100644 --- a/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs +++ b/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -32,47 +33,38 @@ public class OperationIdWithInvalidFirstCharTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Adds_Underscore_At_Beginning_With_Ivalid_Methode_Name() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("_2fa"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("_2fa"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs b/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs index 3b75e2201..dc14a75f6 100644 --- a/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs +++ b/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -31,44 +32,35 @@ public class OperationIdWithSpacesTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Replaces_KababCase_Parameters_With_PascalCase() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string job_id"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string job_id"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs b/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs index 54f962589..d17543fe4 100644 --- a/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs +++ b/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -48,15 +49,15 @@ public class OptionalNullableParametersTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } - + [Fact] public async Task Generates_Nullable_Directive() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("#nullable"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("#nullable"); } [Theory] @@ -65,37 +66,37 @@ public async Task Generates_Nullable_Directive() [InlineData("description")] public async Task Generates_Nullable_Parameters(string parameterName) { - string generateCode = await GenerateCode(); - generateCode.Should().Contain($"string? {parameterName} = default"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain($"string? {parameterName} = default"); } [Fact] public async Task Generates_CancellationToken_Last() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("CancellationToken cancellationToken = default);"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("CancellationToken cancellationToken = default);"); } [Fact] public async Task Generates_DynamicQuerystring_Param() { - string generateCode = await GenerateCode(true); - generateCode.Should().Contain("string id, [Query] UpdateJobDetailsQueryParams? queryParams = default, CancellationToken cancellationToken = default);"); + string generatedCode = await GenerateCode(true); + generatedCode.Should().Contain("string id, [Query] UpdateJobDetailsQueryParams? queryParams = default, CancellationToken cancellationToken = default);"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode(bool useDynamicQuerystringParameters = false) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -105,17 +106,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/PathParametersTests.cs b/src/Refitter.Tests/Examples/PathParametersTests.cs index 63bd17ae6..70435f186 100644 --- a/src/Refitter.Tests/Examples/PathParametersTests.cs +++ b/src/Refitter.Tests/Examples/PathParametersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -56,46 +57,37 @@ their ids. [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Path_Parameters() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Guid orderId"); - generateCode.Should().Contain("Guid orderItemId"); + generatedCode.Should().Contain("Guid orderId"); + generatedCode.Should().Contain("Guid orderItemId"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/PercentageCharacterTests.cs b/src/Refitter.Tests/Examples/PercentageCharacterTests.cs index 14dd278cf..aa1172e7b 100644 --- a/src/Refitter.Tests/Examples/PercentageCharacterTests.cs +++ b/src/Refitter.Tests/Examples/PercentageCharacterTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; +using Refitter.Tests.TestUtilities; using Xunit; namespace Refitter.Tests.Examples; @@ -48,44 +49,34 @@ public class PercentageCharacterTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Replaces_Percentage_With_PascalCase() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string PercentOfSomething"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string PercentOfSomething"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; - } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; + var generatedCode = sut.Generate(); + return generatedCode; } } diff --git a/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs b/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs index a0491f083..d92e955e5 100644 --- a/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs +++ b/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -62,37 +63,28 @@ public class PoorOperationIdsTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var foo = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(foo); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs b/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs index d5d1c10ef..9cc823aeb 100644 --- a/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs +++ b/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -30,53 +31,44 @@ public class RequestResponseHeadersTests [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_ContentType_Header_Attribute() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Content-Type: application/json"); + generatedCode.Should().Contain("Content-Type: application/json"); } [Fact] public async Task Generates_Accept_Header_Attribute() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Accept: application/json"); + generatedCode.Should().Contain("Accept: application/json"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, AddAcceptHeaders = true }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ResponseHeadersTests.cs b/src/Refitter.Tests/Examples/ResponseHeadersTests.cs index 0d8bd347b..4ea1ac71a 100644 --- a/src/Refitter.Tests/Examples/ResponseHeadersTests.cs +++ b/src/Refitter.Tests/Examples/ResponseHeadersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -24,53 +25,44 @@ public class ResponseHeadersTests [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_Not_Generate_ContentType_Header_Attribute() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().NotContain("Content-Type: \")]"); + generatedCode.Should().NotContain("Content-Type: \")]"); } [Fact] public async Task Generates_Accept_Header_Attribute() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Accept: application/json"); + generatedCode.Should().Contain("Accept: application/json"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, AddAcceptHeaders = true }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs b/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs index 220ffa85c..e971e63b2 100644 --- a/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs +++ b/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -36,44 +37,35 @@ Something something >> << [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Symbols_In_Description_Are_Escaped() { - var generateCode = await GenerateCode(); - generateCode.Should().Contain("<test> >> << </test>"); + var generatedCode = await GenerateCode(); + generatedCode.Should().Contain("<test> >> << </test>"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs b/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs index cbe33019a..ed35eed0d 100644 --- a/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs +++ b/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -40,37 +41,28 @@ public class SystemPropertyInContractTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs b/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs index 592575f72..06c365cb9 100644 --- a/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs +++ b/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -189,43 +190,43 @@ public class TrimUnusedSchemaTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Removes_Unreferenced_Schema() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("class Warehouse"); - generateCode.Should().Contain("class WarehouseResponse"); - generateCode.Should().Contain("class SomeComponent"); - generateCode.Should().Contain("class Component"); - generateCode.Should().Contain("class ProblemDetails"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("class Warehouse"); + generatedCode.Should().Contain("class WarehouseResponse"); + generatedCode.Should().Contain("class SomeComponent"); + generatedCode.Should().Contain("class Component"); + generatedCode.Should().Contain("class ProblemDetails"); // Schema is manipulated to return ARRAY of WarehouseResponse // previously (<= 0.9.9.0) this wasn't accomodated. // // For whatever reason NSwag OpenApi-Schema doesn't contain Schema for "Items" // Instead it's inside "Item" - generateCode.Should().Contain("Task> CreateWarehouse([Query] string token, [Body] Warehouse "); + generatedCode.Should().Contain("Task> CreateWarehouse([Query] string token, [Body] Warehouse "); - generateCode.Should().NotContain("class UserComponent"); + generatedCode.Should().NotContain("class UserComponent"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -233,17 +234,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs b/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs index 8b494e97f..6010e01b1 100644 --- a/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs +++ b/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -53,44 +54,35 @@ public class HandleUnderscoresTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Replaces_Underscore_Properties_With_PascalCase() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("DateTimeOffset StartDate"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("DateTimeOffset StartDate"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs b/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs index b9aa984fd..23ced3ab5 100644 --- a/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs +++ b/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs @@ -1,4 +1,5 @@ using AutoFixture.Xunit2; +using Refitter.Tests.TestUtilities; using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; @@ -49,54 +50,54 @@ public class UseIsoDateFormatTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task GeneratedCode_Contains_Date_Format_String() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_from"); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_to"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_from"); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_to"); } [Fact] public async Task GeneratedCode_NotContains_DateTime_Format_String() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); - generateCode.Should().NotContain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset time_datetime"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); + generatedCode.Should().NotContain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset time_datetime"); } [Fact] public async Task GeneratedCode_Contains_TimeSpan_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Fact] public async Task GeneratedCode_Contains_Date_Format_String_With_Empty_Settings() { - string generateCode = await GenerateCode(new CodeGeneratorSettings()); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_from"); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_to"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings()); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_from"); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_to"); } [Fact] public async Task GeneratedCode_NotContains_DateTime_Format_String_With_Empty_Settings() { - string generateCode = await GenerateCode(new CodeGeneratorSettings()); - generateCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); - generateCode.Should().NotContain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset time_datetime"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings()); + generatedCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); + generatedCode.Should().NotContain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset time_datetime"); } [Fact] public async Task GeneratedCode_Contains_TimeSpan_Parameter_With_Empty_Settings() { - string generateCode = await GenerateCode(new CodeGeneratorSettings()); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings()); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Theory, AutoData] @@ -104,44 +105,44 @@ public async Task GeneratedCode_Contains_Date_Format_String_With_Settings( string dateFormat, string dateTimeFormat) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( new CodeGeneratorSettings { DateFormat = dateFormat, DateTimeFormat = dateTimeFormat }); - generateCode.Should().Contain(@$"[Query(Format = ""{dateFormat}"")] System.DateTimeOffset valid_from"); - generateCode.Should().Contain(@$"[Query(Format = ""{dateFormat}"")] System.DateTimeOffset valid_to"); - generateCode.Should().Contain(@$"[Query(Format = ""{dateTimeFormat}"")] System.DateTimeOffset test_datetime"); - generateCode.Should().Contain(@$"[Query] System.TimeSpan test_time"); + generatedCode.Should().Contain(@$"[Query(Format = ""{dateFormat}"")] System.DateTimeOffset valid_from"); + generatedCode.Should().Contain(@$"[Query(Format = ""{dateFormat}"")] System.DateTimeOffset valid_to"); + generatedCode.Should().Contain(@$"[Query(Format = ""{dateTimeFormat}"")] System.DateTimeOffset test_datetime"); + generatedCode.Should().Contain(@$"[Query] System.TimeSpan test_time"); } [Theory, AutoData] public async Task GeneratedCode_NotContains_DateTime_Format_String_With_Settings(string format) { - string generateCode = await GenerateCode(new CodeGeneratorSettings { DateFormat = format }); - generateCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); - generateCode.Should().NotContain(@$"[Query(Format = ""{format}"")] System.DateTimeOffset time_datetime"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings { DateFormat = format }); + generatedCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); + generatedCode.Should().NotContain(@$"[Query(Format = ""{format}"")] System.DateTimeOffset time_datetime"); } [Theory, AutoData] public async Task GeneratedCode_Contains_TimeSpan_Parameter_With_Settings(string format) { - string generateCode = await GenerateCode(new CodeGeneratorSettings { DateFormat = format }); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings { DateFormat = format }); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); - BuildHelper.BuildCSharp(generateCode).Should().BeTrue(); + string generatedCode = await GenerateCode(); + BuildHelper.BuildCSharp(generatedCode).Should().BeTrue(); } private static async Task GenerateCode(CodeGeneratorSettings? generatorSettings = null) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -150,17 +151,8 @@ private static async Task GenerateCode(CodeGeneratorSettings? generatorS }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yaml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs b/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs index 8df8d6ce2..47909fed9 100644 --- a/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs +++ b/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -189,39 +190,39 @@ public class UsePolymorphicSerializationTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Use_Polymorphic_Serialization() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); - generateCode.Should().NotContain("JsonInheritanceConverter"); - generateCode.Should().NotContain("JsonInheritanceAttribute"); + generatedCode.Should().NotContain("JsonInheritanceConverter"); + generatedCode.Should().NotContain("JsonInheritanceAttribute"); - generateCode.Should().Contain("[JsonPolymorphic(TypeDiscriminatorPropertyName = \"$type\", UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType, IgnoreUnrecognizedTypeDiscriminators = true)]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(Warehouse), typeDiscriminator: \"Warehouse\")]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(WarehouseResponse), typeDiscriminator: \"WarehouseResponse\")]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(LoadingAddress), typeDiscriminator: \"LoadingAddress\")]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(UserComponent), typeDiscriminator: \"UserComponent\")]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(UserComponent2), typeDiscriminator: \"UserComponent2\")]"); + generatedCode.Should().Contain("[JsonPolymorphic(TypeDiscriminatorPropertyName = \"$type\", UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType, IgnoreUnrecognizedTypeDiscriminators = true)]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(Warehouse), typeDiscriminator: \"Warehouse\")]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(WarehouseResponse), typeDiscriminator: \"WarehouseResponse\")]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(LoadingAddress), typeDiscriminator: \"LoadingAddress\")]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(UserComponent), typeDiscriminator: \"UserComponent\")]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(UserComponent2), typeDiscriminator: \"UserComponent2\")]"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -229,17 +230,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/IllegalSymbolsTests.cs b/src/Refitter.Tests/IllegalSymbolsTests.cs index f8d1f74e9..98650739d 100644 --- a/src/Refitter.Tests/IllegalSymbolsTests.cs +++ b/src/Refitter.Tests/IllegalSymbolsTests.cs @@ -1,8 +1,9 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Refitter.Tests.Resources; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; @@ -11,9 +12,9 @@ public class IllegalSymbolsTests [Fact] public async Task Illegal_Symbols_In_Paths__Should_Build_Successfully() { - var generateCode = await GenerateCode(EmbeddedResources.SwaggerIllegalPathsJsonV3); + var generatedCode = await GenerateCode(EmbeddedResources.SwaggerIllegalPathsJsonV3); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -21,9 +22,9 @@ public async Task Illegal_Symbols_In_Paths__Should_Build_Successfully() [Fact] public async Task Illegal_Symbols_In_Title__Should_Build_Successfully() { - var generateCode = await GenerateCode(EmbeddedResources.SwaggerIllegalSymbolsInTitleJsonV3); + var generatedCode = await GenerateCode(EmbeddedResources.SwaggerIllegalSymbolsInTitleJsonV3); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -46,4 +47,4 @@ private static async Task GenerateCode( return sut.Generate(); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/OpenApiDocumentFactoryTests.cs b/src/Refitter.Tests/OpenApiDocumentFactoryTests.cs index c2787d4c3..720f5a39c 100644 --- a/src/Refitter.Tests/OpenApiDocumentFactoryTests.cs +++ b/src/Refitter.Tests/OpenApiDocumentFactoryTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Resources; using Xunit; @@ -17,7 +17,7 @@ public async Task Create_From_Uri_Returns_NotNull(string url) .Should() .NotBeNull(); } - + [Theory] [InlineData(SampleOpenSpecifications.SwaggerPetstoreJsonV3, "SwaggerPetstore.json")] [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV3, "SwaggerPetstore.yaml")] @@ -31,4 +31,4 @@ public async Task Create_From_File_Returns_NotNull(SampleOpenSpecifications vers .Should() .NotBeNull(); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/PathParametersWithUrlTests.cs b/src/Refitter.Tests/PathParametersWithUrlTests.cs index d7d2b2a8e..7eb61ca93 100644 --- a/src/Refitter.Tests/PathParametersWithUrlTests.cs +++ b/src/Refitter.Tests/PathParametersWithUrlTests.cs @@ -2,6 +2,7 @@ using Refitter.Core; using Refitter.Tests.Build; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; @@ -16,8 +17,8 @@ public class PathParametersWithUrlTests #endif public async Task Can_Generate_Code(string url) { - var generateCode = await GenerateCode(url); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(url); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -29,9 +30,9 @@ public async Task Can_Generate_Code(string url) #endif public async Task Can_Build_Generated_Code(string url) { - var generateCode = await GenerateCode(url); + var generatedCode = await GenerateCode(url); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -40,7 +41,7 @@ private static async Task GenerateCode(string url) { var settings = new RefitGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/RefitInterfaceImportTests.cs b/src/Refitter.Tests/RefitInterfaceImportTests.cs index 74cb14eeb..5a3caed68 100644 --- a/src/Refitter.Tests/RefitInterfaceImportTests.cs +++ b/src/Refitter.Tests/RefitInterfaceImportTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Xunit; @@ -36,7 +36,7 @@ public void Should_NotContain_Any_System_Excluded() [Fact] public void Should_NotContain_SystemThreading_Excluded() { - var settings = new RefitGeneratorSettings { UseCancellationTokens = true, ReturnIObservable = false, ExcludeNamespaces = new string[] { "System.Threading$" } }; + var settings = new RefitGeneratorSettings { UseCancellationTokens = true, ReturnIObservable = false, ExcludeNamespaces = new string[] { "System.Threading$" } }; var refitInterfaceImport = RefitInterfaceImports.GetImportedNamespaces(settings); refitInterfaceImport.Should().NotContain("System.Threading"); refitInterfaceImport.Should().Contain("System.Threading.Tasks"); @@ -58,4 +58,4 @@ public void Should_Contain_ApizrConfiguringRequest_And_NotContain_SystemThreadin refitInterfaceImport.Should().Contain("Apizr.Configuring.Request"); refitInterfaceImport.Should().NotContain("System.Threading"); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Resources/EmbeddedResources.cs b/src/Refitter.Tests/Resources/EmbeddedResources.cs index e182392d4..8109144ba 100644 --- a/src/Refitter.Tests/Resources/EmbeddedResources.cs +++ b/src/Refitter.Tests/Resources/EmbeddedResources.cs @@ -1,4 +1,4 @@ -namespace Refitter.Tests.Resources; +namespace Refitter.Tests.Resources; public static class EmbeddedResources { diff --git a/src/Refitter.Tests/Resources/SampleOpenSpecifications.cs b/src/Refitter.Tests/Resources/SampleOpenSpecifications.cs index e21b3ad8b..54b1443bb 100644 --- a/src/Refitter.Tests/Resources/SampleOpenSpecifications.cs +++ b/src/Refitter.Tests/Resources/SampleOpenSpecifications.cs @@ -1,4 +1,4 @@ -namespace Refitter.Tests.Resources; +namespace Refitter.Tests.Resources; public enum SampleOpenSpecifications { diff --git a/src/Refitter.Tests/StringCasingExtensionTests.cs b/src/Refitter.Tests/StringCasingExtensionTests.cs index 8fd38ef70..5a3047d95 100644 --- a/src/Refitter.Tests/StringCasingExtensionTests.cs +++ b/src/Refitter.Tests/StringCasingExtensionTests.cs @@ -45,4 +45,4 @@ public void CanConvertColonsToPascalCase(string input, string expected) [InlineData("foo_bar", "FooBar")] public void CanConvertSnakeCaseToPascalCase(string input, string expected) => input.ConvertSnakeCaseToPascalCase().Should().Be(expected); -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs b/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs index bcb410e06..95e3b369a 100644 --- a/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs @@ -3,6 +3,7 @@ using Refitter.Tests.Build; using Refitter.Tests.Resources; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; @@ -37,8 +38,8 @@ public ApizrGeneratorSettings() [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -48,8 +49,8 @@ public async Task Can_Generate_Code(SampleOpenSpecifications version, string fil [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Partial_Interfaces(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().Contain("partial interface"); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().Contain("partial interface"); } [Theory] @@ -59,11 +60,11 @@ public async Task Can_Generate_Partial_Interfaces(SampleOpenSpecifications versi [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_Contracts(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new ApizrGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateContracts = false }); - generateCode.Should().NotContain("class Pet"); + generatedCode.Should().NotContain("class Pet"); } [Theory] @@ -73,11 +74,11 @@ public async Task Can_Generate_Code_Without_Contracts(SampleOpenSpecifications v [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_XmlDoc_Code_Comments(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new ApizrGeneratorSettings { GenerateXmlDocCodeComments = true, GenerateContracts = false }); - generateCode.Should().Contain(""); + generatedCode.Should().Contain(""); } [Theory] @@ -87,11 +88,11 @@ public async Task Can_Generate_Code_With_XmlDoc_Code_Comments(SampleOpenSpecific [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_XmlDoc_Code_Comments(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new ApizrGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateContracts = false }); - generateCode.Should().NotContain(""); + generatedCode.Should().NotContain(""); } [Theory] @@ -101,11 +102,11 @@ public async Task Can_Generate_Code_Without_XmlDoc_Code_Comments(SampleOpenSpeci [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Default_Namespace(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new ApizrGeneratorSettings { Namespace = "Some.Other.Namespace" }); - generateCode.Should().Contain("namespace Some.Other.Namespace"); + generatedCode.Should().Contain("namespace Some.Other.Namespace"); } [Theory] @@ -115,9 +116,9 @@ public async Task Can_Generate_Code_With_Default_Namespace(SampleOpenSpecificati [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Fixed_Interface_Name(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {Naming = {UseOpenApiTitle = false, InterfaceName = "SomeOtherName"}}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("interface ISomeOtherName"); + var settings = new ApizrGeneratorSettings { Naming = { UseOpenApiTitle = false, InterfaceName = "SomeOtherName" } }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("interface ISomeOtherName"); } [Theory] @@ -127,9 +128,9 @@ public async Task Can_Generate_Code_With_Fixed_Interface_Name(SampleOpenSpecific [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_AutoGenerated_Header(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {AddAutoGeneratedHeader = false}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("This code was generated by Refitter"); + var settings = new ApizrGeneratorSettings { AddAutoGeneratedHeader = false }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("This code was generated by Refitter"); } [Theory] @@ -139,9 +140,9 @@ public async Task Can_Generate_Code_Without_AutoGenerated_Header(SampleOpenSpeci [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_That_Returns_IApiResponse(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {ReturnIApiResponse = true}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task>"); + var settings = new ApizrGeneratorSettings { ReturnIApiResponse = true }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task>"); } [Theory] @@ -161,10 +162,10 @@ public async Task Can_Generate_Code_With_Type_Override(SampleOpenSpecifications ["addPet"] = "void", // Remove type }, }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task> GetPetById"); - generateCode.Should().Contain("Task DeletePet"); - generateCode.Should().Contain("Task AddPet"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task> GetPetById"); + generatedCode.Should().Contain("Task DeletePet"); + generatedCode.Should().Contain("Task AddPet"); } [Theory] @@ -174,9 +175,9 @@ public async Task Can_Generate_Code_With_Type_Override(SampleOpenSpecifications [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Internal_Contract_Types(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {TypeAccessibility = TypeAccessibility.Internal}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("internal partial class"); + var settings = new ApizrGeneratorSettings { TypeAccessibility = TypeAccessibility.Internal }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("internal partial class"); } [Theory] @@ -186,9 +187,9 @@ public async Task Can_Generate_Code_With_Internal_Contract_Types(SampleOpenSpeci [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Internal_Interface(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {TypeAccessibility = TypeAccessibility.Internal}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("internal partial interface"); + var settings = new ApizrGeneratorSettings { TypeAccessibility = TypeAccessibility.Internal }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("internal partial interface"); } [Theory] @@ -198,9 +199,9 @@ public async Task Can_Generate_Code_With_Internal_Interface(SampleOpenSpecificat [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_CancellationToken(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {UseCancellationTokens = true}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options + var settings = new ApizrGeneratorSettings { UseCancellationTokens = true }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options } [Theory] @@ -217,9 +218,9 @@ public async Task Can_Generate_Code_With_Correct_Usings( string filename, bool cancellationTokens) { - var settings = new ApizrGeneratorSettings {UseCancellationTokens = cancellationTokens}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options + var settings = new ApizrGeneratorSettings { UseCancellationTokens = cancellationTokens }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options } [Theory] @@ -229,9 +230,9 @@ public async Task Can_Generate_Code_With_Correct_Usings( [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2WithDifferentHeaders, "SwaggerPetstoreWithDifferentHeaders.yaml")] public async Task Can_Generate_Code_With_OperationHeaders_With_Different_Headers(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateOperationHeaders = true}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"api-key\")] string api_key"); + var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = true }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"api-key\")] string api_key"); } [Theory] @@ -241,9 +242,9 @@ public async Task Can_Generate_Code_With_OperationHeaders_With_Different_Headers [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_OperationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateOperationHeaders = true}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"api_key\")] string api_key"); + var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = true }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"api_key\")] string api_key"); } [Theory] @@ -253,9 +254,9 @@ public async Task Can_Generate_Code_With_OperationHeaders(SampleOpenSpecificatio [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_OperationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateOperationHeaders = false}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); + var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = false }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); } [Theory] @@ -265,9 +266,9 @@ public async Task Can_Generate_Code_Without_OperationHeaders(SampleOpenSpecifica [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2WithUnsafeAuthenticationHeaders, "SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml")] public async Task Can_Generate_Code_With_Unsafe_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateAuthenticationHeader = true}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); + var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = true }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); } [Theory] @@ -277,9 +278,9 @@ public async Task Can_Generate_Code_With_Unsafe_AuthenticationHeaders(SampleOpen [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2WithAuthenticationHeaders, "SwaggerPetstoreWithAuthenticationHeaders.yaml")] public async Task Can_Generate_Code_With_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateAuthenticationHeader = true}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); + var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = true }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } [Theory] @@ -289,9 +290,9 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders(SampleOpenSpecifi [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2WithAuthenticationHeaders, "SwaggerPetstoreWithAuthenticationHeaders.yaml")] public async Task Can_Generate_Code_With_AuthenticationHeaders_Without_OperationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateOperationHeaders = false, GenerateAuthenticationHeader = true}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); + var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = false, GenerateAuthenticationHeader = true }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } [Theory] @@ -301,9 +302,9 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders_Without_Operation [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateAuthenticationHeader = false}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); + var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = false }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); } [Theory] @@ -314,11 +315,11 @@ public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpec public async Task Can_Generate_Code_With_Accept_Request_Header(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) - generateCode.Should().Contain("[Headers(\"Accept: application/json\""); + generatedCode.Should().Contain("[Headers(\"Accept: application/json\""); else if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV2 or SampleOpenSpecifications.SwaggerPetstoreYamlV2) - generateCode.Should().NotContain("[Headers(\"Accept: application/json\""); + generatedCode.Should().NotContain("[Headers(\"Accept: application/json\""); } [Theory] @@ -326,9 +327,9 @@ public async Task Can_Generate_Code_With_Accept_Request_Header(SampleOpenSpecifi [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV3, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_No_Accept_Request_Header(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {AddAcceptHeaders = false}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Headers(\"Accept"); + var settings = new ApizrGeneratorSettings { AddAcceptHeaders = false }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Headers(\"Accept"); } [Theory] @@ -338,9 +339,9 @@ public async Task Can_Generate_Code_With_No_Accept_Request_Header(SampleOpenSpec [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Multiple_Interfaces(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {MultipleInterfaces = MultipleInterfaces.ByEndpoint}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); + var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByEndpoint }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -358,8 +359,8 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup(SampleOpenSpecifi TransientErrorHandler = TransientErrorHandler.Polly } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("AddApizrManagerFor"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("AddApizrManagerFor"); } [Theory] @@ -377,10 +378,10 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup_With_Polly(Sample TransientErrorHandler = TransientErrorHandler.Polly } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("using Polly"); - generateCode.Should().Contain("AddPolicyHandler"); - generateCode.Should().Contain("Backoff.DecorrelatedJitterBackoffV2"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("using Polly"); + generatedCode.Should().Contain("AddPolicyHandler"); + generatedCode.Should().Contain("Backoff.DecorrelatedJitterBackoffV2"); } [Theory] @@ -398,10 +399,10 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup_Without_Polly(Sam TransientErrorHandler = TransientErrorHandler.None } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("using Polly"); - generateCode.Should().NotContain("AddPolicyHandler"); - generateCode.Should().NotContain("Backoff.DecorrelatedJitterBackoffV2"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("using Polly"); + generatedCode.Should().NotContain("AddPolicyHandler"); + generatedCode.Should().NotContain("Backoff.DecorrelatedJitterBackoffV2"); } [Theory] @@ -422,9 +423,9 @@ public async Task Can_Generate_Code_GeneratedCode_Attribute( string filename, MultipleInterfaces multipleInterfaces) { - var settings = new ApizrGeneratorSettings {MultipleInterfaces = multipleInterfaces}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); + var settings = new ApizrGeneratorSettings { MultipleInterfaces = multipleInterfaces }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); } [Theory] @@ -439,10 +440,11 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe { var settings = new ApizrGeneratorSettings { - MultipleInterfaces = multipleInterfaces, OperationNameTemplate = "ExecuteAsync" + MultipleInterfaces = multipleInterfaces, + OperationNameTemplate = "ExecuteAsync" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("ExecuteAsync("); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("ExecuteAsync("); } [Theory] @@ -454,9 +456,9 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe #endif public async Task Can_Build_Generated_Code(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); + var generatedCode = await GenerateCode(version, filename); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -470,10 +472,10 @@ public async Task Can_Build_Generated_Code(SampleOpenSpecifications version, str #endif public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {ReturnIApiResponse = true}; - var generateCode = await GenerateCode(version, filename, settings); + var settings = new ApizrGeneratorSettings { ReturnIApiResponse = true }; + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -482,11 +484,11 @@ public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifica [InlineData(SampleOpenSpecifications.SwaggerPetstoreJsonV3, "SwaggerPetstore.json")] public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {ReturnIObservable = true}; - var generateCode = await GenerateCode(version, filename, settings); + var settings = new ApizrGeneratorSettings { ReturnIObservable = true }; + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -500,10 +502,10 @@ public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSp #endif public async Task Can_Build_Generated_Code_With_Multiple_Interfaces(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {MultipleInterfaces = MultipleInterfaces.ByEndpoint}; - var generateCode = await GenerateCode(version, filename, settings); + var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByEndpoint }; + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -517,10 +519,10 @@ public async Task Can_Build_Generated_Code_With_Multiple_Interfaces(SampleOpenSp #endif public async Task Can_Build_Generated_Code_With_Multiple_Interfaces_ByTag(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {MultipleInterfaces = MultipleInterfaces.ByTag}; - var generateCode = await GenerateCode(version, filename, settings); + var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByTag }; + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -535,9 +537,9 @@ public async Task Can_Build_Generated_Code_From_Url(string url) { var settings = new ApizrGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); + var generatedCode = sut.Generate(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -550,8 +552,8 @@ public async Task Can_Build_Generated_Code_From_Url(string url) [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Obsolete_Attribute(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().Contain("[System.Obsolete]"); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().Contain("[System.Obsolete]"); } [Theory] @@ -561,9 +563,9 @@ public async Task Can_Generate_Code_Obsolete_Attribute(SampleOpenSpecifications [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_Obsolete_Operations(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateDeprecatedOperations = false}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain(@"/pet/findByTags"); + var settings = new ApizrGeneratorSettings { GenerateDeprecatedOperations = false }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain(@"/pet/findByTags"); } [Theory] @@ -573,9 +575,9 @@ public async Task Can_Generate_Code_Without_Obsolete_Operations(SampleOpenSpecif [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Operation_Name_Template(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {OperationNameTemplate = "{operationName}Async"}; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("FindPetsByStatusAsync"); + var settings = new ApizrGeneratorSettings { OperationNameTemplate = "{operationName}Async" }; + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("FindPetsByStatusAsync"); } [Theory] @@ -595,9 +597,9 @@ public async Task Can_Generate_Code_With_OperationNameGenerator(OperationNameGen { OperationNameGenerator = type }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -611,10 +613,11 @@ public async Task Can_Generate_Code_Without_AdditionalProperties(SampleOpenSpeci { var settings = new ApizrGeneratorSettings { - GenerateDefaultAdditionalProperties = false, OperationNameTemplate = "{operationName}Async" + GenerateDefaultAdditionalProperties = false, + OperationNameTemplate = "{operationName}Async" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("Dictionary AdditionalProperties"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("Dictionary AdditionalProperties"); } [Theory] @@ -628,12 +631,13 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types(SampleOpenSpec { CodeGeneratorSettings = new CodeGeneratorSettings { - GenerateNullableReferenceTypes = true, GenerateOptionalPropertiesAsNullable = true + GenerateNullableReferenceTypes = true, + GenerateOptionalPropertiesAsNullable = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task"); - generateCode.Should().NotContain("Task"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task"); + generatedCode.Should().NotContain("Task"); } [Theory] @@ -643,15 +647,18 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types(SampleOpenSpec [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {ReturnIApiResponse = true, CodeGeneratorSettings = new CodeGeneratorSettings + var settings = new ApizrGeneratorSettings + { + ReturnIApiResponse = true, + CodeGeneratorSettings = new CodeGeneratorSettings { GenerateNullableReferenceTypes = true, GenerateOptionalPropertiesAsNullable = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task>"); - generateCode.Should().NotContain("Task>"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task>"); + generatedCode.Should().NotContain("Task>"); } [Theory] @@ -662,8 +669,8 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse public async Task Can_Generate_Code_With_ImmutableRecords(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { ImmutableRecords = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("record Pet"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("record Pet"); } [Theory] @@ -674,13 +681,13 @@ public async Task Can_Generate_Code_With_ImmutableRecords(SampleOpenSpecificatio public async Task Can_Generate_Code_With_DynamicQuerystringParameter(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { UseDynamicQuerystringParameters = true }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); - if(version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) - generateCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") + if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) + generatedCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") .And.Contain("public class UpdatePetWithFormQueryParams"); - generateCode.Should().Contain("[Query] LoginUserQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") + generatedCode.Should().Contain("[Query] LoginUserQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") .And.Contain("public class LoginUserQueryParams"); } diff --git a/src/Refitter.Tests/SwaggerPetstoreMultipleFileTests.cs b/src/Refitter.Tests/SwaggerPetstoreMultipleFileTests.cs index fb087875d..cc8192d4e 100644 --- a/src/Refitter.Tests/SwaggerPetstoreMultipleFileTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreMultipleFileTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Refitter.Tests.Resources; diff --git a/src/Refitter.Tests/SwaggerPetstoreTests.cs b/src/Refitter.Tests/SwaggerPetstoreTests.cs index 1033c9ec1..9ba9f1448 100644 --- a/src/Refitter.Tests/SwaggerPetstoreTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreTests.cs @@ -3,6 +3,7 @@ using Refitter.Tests.Build; using Refitter.Tests.Resources; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; @@ -15,8 +16,8 @@ public class SwaggerPetstoreTests [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -26,8 +27,8 @@ public async Task Can_Generate_Code(SampleOpenSpecifications version, string fil [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Partial_Interfaces(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().Contain("partial interface"); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().Contain("partial interface"); } [Theory] @@ -37,11 +38,11 @@ public async Task Can_Generate_Partial_Interfaces(SampleOpenSpecifications versi [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_Contracts(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateContracts = false }); - generateCode.Should().NotContain("class Pet"); + generatedCode.Should().NotContain("class Pet"); } [Theory] @@ -51,11 +52,11 @@ public async Task Can_Generate_Code_Without_Contracts(SampleOpenSpecifications v [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_Clients(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateClients = false }); - generateCode.Should().NotContain("ISwaggerPetstore"); + generatedCode.Should().NotContain("ISwaggerPetstore"); } [Theory] @@ -65,11 +66,11 @@ public async Task Can_Generate_Code_Without_Clients(SampleOpenSpecifications ver [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_XmlDoc_Code_Comments(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { GenerateXmlDocCodeComments = true, GenerateContracts = false }); - generateCode.Should().Contain(""); + generatedCode.Should().Contain(""); } [Theory] @@ -79,11 +80,11 @@ public async Task Can_Generate_Code_With_XmlDoc_Code_Comments(SampleOpenSpecific [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_XmlDoc_Code_Comments(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateContracts = false }); - generateCode.Should().NotContain(""); + generatedCode.Should().NotContain(""); } [Theory] @@ -93,11 +94,11 @@ public async Task Can_Generate_Code_Without_XmlDoc_Code_Comments(SampleOpenSpeci [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Default_Namespace(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { Namespace = "Some.Other.Namespace" }); - generateCode.Should().Contain("namespace Some.Other.Namespace"); + generatedCode.Should().Contain("namespace Some.Other.Namespace"); } [Theory] @@ -110,8 +111,8 @@ public async Task Can_Generate_Code_With_Fixed_Interface_Name(SampleOpenSpecific var settings = new RefitGeneratorSettings(); settings.Naming.UseOpenApiTitle = false; settings.Naming.InterfaceName = "SomeOtherName"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("interface ISomeOtherName"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("interface ISomeOtherName"); } [Theory] @@ -123,8 +124,8 @@ public async Task Can_Generate_Code_Without_AutoGenerated_Header(SampleOpenSpeci { var settings = new RefitGeneratorSettings(); settings.AddAutoGeneratedHeader = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("This code was generated by Refitter"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("This code was generated by Refitter"); } [Theory] @@ -136,8 +137,8 @@ public async Task Can_Generate_Code_That_Returns_IApiResponse(SampleOpenSpecific { var settings = new RefitGeneratorSettings(); settings.ReturnIApiResponse = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task>"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task>"); } [Theory] @@ -157,10 +158,10 @@ public async Task Can_Generate_Code_With_Type_Override(SampleOpenSpecifications ["addPet"] = "void", // Remove type }, }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task> GetPetById"); - generateCode.Should().Contain("Task DeletePet"); - generateCode.Should().Contain("Task AddPet"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task> GetPetById"); + generatedCode.Should().Contain("Task DeletePet"); + generatedCode.Should().Contain("Task AddPet"); } [Theory] @@ -172,8 +173,8 @@ public async Task Can_Generate_Code_With_Internal_Contract_Types(SampleOpenSpeci { var settings = new RefitGeneratorSettings(); settings.TypeAccessibility = TypeAccessibility.Internal; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("internal partial class"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("internal partial class"); } [Theory] @@ -185,8 +186,8 @@ public async Task Can_Generate_Code_With_Internal_Interface(SampleOpenSpecificat { var settings = new RefitGeneratorSettings(); settings.TypeAccessibility = TypeAccessibility.Internal; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("internal partial interface"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("internal partial interface"); } [Theory] @@ -198,8 +199,8 @@ public async Task Can_Generate_Code_With_CancellationToken(SampleOpenSpecificati { var settings = new RefitGeneratorSettings(); settings.UseCancellationTokens = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("CancellationToken cancellationToken = default"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("CancellationToken cancellationToken = default"); } [Theory] @@ -218,8 +219,8 @@ public async Task Can_Generate_Code_With_Correct_Usings( { var settings = new RefitGeneratorSettings(); settings.UseCancellationTokens = cancellationTokens; - var generateCode = await GenerateCode(version, filename, settings); - Assert.Equal(cancellationTokens, generateCode.Contains("using System.Threading;")); + var generatedCode = await GenerateCode(version, filename, settings); + Assert.Equal(cancellationTokens, generatedCode.Contains("using System.Threading;")); } [Theory] @@ -231,8 +232,8 @@ public async Task Can_Generate_Code_With_OperationHeaders_With_Different_Headers { var settings = new RefitGeneratorSettings(); settings.GenerateOperationHeaders = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"api-key\")] string api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"api-key\")] string api_key"); } [Theory] @@ -244,8 +245,8 @@ public async Task Can_Generate_Code_With_OperationHeaders(SampleOpenSpecificatio { var settings = new RefitGeneratorSettings(); settings.GenerateOperationHeaders = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"api_key\")] string api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"api_key\")] string api_key"); } [Theory] @@ -257,8 +258,8 @@ public async Task Can_Generate_Code_Without_OperationHeaders(SampleOpenSpecifica { var settings = new RefitGeneratorSettings(); settings.GenerateOperationHeaders = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); } [Theory] @@ -270,8 +271,8 @@ public async Task Can_Generate_Code_With_Unsafe_AuthenticationHeaders(SampleOpen { var settings = new RefitGeneratorSettings(); settings.GenerateAuthenticationHeader = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); } [Theory] @@ -283,8 +284,8 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders(SampleOpenSpecifi { var settings = new RefitGeneratorSettings(); settings.GenerateAuthenticationHeader = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } [Theory] @@ -297,8 +298,8 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders_Without_Operation var settings = new RefitGeneratorSettings(); settings.GenerateOperationHeaders = false; settings.GenerateAuthenticationHeader = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } [Theory] @@ -310,8 +311,8 @@ public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpec { var settings = new RefitGeneratorSettings(); settings.GenerateAuthenticationHeader = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); } [Theory] @@ -322,11 +323,11 @@ public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpec public async Task Can_Generate_Code_With_Accept_Request_Header(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) - generateCode.Should().Contain("[Headers(\"Accept: application/json\""); + generatedCode.Should().Contain("[Headers(\"Accept: application/json\""); else if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV2 or SampleOpenSpecifications.SwaggerPetstoreYamlV2) - generateCode.Should().NotContain("[Headers(\"Accept: application/json\""); + generatedCode.Should().NotContain("[Headers(\"Accept: application/json\""); } [Theory] @@ -336,8 +337,8 @@ public async Task Can_Generate_Code_With_No_Accept_Request_Header(SampleOpenSpec { var settings = new RefitGeneratorSettings(); settings.AddAcceptHeaders = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Headers(\"Accept"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Headers(\"Accept"); } [Theory] @@ -349,8 +350,8 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces(SampleOpenSpecifica { var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = MultipleInterfaces.ByEndpoint; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -366,8 +367,8 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup(SampleOpenSpecifi BaseUrl = "https://petstore3.swagger.io/api/v3", TransientErrorHandler = TransientErrorHandler.Polly }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("ConfigureRefitClients"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("ConfigureRefitClients"); } [Theory] @@ -383,8 +384,8 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup_With_Polly(Sample BaseUrl = "https://petstore3.swagger.io/api/v3", TransientErrorHandler = TransientErrorHandler.Polly }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("using Polly"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("using Polly"); } [Theory] @@ -400,8 +401,8 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup_Without_Polly(Sam BaseUrl = "https://petstore3.swagger.io/api/v3", TransientErrorHandler = TransientErrorHandler.None }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("using Polly"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("using Polly"); } [Theory] @@ -429,8 +430,8 @@ public async Task Can_Generate_Code_Apizr_Setup(SampleOpenSpecifications version WithFileTransfer = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("AddApizrManagerFor"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("AddApizrManagerFor"); } [Theory] @@ -458,8 +459,8 @@ public async Task Can_Generate_Code_Apizr_Setup_With_Polly(SampleOpenSpecificati WithFileTransfer = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("using Polly"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("using Polly"); } [Theory] @@ -487,8 +488,8 @@ public async Task Can_Generate_Code_Apizr_Setup_Without_Polly(SampleOpenSpecific WithFileTransfer = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("using Polly"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("using Polly"); } [Theory] @@ -511,8 +512,8 @@ public async Task Can_Generate_Code_GeneratedCode_Attribute( { var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = multipleInterfaces; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); } [Theory] @@ -528,8 +529,8 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = multipleInterfaces; settings.OperationNameTemplate = "ExecuteAsync"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("ExecuteAsync("); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("ExecuteAsync("); } [Theory] @@ -541,9 +542,9 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe #endif public async Task Can_Build_Generated_Code(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); + var generatedCode = await GenerateCode(version, filename); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -559,9 +560,9 @@ public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifica { var settings = new RefitGeneratorSettings(); settings.ReturnIApiResponse = true; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -572,10 +573,10 @@ public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSp { var settings = new RefitGeneratorSettings(); settings.ReturnIObservable = true; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -591,9 +592,9 @@ public async Task Can_Build_Generated_Code_With_Multiple_Interfaces(SampleOpenSp { var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = MultipleInterfaces.ByEndpoint; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -609,9 +610,9 @@ public async Task Can_Build_Generated_Code_With_Multiple_Interfaces_ByTag(Sample { var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = MultipleInterfaces.ByTag; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -626,9 +627,9 @@ public async Task Can_Build_Generated_Code_From_Url(string url) { var settings = new RefitGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); + var generatedCode = sut.Generate(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -660,8 +661,8 @@ private static async Task GenerateCode( [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Obsolete_Attribute(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().Contain("[System.Obsolete]"); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().Contain("[System.Obsolete]"); } [Theory] @@ -673,8 +674,8 @@ public async Task Can_Generate_Code_Without_Obsolete_Operations(SampleOpenSpecif { var settings = new RefitGeneratorSettings(); settings.GenerateDeprecatedOperations = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain(@"/pet/findByTags"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain(@"/pet/findByTags"); } [Theory] @@ -686,8 +687,8 @@ public async Task Can_Generate_Code_With_Operation_Name_Template(SampleOpenSpeci { var settings = new RefitGeneratorSettings(); settings.OperationNameTemplate = "{operationName}Async"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("FindPetsByStatusAsync"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("FindPetsByStatusAsync"); } [Theory] @@ -707,9 +708,9 @@ public async Task Can_Generate_Code_With_OperationNameGenerator(OperationNameGen { OperationNameGenerator = type }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -724,8 +725,8 @@ public async Task Can_Generate_Code_Without_AdditionalProperties(SampleOpenSpeci var settings = new RefitGeneratorSettings(); settings.GenerateDefaultAdditionalProperties = false; settings.OperationNameTemplate = "{operationName}Async"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("Dictionary AdditionalProperties"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("Dictionary AdditionalProperties"); } [Theory] @@ -741,9 +742,9 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types(SampleOpenSpec GenerateNullableReferenceTypes = true, GenerateOptionalPropertiesAsNullable = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task"); - generateCode.Should().NotContain("Task"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task"); + generatedCode.Should().NotContain("Task"); } [Theory] @@ -760,9 +761,9 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse GenerateNullableReferenceTypes = true, GenerateOptionalPropertiesAsNullable = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task>"); - generateCode.Should().NotContain("Task>"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task>"); + generatedCode.Should().NotContain("Task>"); } [Theory] @@ -773,8 +774,8 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse public async Task Can_Generate_Code_With_ImmutableRecords(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { ImmutableRecords = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("record Pet"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("record Pet"); } [Theory] @@ -785,12 +786,12 @@ public async Task Can_Generate_Code_With_ImmutableRecords(SampleOpenSpecificatio public async Task Can_Generate_Code_With_DynamicQuerystringParameters(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { UseDynamicQuerystringParameters = true }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) - generateCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams);") + generatedCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams);") .And.Contain("public class UpdatePetWithFormQueryParams"); - generateCode.Should().Contain("[Query] LoginUserQueryParams queryParams);") + generatedCode.Should().Contain("[Query] LoginUserQueryParams queryParams);") .And.Contain("public class LoginUserQueryParams"); } @@ -802,8 +803,8 @@ public async Task Can_Generate_Code_With_DynamicQuerystringParameters(SampleOpen public async Task Can_Generate_Code_With_IDisposable(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { GenerateDisposableClients = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("IDisposable"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("IDisposable"); } [Theory] @@ -817,9 +818,9 @@ public async Task Can_Build_Generated_Code_With_IDisposable(SampleOpenSpecificat { var settings = new RefitGeneratorSettings(); settings.GenerateDisposableClients = true; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -832,8 +833,8 @@ public async Task Can_Build_Generated_Code_With_IDisposable(SampleOpenSpecificat public async Task Can_Generate_Interface_With_Summary(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { GenerateXmlDocCodeComments = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Swagger Petstore"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Swagger Petstore"); } [Theory] @@ -844,9 +845,9 @@ public async Task Can_Generate_Interface_With_Summary(SampleOpenSpecifications v public async Task Can_Generate_Interfaces_Filtered_By_Path_Match(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { IncludePathMatches = ["^/pet.*"] }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("\"/pet\""); - generateCode.Should().Contain("\"/pet/{petId}\""); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("\"/pet\""); + generatedCode.Should().Contain("\"/pet/{petId}\""); } [Theory] @@ -859,10 +860,10 @@ public async Task Can_Generate_Interfaces_Filtered_By_Path_Match(SampleOpenSpeci public async Task Can_Import_Contracts_Namespace(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { ContractsNamespace = "Contracts" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("using Contracts;"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("using Contracts;"); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } diff --git a/src/Refitter.Tests/TestFile.cs b/src/Refitter.Tests/TestFile.cs index 9f7a29e74..3bb72a604 100644 --- a/src/Refitter.Tests/TestFile.cs +++ b/src/Refitter.Tests/TestFile.cs @@ -1,4 +1,4 @@ -namespace Refitter.Tests; +namespace Refitter.Tests; public static class TestFile { @@ -10,4 +10,4 @@ public static async Task CreateSwaggerFile(string contents, string filen await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs b/src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs new file mode 100644 index 000000000..6a6d58409 --- /dev/null +++ b/src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs @@ -0,0 +1,25 @@ +using System.IO; +using System.Threading.Tasks; + +namespace Refitter.Tests.TestUtilities; + +/// +/// Helper utilities for creating temporary Swagger/OpenAPI files in tests +/// +public static class SwaggerFileHelper +{ + /// + /// Creates a temporary YAML file with the specified OpenAPI content + /// + /// The OpenAPI specification content + /// The path to the created temporary file + public static async Task CreateSwaggerFile(string contents) + { + var filename = $"{Guid.NewGuid()}.yml"; + var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + Directory.CreateDirectory(folder); + var swaggerFile = Path.Combine(folder, filename); + await File.WriteAllTextAsync(swaggerFile, contents); + return swaggerFile; + } +} \ No newline at end of file diff --git a/src/Refitter.Tests/XmlDocumentationGeneratorTests.cs b/src/Refitter.Tests/XmlDocumentationGeneratorTests.cs index 4eb81a688..23e18b4e3 100644 --- a/src/Refitter.Tests/XmlDocumentationGeneratorTests.cs +++ b/src/Refitter.Tests/XmlDocumentationGeneratorTests.cs @@ -67,7 +67,8 @@ public void Can_Generate_Method_Remarks() public void Can_Generate_Method_Param() { var docs = new StringBuilder(); - var method = CreateOperationModel(new OpenApiOperation { + var method = CreateOperationModel(new OpenApiOperation + { Parameters = { new OpenApiParameter { OriginalName = "testParam", Description = "TestParameter" } }, }); this._generator.AppendMethodDocumentation(method, false, false, false, docs); @@ -102,7 +103,8 @@ public void Can_Generate_DynamicQuerystring_Param() public void Can_Generate_Method_Returns() { var docs = new StringBuilder(); - var method = CreateOperationModel(new OpenApiOperation { + var method = CreateOperationModel(new OpenApiOperation + { Responses = { ["200"] = new OpenApiResponse @@ -121,7 +123,8 @@ public void Can_Generate_Method_Returns() public void Can_Generate_Method_Returns_With_Empty_Result() { var docs = new StringBuilder(); - var method = CreateOperationModel(new OpenApiOperation { + var method = CreateOperationModel(new OpenApiOperation + { Responses = { ["200"] = new OpenApiResponse { Content = { [""] = new OpenApiMediaType() } }, @@ -207,4 +210,4 @@ public void Can_Generate_Method_With_IApiResponse() .And.Contain("400"); } } -} \ No newline at end of file +} diff --git a/src/Refitter/GenerateCommand.cs b/src/Refitter/GenerateCommand.cs index d10e7e45e..92529d976 100644 --- a/src/Refitter/GenerateCommand.cs +++ b/src/Refitter/GenerateCommand.cs @@ -67,7 +67,7 @@ public override async Task ExecuteAsync(CommandContext context, Settings se var supportKey = settings.NoLogging ? "Unavailable when logging is disabled" : SupportInformation.GetSupportKey(); - + if (settings.SimpleOutput) { Console.WriteLine($"Support key: {supportKey}"); @@ -239,7 +239,7 @@ public override async Task ExecuteAsync(CommandContext context, Settings se AnsiConsole.WriteLine(); } } - + if (settings.SimpleOutput) { Console.WriteLine("Support"); @@ -413,7 +413,7 @@ private async Task WriteMultipleFiles( var totalSize = 0L; var totalLines = 0; - + Table? table = null; if (settings.SimpleOutput) diff --git a/src/Refitter/Program.cs b/src/Refitter/Program.cs index f1e6cbb32..79bdb52a7 100644 --- a/src/Refitter/Program.cs +++ b/src/Refitter/Program.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Spectre.Console.Cli; namespace Refitter; @@ -134,7 +134,7 @@ private static int Main(string[] args) "./openapi.json", "--trim-unused-schema", " --keep-schema", - "'^Model$'", + "'^Model$'", "--keep-schema", "'^Person.+'"); @@ -148,7 +148,7 @@ private static int Main(string[] args) "--operation-name-template", "'{operationName}Async'"); - configuration + configuration .AddExample( "./openapi.json", "--optional-nullable-parameters"); @@ -167,4 +167,4 @@ private static int Main(string[] args) return app.Run(args); } -} \ No newline at end of file +} diff --git a/src/Refitter/Settings.cs b/src/Refitter/Settings.cs index 9af149b6c..c809d170d 100644 --- a/src/Refitter/Settings.cs +++ b/src/Refitter/Settings.cs @@ -40,7 +40,7 @@ public sealed class Settings : CommandSettings [Description("Don't add header to output file")] [CommandOption("--no-auto-generated-header")] [DefaultValue(false)] - public bool NoAutoGeneratedHeader { get; set; } + public bool NoAutoGeneratedHeader { get; set; } [Description("Don't generate XML doc comments for interfaces and operations")] [CommandOption("--no-xml-doc-comments")] diff --git a/src/Refitter/SettingsValidator.cs b/src/Refitter/SettingsValidator.cs index de723b621..e4232555a 100644 --- a/src/Refitter/SettingsValidator.cs +++ b/src/Refitter/SettingsValidator.cs @@ -1,4 +1,4 @@ -using Refitter.Core; +using Refitter.Core; using Spectre.Console; namespace Refitter; @@ -111,4 +111,4 @@ private static bool IsUrl(string openApiPath) return Uri.TryCreate(openApiPath, UriKind.Absolute, out var uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); } -} \ No newline at end of file +} diff --git a/src/Refitter/SupportInformation.cs b/src/Refitter/SupportInformation.cs index 1a70b8e22..1b56d93b4 100644 --- a/src/Refitter/SupportInformation.cs +++ b/src/Refitter/SupportInformation.cs @@ -31,4 +31,4 @@ private static string ToSha256(this string value) var hash = SHA256.HashData(bytes); return Convert.ToBase64String(hash).ToLowerInvariant(); } -} \ No newline at end of file +} diff --git a/src/Refitter/SupportKeyInitializer.cs b/src/Refitter/SupportKeyInitializer.cs index dea24938a..f6539b048 100644 --- a/src/Refitter/SupportKeyInitializer.cs +++ b/src/Refitter/SupportKeyInitializer.cs @@ -1,4 +1,4 @@ -using Microsoft.ApplicationInsights.Channel; +using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.DataContracts; using Microsoft.ApplicationInsights.Extensibility; diff --git a/src/Refitter/Validation/OpenApiStats.cs b/src/Refitter/Validation/OpenApiStats.cs index 243f70efd..70c33da49 100644 --- a/src/Refitter/Validation/OpenApiStats.cs +++ b/src/Refitter/Validation/OpenApiStats.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Services; namespace Refitter.Validation; @@ -79,4 +79,4 @@ public override string ToString() - Schemas: {SchemaCount} """; } -} \ No newline at end of file +} diff --git a/src/Refitter/Validation/OpenApiValidationException.cs b/src/Refitter/Validation/OpenApiValidationException.cs index 65642847b..62d286c3b 100644 --- a/src/Refitter/Validation/OpenApiValidationException.cs +++ b/src/Refitter/Validation/OpenApiValidationException.cs @@ -1,13 +1,13 @@ -namespace Refitter.Validation; +namespace Refitter.Validation; public class OpenApiValidationException : Exception { public OpenApiValidationResult ValidationResult { get; } public OpenApiValidationException( - OpenApiValidationResult validationResult) + OpenApiValidationResult validationResult) : base("OpenAPI validation failed") { ValidationResult = validationResult; } -} \ No newline at end of file +} diff --git a/src/Refitter/Validation/OpenApiValidationResult.cs b/src/Refitter/Validation/OpenApiValidationResult.cs index 1a8c2702e..0de831f3e 100644 --- a/src/Refitter/Validation/OpenApiValidationResult.cs +++ b/src/Refitter/Validation/OpenApiValidationResult.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Readers; +using Microsoft.OpenApi.Readers; namespace Refitter.Validation; @@ -7,10 +7,10 @@ public record OpenApiValidationResult( OpenApiStats Statistics) { public bool IsValid => Diagnostics.Errors.Count == 0; - + public void ThrowIfInvalid() { if (!IsValid) throw new OpenApiValidationException(this); } -} \ No newline at end of file +} diff --git a/src/Refitter/Validation/OpenApiValidator.cs b/src/Refitter/Validation/OpenApiValidator.cs index 9b1029ff0..2172da171 100644 --- a/src/Refitter/Validation/OpenApiValidator.cs +++ b/src/Refitter/Validation/OpenApiValidator.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Readers; +using Microsoft.OpenApi.Readers; using Microsoft.OpenApi.Services; namespace Refitter.Validation; @@ -17,4 +17,4 @@ public static async Task Validate(string openApiFile) result.OpenApiDiagnostic, statsVisitor); } -} \ No newline at end of file +}