test: add unit tests
This commit is contained in:
parent
867804a4b0
commit
2fe48d3ac7
12 changed files with 172 additions and 8 deletions
|
@ -362,3 +362,11 @@ dotnet_naming_style.s_camelcase.required_suffix =
|
|||
dotnet_naming_style.s_camelcase.word_separator =
|
||||
dotnet_naming_style.s_camelcase.capitalization = camel_case
|
||||
|
||||
# Verify settings
|
||||
[*.{received,verified}.{txt,xml,json}]
|
||||
end_of_line = lf
|
||||
indent_size = unset
|
||||
indent_style = unset
|
||||
insert_final_newline = false
|
||||
tab_width = unset
|
||||
trim_trailing_whitespace = false
|
||||
|
|
3
.gitattributes
vendored
Normal file
3
.gitattributes
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
*.verified.txt text eol=lf working-tree-encoding=UTF-8
|
||||
*.verified.xml text eol=lf working-tree-encoding=UTF-8
|
||||
*.verified.json text eol=lf working-tree-encoding=UTF-8
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -478,4 +478,6 @@ $RECYCLE.BIN/
|
|||
*.lnk
|
||||
|
||||
|
||||
.idea/
|
||||
.idea/
|
||||
|
||||
*.received.*
|
|
@ -15,6 +15,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bismarck.AspNetCore", "src\
|
|||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\_build.csproj", "{6396E293-E7F6-46DF-B157-80597CB8D5A0}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{EA146346-9316-4E22-93F5-0F16363725B9}"
|
||||
EndProject
|
||||
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Bismarck.CodeGenerator.SnapshotTests", "test\Bismarck.CodeGenerator.SnapshotTests\Bismarck.CodeGenerator.SnapshotTests.fsproj", "{165E19C7-6597-4941-97EF-47EB1D119AC0}"
|
||||
EndProject
|
||||
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Bismarck.CodeGenerator.UnitTests", "test\Bismarck.CodeGenerator.UnitTests\Bismarck.CodeGenerator.UnitTests.fsproj", "{38B4A735-360B-4A75-BD5F-16D158E0875A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
@ -38,10 +44,20 @@ Global
|
|||
{1A2D0476-AA20-4C52-B015-4573A84657A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1A2D0476-AA20-4C52-B015-4573A84657A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1A2D0476-AA20-4C52-B015-4573A84657A5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{165E19C7-6597-4941-97EF-47EB1D119AC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{165E19C7-6597-4941-97EF-47EB1D119AC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{165E19C7-6597-4941-97EF-47EB1D119AC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{165E19C7-6597-4941-97EF-47EB1D119AC0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{38B4A735-360B-4A75-BD5F-16D158E0875A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38B4A735-360B-4A75-BD5F-16D158E0875A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38B4A735-360B-4A75-BD5F-16D158E0875A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{38B4A735-360B-4A75-BD5F-16D158E0875A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{A1DE0284-6376-4D0C-A18D-9065544FC532} = {C783C00E-C98E-46A0-A8F2-5AEA26A83ABD}
|
||||
{527811DB-DB1C-40F7-AB9F-313DEFFEEA7D} = {C0C20B96-58A8-4ED9-964D-4DA4A0CE638E}
|
||||
{1A2D0476-AA20-4C52-B015-4573A84657A5} = {C783C00E-C98E-46A0-A8F2-5AEA26A83ABD}
|
||||
{165E19C7-6597-4941-97EF-47EB1D119AC0} = {EA146346-9316-4E22-93F5-0F16363725B9}
|
||||
{38B4A735-360B-4A75-BD5F-16D158E0875A} = {EA146346-9316-4E22-93F5-0F16363725B9}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.9" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.4.0" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.6.0" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" PrivateAssets="all" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- This ensures the library will be packaged as a source generator when we use `dotnet pack` -->
|
||||
|
@ -26,10 +26,10 @@
|
|||
|
||||
<ItemGroup>
|
||||
<!-- Generator dependencies -->
|
||||
<PackageReference Include="Microsoft.OpenApi" Version="1.4.5" GeneratePathProperty="true" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.4.5" GeneratePathProperty="true" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.OpenApi" Version="1.6.6" GeneratePathProperty="true" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.6.6" GeneratePathProperty="true" PrivateAssets="all" />
|
||||
<PackageReference Include="SharpYaml" Version="2.1.0" GeneratePathProperty="true" PrivateAssets="all" />
|
||||
<PackageReference Include="Scriban" Version="5.5.1" GeneratePathProperty="true" PrivateAssets="all" />
|
||||
<PackageReference Include="Scriban" Version="5.7.0" GeneratePathProperty="true" PrivateAssets="all" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
@ -46,4 +46,10 @@
|
|||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<ItemGroup>
|
||||
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
|
||||
<_Parameter1>Bismarck.CodeGenerator.UnitTests</_Parameter1>
|
||||
</AssemblyAttribute>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<GenerateProgramFile>false</GenerateProgramFile>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>Bismarck.CodeGenerator.UnitTests</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.fs"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Expecto" Version="10.1.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.3" />
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Verify.Expecto" Version="20.6.0" />
|
||||
<PackageReference Include="YoloDev.Expecto.TestSdk" Version="0.14.1" />
|
||||
<PackageReference Update="FSharp.Core" Version="7.0.300" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
5
test/Bismarck.CodeGenerator.SnapshotTests/Program.fs
Normal file
5
test/Bismarck.CodeGenerator.SnapshotTests/Program.fs
Normal file
|
@ -0,0 +1,5 @@
|
|||
open Expecto
|
||||
|
||||
[<EntryPoint>]
|
||||
let main args =
|
||||
runTestsInAssemblyWithCLIArgs [] args
|
|
@ -0,0 +1,34 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<GenerateProgramFile>false</GenerateProgramFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Indexers\EnumSchemaIndexerTest.fs" />
|
||||
<Compile Include="Indexers\ObjectSchemaIndexerTest.fs" />
|
||||
<Compile Include="Program.fs"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2"/>
|
||||
<PackageReference Include="Microsoft.OpenApi" Version="1.6.6" />
|
||||
<PackageReference Include="xunit" Version="2.5.0" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.0">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector" Version="3.1.2">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Bismarck.CodeGenerator\Bismarck.CodeGenerator.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,41 @@
|
|||
namespace Bismarck.CodeGenerator.UnitTests.Indexers.EnumSchemaIndexerTest
|
||||
|
||||
open System.Collections.Generic
|
||||
open Bismarck.CodeGenerator
|
||||
open Bismarck.CodeGenerator.Indexers
|
||||
open Bismarck.CodeGenerator.Models
|
||||
open Microsoft.OpenApi.Any
|
||||
open Microsoft.OpenApi.Models
|
||||
open Xunit
|
||||
|
||||
type EnumSchemaIndexerTest() =
|
||||
let indexer = EnumSchemaIndexer()
|
||||
|
||||
[<Fact>]
|
||||
let ``Test empty enum`` () =
|
||||
let enumValues: IList<IOpenApiAny> = [||]
|
||||
|
||||
let schema = OpenApiSchema(Enum = enumValues)
|
||||
|
||||
let es =
|
||||
match indexer.Index(IndexRequest(schema, "status", "UnitTests", "MySvc")) with
|
||||
| :? EnumSpec as e -> e
|
||||
| _ -> failwith "unmatched type"
|
||||
|
||||
Assert.Equal(SchemaKind.Enum, es.Kind)
|
||||
Assert.Equal("Object", es.TargetName)
|
||||
Assert.Equal(0, es.Values |> Seq.length)
|
||||
|
||||
[<Fact>]
|
||||
let ``Test single value enum`` () =
|
||||
let enumValues: IList<IOpenApiAny> = [| OpenApiString("Value1") |]
|
||||
let schema = OpenApiSchema(Enum = enumValues)
|
||||
|
||||
let es =
|
||||
match indexer.Index(IndexRequest(schema, "status", "UnitTests", "MySvc")) with
|
||||
| :? EnumSpec as e -> e
|
||||
| _ -> failwith "unmatched type"
|
||||
|
||||
Assert.Equal(SchemaKind.Enum, es.Kind)
|
||||
Assert.Equal("Object", es.TargetName)
|
||||
Assert.Equal(1, es.Values |> Seq.length)
|
|
@ -0,0 +1,17 @@
|
|||
namespace Bismarck.CodeGenerator.UnitTests.Indexers.ObjectSchemaIndexerTest
|
||||
|
||||
open Bismarck.CodeGenerator
|
||||
open Bismarck.CodeGenerator.Indexers
|
||||
open Microsoft.OpenApi.Models
|
||||
open Xunit
|
||||
|
||||
type ObjectSchemaIndexerTest() =
|
||||
|
||||
let objectIndexer = ObjectSchemaIndexer(SchemaRegistry(), EnumSchemaIndexer())
|
||||
|
||||
[<Fact>]
|
||||
let ``Test empty object`` () =
|
||||
let schema =
|
||||
OpenApiSchema(Properties = dict [ "name", OpenApiSchema(Type = "string") ])
|
||||
|
||||
objectIndexer.Index(IndexRequest(schema, "pet", "UnitTests", "MySvc"))
|
4
test/Bismarck.CodeGenerator.UnitTests/Program.fs
Normal file
4
test/Bismarck.CodeGenerator.UnitTests/Program.fs
Normal file
|
@ -0,0 +1,4 @@
|
|||
module Program
|
||||
|
||||
[<EntryPoint>]
|
||||
let main _ = 0
|
Loading…
Reference in a new issue