diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..214440d --- /dev/null +++ b/.gitignore @@ -0,0 +1,61 @@ +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio cache/options +.vs/ +.vscode/ + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# NuGet Packages +*.nupkg +*.snupkg +**/packages/* +!**/packages/build/ +*.nuget.props +*.nuget.targets + +# Test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* +*.VisualState.xml +TestResult.xml +[Dd]ebug[Pp]ublic/ + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# Rider +.idea/ +*.sln.iml + +# Coverage +coverage/ +*.coverage +*.coveragexml + +# Others +*.log +*.tmp +.DS_Store +Thumbs.db diff --git a/src/AncientWisdom.API/AncientWisdom.API.csproj b/src/AncientWisdom.API/AncientWisdom.API.csproj new file mode 100644 index 0000000..0a736a5 --- /dev/null +++ b/src/AncientWisdom.API/AncientWisdom.API.csproj @@ -0,0 +1,20 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + + diff --git a/src/AncientWisdom.API/AncientWisdom.API.http b/src/AncientWisdom.API/AncientWisdom.API.http new file mode 100644 index 0000000..f959231 --- /dev/null +++ b/src/AncientWisdom.API/AncientWisdom.API.http @@ -0,0 +1,6 @@ +@AncientWisdom.API_HostAddress = http://localhost:5002 + +GET {{AncientWisdom.API_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/src/AncientWisdom.API/Program.cs b/src/AncientWisdom.API/Program.cs new file mode 100644 index 0000000..93c1821 --- /dev/null +++ b/src/AncientWisdom.API/Program.cs @@ -0,0 +1,31 @@ +using Serilog; + +var builder = WebApplication.CreateBuilder(args); + +// Configure Serilog +Log.Logger = new LoggerConfiguration() + .ReadFrom.Configuration(builder.Configuration) + .CreateLogger(); + +builder.Host.UseSerilog(); + +// Add services +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); +builder.Services.AddHealthChecks(); + +var app = builder.Build(); + +// Configure middleware +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +// Health check endpoint +app.MapHealthChecks("/api/health"); + +app.Run(); diff --git a/src/AncientWisdom.API/Properties/launchSettings.json b/src/AncientWisdom.API/Properties/launchSettings.json new file mode 100644 index 0000000..05fb66e --- /dev/null +++ b/src/AncientWisdom.API/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:43431", + "sslPort": 44390 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5002", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7047;http://localhost:5002", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/AncientWisdom.API/appsettings.Development.json b/src/AncientWisdom.API/appsettings.Development.json new file mode 100644 index 0000000..ff66ba6 --- /dev/null +++ b/src/AncientWisdom.API/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/src/AncientWisdom.API/appsettings.json b/src/AncientWisdom.API/appsettings.json new file mode 100644 index 0000000..4d56694 --- /dev/null +++ b/src/AncientWisdom.API/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/src/AncientWisdom.Application/AncientWisdom.Application.csproj b/src/AncientWisdom.Application/AncientWisdom.Application.csproj new file mode 100644 index 0000000..2eaed30 --- /dev/null +++ b/src/AncientWisdom.Application/AncientWisdom.Application.csproj @@ -0,0 +1,13 @@ + + + + + + + + net8.0 + enable + enable + + + diff --git a/src/AncientWisdom.Application/Interfaces/.gitkeep b/src/AncientWisdom.Application/Interfaces/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/AncientWisdom.Application/Mappings/.gitkeep b/src/AncientWisdom.Application/Mappings/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/AncientWisdom.Application/Services/.gitkeep b/src/AncientWisdom.Application/Services/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/AncientWisdom.Domain/AncientWisdom.Domain.csproj b/src/AncientWisdom.Domain/AncientWisdom.Domain.csproj new file mode 100644 index 0000000..bb23fb7 --- /dev/null +++ b/src/AncientWisdom.Domain/AncientWisdom.Domain.csproj @@ -0,0 +1,9 @@ + + + + net8.0 + enable + enable + + + diff --git a/src/AncientWisdom.Domain/Entities/.gitkeep b/src/AncientWisdom.Domain/Entities/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/AncientWisdom.Domain/Enums/.gitkeep b/src/AncientWisdom.Domain/Enums/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/AncientWisdom.Domain/Interfaces/.gitkeep b/src/AncientWisdom.Domain/Interfaces/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/AncientWisdom.Infrastructure/AncientWisdom.Infrastructure.csproj b/src/AncientWisdom.Infrastructure/AncientWisdom.Infrastructure.csproj new file mode 100644 index 0000000..24c72b3 --- /dev/null +++ b/src/AncientWisdom.Infrastructure/AncientWisdom.Infrastructure.csproj @@ -0,0 +1,22 @@ + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + net8.0 + enable + enable + + + diff --git a/src/AncientWisdom.Infrastructure/Data/ApplicationDbContext.cs b/src/AncientWisdom.Infrastructure/Data/ApplicationDbContext.cs new file mode 100644 index 0000000..3b6dbf2 --- /dev/null +++ b/src/AncientWisdom.Infrastructure/Data/ApplicationDbContext.cs @@ -0,0 +1,20 @@ +using Microsoft.EntityFrameworkCore; + +namespace AncientWisdom.Infrastructure.Data; + +public class ApplicationDbContext : DbContext +{ + public ApplicationDbContext(DbContextOptions options) + : base(options) + { + } + + // DbSets will be added as entities are created + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + // Configurations will be added here + } +} diff --git a/src/AncientWisdom.Infrastructure/Repositories/.gitkeep b/src/AncientWisdom.Infrastructure/Repositories/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/AncientWisdom.sln b/src/AncientWisdom.sln new file mode 100644 index 0000000..28c53ee --- /dev/null +++ b/src/AncientWisdom.sln @@ -0,0 +1,118 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AncientWisdom.Domain", "AncientWisdom.Domain\AncientWisdom.Domain.csproj", "{03682CB5-3FA2-4737-AD4C-61561DB44DA2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AncientWisdom.Application", "AncientWisdom.Application\AncientWisdom.Application.csproj", "{D806288C-3C49-4B5F-8A9E-9F07C0093544}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AncientWisdom.Infrastructure", "AncientWisdom.Infrastructure\AncientWisdom.Infrastructure.csproj", "{7EFADA54-5B09-4B5E-A912-C7DA24D7F948}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AncientWisdom.API", "AncientWisdom.API\AncientWisdom.API.csproj", "{725FB6CA-4566-4796-8A29-1B4D4A2130F3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AncientWisdom.UnitTests", "..\tests\AncientWisdom.UnitTests\AncientWisdom.UnitTests.csproj", "{F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AncientWisdom.IntegrationTests", "..\tests\AncientWisdom.IntegrationTests\AncientWisdom.IntegrationTests.csproj", "{EFBBAACC-81E4-4C80-A278-FC47F94E32BF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AncientWisdom.BDD.Tests", "..\tests\AncientWisdom.BDD.Tests\AncientWisdom.BDD.Tests.csproj", "{A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Debug|x64.ActiveCfg = Debug|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Debug|x64.Build.0 = Debug|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Debug|x86.ActiveCfg = Debug|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Debug|x86.Build.0 = Debug|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Release|Any CPU.Build.0 = Release|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Release|x64.ActiveCfg = Release|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Release|x64.Build.0 = Release|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Release|x86.ActiveCfg = Release|Any CPU + {03682CB5-3FA2-4737-AD4C-61561DB44DA2}.Release|x86.Build.0 = Release|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Debug|x64.ActiveCfg = Debug|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Debug|x64.Build.0 = Debug|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Debug|x86.ActiveCfg = Debug|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Debug|x86.Build.0 = Debug|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Release|Any CPU.Build.0 = Release|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Release|x64.ActiveCfg = Release|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Release|x64.Build.0 = Release|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Release|x86.ActiveCfg = Release|Any CPU + {D806288C-3C49-4B5F-8A9E-9F07C0093544}.Release|x86.Build.0 = Release|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Debug|x64.ActiveCfg = Debug|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Debug|x64.Build.0 = Debug|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Debug|x86.ActiveCfg = Debug|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Debug|x86.Build.0 = Debug|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Release|Any CPU.Build.0 = Release|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Release|x64.ActiveCfg = Release|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Release|x64.Build.0 = Release|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Release|x86.ActiveCfg = Release|Any CPU + {7EFADA54-5B09-4B5E-A912-C7DA24D7F948}.Release|x86.Build.0 = Release|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Debug|x64.ActiveCfg = Debug|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Debug|x64.Build.0 = Debug|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Debug|x86.ActiveCfg = Debug|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Debug|x86.Build.0 = Debug|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Release|Any CPU.Build.0 = Release|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Release|x64.ActiveCfg = Release|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Release|x64.Build.0 = Release|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Release|x86.ActiveCfg = Release|Any CPU + {725FB6CA-4566-4796-8A29-1B4D4A2130F3}.Release|x86.Build.0 = Release|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Debug|x64.ActiveCfg = Debug|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Debug|x64.Build.0 = Debug|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Debug|x86.ActiveCfg = Debug|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Debug|x86.Build.0 = Debug|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Release|Any CPU.Build.0 = Release|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Release|x64.ActiveCfg = Release|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Release|x64.Build.0 = Release|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Release|x86.ActiveCfg = Release|Any CPU + {F9143F7A-F3AB-4F81-8A67-19A2BFDCDF91}.Release|x86.Build.0 = Release|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Debug|x64.ActiveCfg = Debug|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Debug|x64.Build.0 = Debug|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Debug|x86.ActiveCfg = Debug|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Debug|x86.Build.0 = Debug|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Release|Any CPU.Build.0 = Release|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Release|x64.ActiveCfg = Release|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Release|x64.Build.0 = Release|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Release|x86.ActiveCfg = Release|Any CPU + {EFBBAACC-81E4-4C80-A278-FC47F94E32BF}.Release|x86.Build.0 = Release|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Debug|x64.ActiveCfg = Debug|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Debug|x64.Build.0 = Debug|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Debug|x86.ActiveCfg = Debug|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Debug|x86.Build.0 = Debug|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Release|Any CPU.Build.0 = Release|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Release|x64.ActiveCfg = Release|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Release|x64.Build.0 = Release|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Release|x86.ActiveCfg = Release|Any CPU + {A58C5AAC-2EB7-4583-BF66-9B74B310AFBC}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tests/AncientWisdom.BDD.Tests/AncientWisdom.BDD.Tests.csproj b/tests/AncientWisdom.BDD.Tests/AncientWisdom.BDD.Tests.csproj new file mode 100644 index 0000000..a34dd39 --- /dev/null +++ b/tests/AncientWisdom.BDD.Tests/AncientWisdom.BDD.Tests.csproj @@ -0,0 +1,25 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + diff --git a/tests/AncientWisdom.BDD.Tests/Features/.gitkeep b/tests/AncientWisdom.BDD.Tests/Features/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/AncientWisdom.BDD.Tests/StepDefinitions/.gitkeep b/tests/AncientWisdom.BDD.Tests/StepDefinitions/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/AncientWisdom.IntegrationTests/AncientWisdom.IntegrationTests.csproj b/tests/AncientWisdom.IntegrationTests/AncientWisdom.IntegrationTests.csproj new file mode 100644 index 0000000..f69743a --- /dev/null +++ b/tests/AncientWisdom.IntegrationTests/AncientWisdom.IntegrationTests.csproj @@ -0,0 +1,24 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + diff --git a/tests/AncientWisdom.IntegrationTests/README.md b/tests/AncientWisdom.IntegrationTests/README.md new file mode 100644 index 0000000..e605da9 --- /dev/null +++ b/tests/AncientWisdom.IntegrationTests/README.md @@ -0,0 +1,12 @@ +# AncientWisdom Integration Tests + +This project contains integration tests for the AncientWisdom API. + +## Test Framework +- xUnit +- Microsoft.AspNetCore.Mvc.Testing (WebApplicationFactory) + +## Running Tests +```bash +dotnet test +``` diff --git a/tests/AncientWisdom.UnitTests/AncientWisdom.UnitTests.csproj b/tests/AncientWisdom.UnitTests/AncientWisdom.UnitTests.csproj new file mode 100644 index 0000000..000b683 --- /dev/null +++ b/tests/AncientWisdom.UnitTests/AncientWisdom.UnitTests.csproj @@ -0,0 +1,25 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + diff --git a/tests/AncientWisdom.UnitTests/README.md b/tests/AncientWisdom.UnitTests/README.md new file mode 100644 index 0000000..e43c60d --- /dev/null +++ b/tests/AncientWisdom.UnitTests/README.md @@ -0,0 +1,13 @@ +# AncientWisdom Unit Tests + +This project contains unit tests for the AncientWisdom application. + +## Test Framework +- xUnit +- FluentAssertions +- Moq + +## Running Tests +```bash +dotnet test +```