diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml
new file mode 100644
index 00000000..50c54c74
--- /dev/null
+++ b/.github/workflows/package.yml
@@ -0,0 +1,23 @@
+name: Package
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - 'CleanArchitecture.nuspec'
+jobs:
+ publish:
+ name: Publish to NuGet.org
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: nuget/setup-nuget@v1
+ with:
+ nuget-version: '6.x'
+
+ - name: Create the package
+ run: nuget pack CleanArchitecture.nuspec -NoDefaultExcludes
+
+ - name: Publish the package
+ run: nuget push *.nupkg -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{secrets.NUGET_API_KEY}}
diff --git a/.template.config/template.json b/.template.config/template.json
new file mode 100644
index 00000000..f66b7dc7
--- /dev/null
+++ b/.template.config/template.json
@@ -0,0 +1,44 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "author": "SSW",
+ "classifications": [
+ "Web",
+ "SPA",
+ "API",
+ ".NET",
+ "ASP.NET Core",
+ "EF Core",
+ "SSW",
+ "Clean Architecture"
+ ],
+ "name": "SSW Clean Architecture Solution",
+ "description": "",
+ "identity": "SSW.Clean.Architecture.Solution.CSharp",
+ "groupIdentity": "SSW.Clean.Architecture.Solution",
+ "shortName": "ssw-ca",
+ "tags": {
+ "language": "C#",
+ "type": "project"
+ },
+ "sourceName": "SSW.CleanArchitecture",
+ "preferNameDirectory": true,
+ "sources": [
+ {
+ "source": "./",
+ "target": "./",
+ "exclude": [
+ "README.md",
+ "**/[Bb]in/**",
+ "**/[Oo]bj/**",
+ ".template.config/**/*",
+ ".vs/**/*",
+ "**/*.filelist",
+ "**/*.user",
+ "**/*.lock.json",
+ "**/.git/**",
+ "*.nuspec",
+ "**/node_modules/**"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/CleanArchitecture.nuspec b/CleanArchitecture.nuspec
new file mode 100644
index 00000000..9848dcf0
--- /dev/null
+++ b/CleanArchitecture.nuspec
@@ -0,0 +1,35 @@
+
+
+
+
+ SSW.CleanArchitecture.Template
+ 0.2.3
+ SSW Clean Architecture Template
+ SSW
+ SSW Clean Architecture Solution Template for .NET.
+
+ This is a solution template for creating a WebAPI with ASP.NET Core following the principles of Clean Architecture.
+
+
+
+
+ https://github.com/SSWConsulting/CleanArchitectureV2
+
+
+ MIT
+ false
+ clean-architecture project template csharp dotnet ssw
+ README.md
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CleanArchitecture.sln b/CleanArchitecture.sln
index 3ceeb2c6..459078b6 100644
--- a/CleanArchitecture.sln
+++ b/CleanArchitecture.sln
@@ -15,6 +15,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.gitignore = .gitignore
+ CleanArchitecture.nuspec = CleanArchitecture.nuspec
Directory.Build.Props = Directory.Build.Props
docker-compose.yml = docker-compose.yml
global.json = global.json
diff --git a/README.md b/README.md
index 945cadc9..59293fdb 100644
--- a/README.md
+++ b/README.md
@@ -102,3 +102,13 @@
- you will know when your tests pass when they should have failed
- Inserts bugs into the production code to make sure our tests are effective and testing the right behavior
- Using [Stryker Mutator](https://stryker-mutator.io/)
+
+## Publishing Template
+
+Template will be published to NuGet.org when changes are made to `CleanArchitecture.nuspec` on the `main` branch.
+
+### Process
+
+1. Update the `version` attribute in `CleanArchitecture.nuspec`
+2. Merge your PR
+3. `package` GitHub Action will run and publish the new version to NuGet.org
diff --git a/src/Application/Application.csproj b/src/Application/Application.csproj
index 69845b22..265cb52f 100644
--- a/src/Application/Application.csproj
+++ b/src/Application/Application.csproj
@@ -2,6 +2,8 @@
net7.0
+ SSW.CleanArchitecture.Application
+ SSW.CleanArchitecture.Application
enable
enable
diff --git a/src/Application/Common/Behaviours/LoggingBehaviour.cs b/src/Application/Common/Behaviours/LoggingBehaviour.cs
index b45cf31b..93871b24 100644
--- a/src/Application/Common/Behaviours/LoggingBehaviour.cs
+++ b/src/Application/Common/Behaviours/LoggingBehaviour.cs
@@ -1,8 +1,8 @@
-using Application.Common.Interfaces;
+using SSW.CleanArchitecture.Application.Common.Interfaces;
using MediatR.Pipeline;
using Microsoft.Extensions.Logging;
-namespace CleanArchitecture.Application.Common.Behaviours;
+namespace SSW.CleanArchitecture.Application.Common.Behaviours;
public class LoggingBehaviour : IRequestPreProcessor where TRequest : notnull
{
diff --git a/src/Application/Common/Behaviours/PerformanceBehaviour.cs b/src/Application/Common/Behaviours/PerformanceBehaviour.cs
index de9f2303..61ddee2b 100644
--- a/src/Application/Common/Behaviours/PerformanceBehaviour.cs
+++ b/src/Application/Common/Behaviours/PerformanceBehaviour.cs
@@ -1,8 +1,8 @@
using System.Diagnostics;
-using Application.Common.Interfaces;
using Microsoft.Extensions.Logging;
+using SSW.CleanArchitecture.Application.Common.Interfaces;
-namespace CleanArchitecture.Application.Common.Behaviours;
+namespace SSW.CleanArchitecture.Application.Common.Behaviours;
public class PerformanceBehaviour : IPipelineBehavior where TRequest : notnull
{
diff --git a/src/Application/Common/Behaviours/UnhandledExceptionBehaviour.cs b/src/Application/Common/Behaviours/UnhandledExceptionBehaviour.cs
index fe79da1f..901cfe10 100644
--- a/src/Application/Common/Behaviours/UnhandledExceptionBehaviour.cs
+++ b/src/Application/Common/Behaviours/UnhandledExceptionBehaviour.cs
@@ -1,6 +1,6 @@
using Microsoft.Extensions.Logging;
-namespace CleanArchitecture.Application.Common.Behaviours;
+namespace SSW.CleanArchitecture.Application.Common.Behaviours;
public class UnhandledExceptionBehaviour : IPipelineBehavior where TRequest : notnull
{
diff --git a/src/Application/Common/Behaviours/ValidationBehaviour.cs b/src/Application/Common/Behaviours/ValidationBehaviour.cs
index f12f675f..7d2a9eb7 100644
--- a/src/Application/Common/Behaviours/ValidationBehaviour.cs
+++ b/src/Application/Common/Behaviours/ValidationBehaviour.cs
@@ -1,4 +1,4 @@
-namespace CleanArchitecture.Application.Common.Behaviours;
+namespace SSW.CleanArchitecture.Application.Common.Behaviours;
public class ValidationBehaviour : IPipelineBehavior
where TRequest : notnull
diff --git a/src/Application/Common/Exceptions/NotFoundException.cs b/src/Application/Common/Exceptions/NotFoundException.cs
index 89a36704..b2fe6b9f 100644
--- a/src/Application/Common/Exceptions/NotFoundException.cs
+++ b/src/Application/Common/Exceptions/NotFoundException.cs
@@ -1,4 +1,4 @@
-namespace CleanArchitecture.Application.Common.Exceptions;
+namespace SSW.CleanArchitecture.Application.Common.Exceptions;
public class NotFoundException : Exception
{
diff --git a/src/Application/Common/Exceptions/ValidationException.cs b/src/Application/Common/Exceptions/ValidationException.cs
index 3a398836..20aab707 100644
--- a/src/Application/Common/Exceptions/ValidationException.cs
+++ b/src/Application/Common/Exceptions/ValidationException.cs
@@ -1,6 +1,6 @@
using FluentValidation.Results;
-namespace CleanArchitecture.Application.Common.Exceptions;
+namespace SSW.CleanArchitecture.Application.Common.Exceptions;
public class ValidationException : Exception
{
diff --git a/src/Application/Common/Interfaces/ICurrentUserService.cs b/src/Application/Common/Interfaces/ICurrentUserService.cs
index 32a74261..49b177f2 100644
--- a/src/Application/Common/Interfaces/ICurrentUserService.cs
+++ b/src/Application/Common/Interfaces/ICurrentUserService.cs
@@ -1,4 +1,4 @@
-namespace Application.Common.Interfaces;
+namespace SSW.CleanArchitecture.Application.Common.Interfaces;
public interface ICurrentUserService
{
diff --git a/src/Application/Common/Interfaces/IDateTime.cs b/src/Application/Common/Interfaces/IDateTime.cs
index 589948ae..440aa84f 100644
--- a/src/Application/Common/Interfaces/IDateTime.cs
+++ b/src/Application/Common/Interfaces/IDateTime.cs
@@ -1,4 +1,4 @@
-namespace Application.Common.Interfaces;
+namespace SSW.CleanArchitecture.Application.Common.Interfaces;
public interface IDateTime
{
diff --git a/src/Application/DependencyInjection.cs b/src/Application/DependencyInjection.cs
index 7eb19ee1..3002d244 100644
--- a/src/Application/DependencyInjection.cs
+++ b/src/Application/DependencyInjection.cs
@@ -1,7 +1,7 @@
-using CleanArchitecture.Application.Common.Behaviours;
-using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection;
+using SSW.CleanArchitecture.Application.Common.Behaviours;
-namespace Application;
+namespace SSW.CleanArchitecture.Application;
public static class DependencyInjection
{
diff --git a/src/Application/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemCommand.cs b/src/Application/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemCommand.cs
index dbb53898..349689b2 100644
--- a/src/Application/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemCommand.cs
+++ b/src/Application/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemCommand.cs
@@ -1,9 +1,9 @@
-using Application.Features.TodoItems.Specifications;
-using Ardalis.Specification;
-using Domain.Entities;
-using Domain.Events;
+using Ardalis.Specification;
+using SSW.CleanArchitecture.Application.Features.TodoItems.Specifications;
+using SSW.CleanArchitecture.Domain.Events;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Application.Features.TodoItems.Commands.CreateTodoItem;
+namespace SSW.CleanArchitecture.Application.Features.TodoItems.Commands.CreateTodoItem;
public record CreateTodoItemCommand(string? Title) : IRequest;
diff --git a/src/Application/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemMapping.cs b/src/Application/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemMapping.cs
index abe0326f..1bbc8f7d 100644
--- a/src/Application/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemMapping.cs
+++ b/src/Application/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemMapping.cs
@@ -1,9 +1,11 @@
-namespace Application.Features.TodoItems.Commands.CreateTodoItem;
+using SSW.CleanArchitecture.Domain.Entities;
+
+namespace SSW.CleanArchitecture.Application.Features.TodoItems.Commands.CreateTodoItem;
public class CreateTodoItemMapping : Profile
{
public CreateTodoItemMapping()
{
- CreateMap();
+ CreateMap();
}
}
\ No newline at end of file
diff --git a/src/Application/Features/TodoItems/EventHandlers/TodoItemCreatedEventHandler.cs b/src/Application/Features/TodoItems/EventHandlers/TodoItemCreatedEventHandler.cs
index 014e6ac5..5ff14bad 100644
--- a/src/Application/Features/TodoItems/EventHandlers/TodoItemCreatedEventHandler.cs
+++ b/src/Application/Features/TodoItems/EventHandlers/TodoItemCreatedEventHandler.cs
@@ -1,8 +1,7 @@
-using Application.Features.TodoItems.Commands.CreateTodoItem;
-using Domain.Events;
-using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging;
+using SSW.CleanArchitecture.Domain.Events;
-namespace Application.Features.TodoItems.EventHandlers;
+namespace SSW.CleanArchitecture.Application.Features.TodoItems.EventHandlers;
public class TodoItemCreatedEventHandler : INotificationHandler
{
diff --git a/src/Application/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsMapping.cs b/src/Application/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsMapping.cs
index 633fa061..d9a52c05 100644
--- a/src/Application/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsMapping.cs
+++ b/src/Application/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsMapping.cs
@@ -1,10 +1,12 @@
-namespace Application.Features.TodoItems.Queries.GetAllTodoItems;
+using SSW.CleanArchitecture.Domain.Entities;
+
+namespace SSW.CleanArchitecture.Application.Features.TodoItems.Queries.GetAllTodoItems;
public class GetAllTodoItemsMapping : Profile
{
public GetAllTodoItemsMapping()
{
- CreateMap()
+ CreateMap()
.ForMember(d => d.Id, opt => opt.MapFrom(s => s.Id.Value));
}
}
\ No newline at end of file
diff --git a/src/Application/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsQuery.cs b/src/Application/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsQuery.cs
index 32d2b69c..dca41005 100644
--- a/src/Application/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsQuery.cs
+++ b/src/Application/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsQuery.cs
@@ -1,8 +1,8 @@
-using Application.Features.TodoItems.Specifications;
using Ardalis.Specification;
-using Domain.Entities;
+using SSW.CleanArchitecture.Application.Features.TodoItems.Specifications;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Application.Features.TodoItems.Queries.GetAllTodoItems;
+namespace SSW.CleanArchitecture.Application.Features.TodoItems.Queries.GetAllTodoItems;
public record GetAllTodoItemsQuery : IRequest>;
diff --git a/src/Application/Features/TodoItems/Queries/GetAllTodoItems/TodoItemDto.cs b/src/Application/Features/TodoItems/Queries/GetAllTodoItems/TodoItemDto.cs
index f38a406e..03407a66 100644
--- a/src/Application/Features/TodoItems/Queries/GetAllTodoItems/TodoItemDto.cs
+++ b/src/Application/Features/TodoItems/Queries/GetAllTodoItems/TodoItemDto.cs
@@ -1,4 +1,4 @@
-namespace Application.Features.TodoItems.Queries.GetAllTodoItems;
+namespace SSW.CleanArchitecture.Application.Features.TodoItems.Queries.GetAllTodoItems;
public class TodoItemDto
{
diff --git a/src/Application/Features/TodoItems/Specifications/AllTodoItemSpec.cs b/src/Application/Features/TodoItems/Specifications/AllTodoItemSpec.cs
index f767d504..011aa963 100644
--- a/src/Application/Features/TodoItems/Specifications/AllTodoItemSpec.cs
+++ b/src/Application/Features/TodoItems/Specifications/AllTodoItemSpec.cs
@@ -1,7 +1,7 @@
using Ardalis.Specification;
-using Domain.Entities;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Application.Features.TodoItems.Specifications;
+namespace SSW.CleanArchitecture.Application.Features.TodoItems.Specifications;
public sealed class AllTodoItemSpec : Specification
{
diff --git a/src/Application/Features/TodoItems/Specifications/TodoItemByTitleSpec.cs b/src/Application/Features/TodoItems/Specifications/TodoItemByTitleSpec.cs
index 61069906..325d2bcf 100644
--- a/src/Application/Features/TodoItems/Specifications/TodoItemByTitleSpec.cs
+++ b/src/Application/Features/TodoItems/Specifications/TodoItemByTitleSpec.cs
@@ -1,7 +1,7 @@
using Ardalis.Specification;
-using Domain.Entities;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Application.Features.TodoItems.Specifications;
+namespace SSW.CleanArchitecture.Application.Features.TodoItems.Specifications;
public sealed class TodoItemByTitleSpec : Specification
{
diff --git a/src/Domain/Common/AuditableEntity.cs b/src/Domain/Common/AuditableEntity.cs
index c66d5700..7b2344b8 100644
--- a/src/Domain/Common/AuditableEntity.cs
+++ b/src/Domain/Common/AuditableEntity.cs
@@ -1,4 +1,4 @@
-namespace Domain.Common;
+namespace SSW.CleanArchitecture.Domain.Common;
public abstract class AuditableEntity
{
diff --git a/src/Domain/Common/BaseEntity.cs b/src/Domain/Common/BaseEntity.cs
index eca47ef9..d3d3d697 100644
--- a/src/Domain/Common/BaseEntity.cs
+++ b/src/Domain/Common/BaseEntity.cs
@@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations.Schema;
-namespace Domain.Common;
+namespace SSW.CleanArchitecture.Domain.Common;
public abstract class BaseEntity : AuditableEntity, IDomainEvents
{
diff --git a/src/Domain/Common/BaseEvent.cs b/src/Domain/Common/BaseEvent.cs
index d9169d48..2c5106b9 100644
--- a/src/Domain/Common/BaseEvent.cs
+++ b/src/Domain/Common/BaseEvent.cs
@@ -1,5 +1,5 @@
using MediatR;
-namespace Domain.Common;
+namespace SSW.CleanArchitecture.Domain.Common;
public record BaseEvent : INotification;
diff --git a/src/Domain/Common/IDomainEvents.cs b/src/Domain/Common/IDomainEvents.cs
index f6831b07..118b5b02 100644
--- a/src/Domain/Common/IDomainEvents.cs
+++ b/src/Domain/Common/IDomainEvents.cs
@@ -1,4 +1,4 @@
-namespace Domain.Common;
+namespace SSW.CleanArchitecture.Domain.Common;
public interface IDomainEvents
{
diff --git a/src/Domain/Domain.csproj b/src/Domain/Domain.csproj
index 82d921ba..6e84c1fb 100644
--- a/src/Domain/Domain.csproj
+++ b/src/Domain/Domain.csproj
@@ -3,6 +3,8 @@
net7.0
enable
+ SSW.CleanArchitecture.Domain
+ SSW.CleanArchitecture.Domain
enable
diff --git a/src/Domain/Entities/TodoItem.cs b/src/Domain/Entities/TodoItem.cs
index e8e63da7..003fd146 100644
--- a/src/Domain/Entities/TodoItem.cs
+++ b/src/Domain/Entities/TodoItem.cs
@@ -1,4 +1,7 @@
-namespace Domain.Entities;
+using SSW.CleanArchitecture.Domain.Common;
+using SSW.CleanArchitecture.Domain.Enum;
+
+namespace SSW.CleanArchitecture.Domain.Entities;
public record TodoItemId(Guid Value);
diff --git a/src/Domain/Enum/PriorityLevel.cs b/src/Domain/Enum/PriorityLevel.cs
index 1d57a275..7e27ba02 100644
--- a/src/Domain/Enum/PriorityLevel.cs
+++ b/src/Domain/Enum/PriorityLevel.cs
@@ -1,4 +1,4 @@
-namespace Domain.Enum;
+namespace SSW.CleanArchitecture.Domain.Enum;
public enum PriorityLevel
{
diff --git a/src/Domain/Events/TodoItemCreatedEvent.cs b/src/Domain/Events/TodoItemCreatedEvent.cs
index 4d81a747..aa4d5f0c 100644
--- a/src/Domain/Events/TodoItemCreatedEvent.cs
+++ b/src/Domain/Events/TodoItemCreatedEvent.cs
@@ -1,5 +1,6 @@
-using Domain.Entities;
+using SSW.CleanArchitecture.Domain.Common;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Domain.Events;
+namespace SSW.CleanArchitecture.Domain.Events;
public record TodoItemCreatedEvent(TodoItem Item) : BaseEvent;
diff --git a/src/Domain/GlobalUsing.cs b/src/Domain/GlobalUsing.cs
index daeb3dbd..c06b5d4f 100644
--- a/src/Domain/GlobalUsing.cs
+++ b/src/Domain/GlobalUsing.cs
@@ -1,2 +1,2 @@
-global using Domain.Common;
-global using Domain.Enum;
+global using SSW.CleanArchitecture.Domain.Common;
+global using SSW.CleanArchitecture.Domain.Enum;
diff --git a/src/Infrastructure/DependencyInjection.cs b/src/Infrastructure/DependencyInjection.cs
index 8c5246d6..f3358d3a 100644
--- a/src/Infrastructure/DependencyInjection.cs
+++ b/src/Infrastructure/DependencyInjection.cs
@@ -1,13 +1,13 @@
-using Application.Common.Interfaces;
-using Ardalis.Specification;
-using Infrastructure.Persistence;
-using Infrastructure.Persistence.Interceptors;
-using Infrastructure.Services;
+using Ardalis.Specification;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using SSW.CleanArchitecture.Application.Common.Interfaces;
+using SSW.CleanArchitecture.Infrastructure.Persistence;
+using SSW.CleanArchitecture.Infrastructure.Persistence.Interceptors;
+using SSW.CleanArchitecture.Infrastructure.Services;
-namespace Infrastructure;
+namespace SSW.CleanArchitecture.Infrastructure;
public static class DependencyInjection
{
diff --git a/src/Infrastructure/Infrastructure.csproj b/src/Infrastructure/Infrastructure.csproj
index 9c31a43e..ebb216e9 100644
--- a/src/Infrastructure/Infrastructure.csproj
+++ b/src/Infrastructure/Infrastructure.csproj
@@ -2,6 +2,8 @@
net7.0
+ SSW.CleanArchitecture.Infrastructure
+ SSW.CleanArchitecture.Infrastructure
enable
enable
diff --git a/src/Infrastructure/Persistence/ApplicationDbContext.cs b/src/Infrastructure/Persistence/ApplicationDbContext.cs
index d132e757..a6009b6a 100644
--- a/src/Infrastructure/Persistence/ApplicationDbContext.cs
+++ b/src/Infrastructure/Persistence/ApplicationDbContext.cs
@@ -1,9 +1,9 @@
-using Domain.Entities;
-using Infrastructure.Persistence.Interceptors;
-using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using SSW.CleanArchitecture.Domain.Entities;
+using SSW.CleanArchitecture.Infrastructure.Persistence.Interceptors;
using System.Reflection;
-namespace Infrastructure.Persistence;
+namespace SSW.CleanArchitecture.Infrastructure.Persistence;
public class ApplicationDbContext : DbContext
{
diff --git a/src/Infrastructure/Persistence/ApplicationDbContextInitializer.cs b/src/Infrastructure/Persistence/ApplicationDbContextInitializer.cs
index 4d25b0f3..b0ef6eb7 100644
--- a/src/Infrastructure/Persistence/ApplicationDbContextInitializer.cs
+++ b/src/Infrastructure/Persistence/ApplicationDbContextInitializer.cs
@@ -1,9 +1,9 @@
-using Domain.Entities;
-using Domain.Enum;
+using SSW.CleanArchitecture.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
+using SSW.CleanArchitecture.Domain.Enum;
-namespace Infrastructure.Persistence;
+namespace SSW.CleanArchitecture.Infrastructure.Persistence;
public class ApplicationDbContextInitializer
{
@@ -21,9 +21,7 @@ public async Task InitializeAsync()
try
{
if (_dbContext.Database.IsSqlServer())
- {
await _dbContext.Database.MigrateAsync();
- }
}
catch (Exception e)
{
@@ -37,9 +35,7 @@ public async Task SeedAsync()
try
{
if (_dbContext.TodoItems.Any())
- {
return;
- }
_dbContext.TodoItems.Add(new TodoItem()
{
diff --git a/src/Infrastructure/Persistence/Configuration/TodoItemConfiguration.cs b/src/Infrastructure/Persistence/Configuration/TodoItemConfiguration.cs
index 36ae808e..27a7cd7d 100644
--- a/src/Infrastructure/Persistence/Configuration/TodoItemConfiguration.cs
+++ b/src/Infrastructure/Persistence/Configuration/TodoItemConfiguration.cs
@@ -1,9 +1,9 @@
-using Domain.Entities;
-using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Infrastructure.Persistence.Configuration;
+namespace SSW.CleanArchitecture.Infrastructure.Persistence.Configuration;
public class TodoItemConfiguration : IEntityTypeConfiguration
{
@@ -14,10 +14,10 @@ public void Configure(EntityTypeBuilder builder)
{
builder.HasKey(t => t.Id);
builder.Property(t => t.Id)
- .HasConversion(x => x.Value,
+ .HasConversion(x => x.Value,
x => new TodoItemId(x))
.ValueGeneratedOnAdd();
-
+
builder.Property(t => t.Title)
.HasMaxLength(200)
.IsRequired();
diff --git a/src/Infrastructure/Persistence/DbSetRepository.cs b/src/Infrastructure/Persistence/DbSetRepository.cs
index e9c82b39..019e7053 100644
--- a/src/Infrastructure/Persistence/DbSetRepository.cs
+++ b/src/Infrastructure/Persistence/DbSetRepository.cs
@@ -1,6 +1,6 @@
using Ardalis.Specification.EntityFrameworkCore;
-namespace Infrastructure.Persistence;
+namespace SSW.CleanArchitecture.Infrastructure.Persistence;
public class DbSetRepository : RepositoryBase where T : class
{
diff --git a/src/Infrastructure/Persistence/Interceptors/DispatchDomainEventsInterceptor.cs b/src/Infrastructure/Persistence/Interceptors/DispatchDomainEventsInterceptor.cs
index dde3d242..bcd85d83 100644
--- a/src/Infrastructure/Persistence/Interceptors/DispatchDomainEventsInterceptor.cs
+++ b/src/Infrastructure/Persistence/Interceptors/DispatchDomainEventsInterceptor.cs
@@ -1,9 +1,9 @@
-using Domain.Common;
-using MediatR;
+using MediatR;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics;
+using SSW.CleanArchitecture.Domain.Common;
-namespace Infrastructure.Persistence.Interceptors;
+namespace SSW.CleanArchitecture.Infrastructure.Persistence.Interceptors;
public class DispatchDomainEventsInterceptor : SaveChangesInterceptor
{
diff --git a/src/Infrastructure/Persistence/Interceptors/EntitySaveChangesInterceptor.cs b/src/Infrastructure/Persistence/Interceptors/EntitySaveChangesInterceptor.cs
index 522b3b5b..92d49c42 100644
--- a/src/Infrastructure/Persistence/Interceptors/EntitySaveChangesInterceptor.cs
+++ b/src/Infrastructure/Persistence/Interceptors/EntitySaveChangesInterceptor.cs
@@ -1,10 +1,10 @@
-using Application.Common.Interfaces;
-using Domain.Common;
-using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.Diagnostics;
+using SSW.CleanArchitecture.Application.Common.Interfaces;
+using SSW.CleanArchitecture.Domain.Common;
-namespace Infrastructure.Persistence.Interceptors;
+namespace SSW.CleanArchitecture.Infrastructure.Persistence.Interceptors;
public class EntitySaveChangesInterceptor : SaveChangesInterceptor
{
@@ -34,12 +34,9 @@ public override ValueTask> SavingChangesAsync(DbContextE
public void UpdateEntities(DbContext? context)
{
if (context is null)
- {
return;
- }
foreach (var entry in context.ChangeTracker.Entries())
- {
if (entry.State is EntityState.Added)
{
entry.Entity.CreatedAt = _dateTime.Now;
@@ -51,7 +48,6 @@ public void UpdateEntities(DbContext? context)
entry.Entity.UpdatedAt = _dateTime.Now;
entry.Entity.UpdatedBy = _currentUserService.UserId;
}
- }
}
}
diff --git a/src/Infrastructure/Persistence/Migrations/20230315031155_Initial.Designer.cs b/src/Infrastructure/Persistence/Migrations/20230315031155_Initial.Designer.cs
index 8bfc059b..149f9b25 100644
--- a/src/Infrastructure/Persistence/Migrations/20230315031155_Initial.Designer.cs
+++ b/src/Infrastructure/Persistence/Migrations/20230315031155_Initial.Designer.cs
@@ -1,11 +1,11 @@
//
using System;
-using Infrastructure.Persistence;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using SSW.CleanArchitecture.Infrastructure.Persistence;
#nullable disable
diff --git a/src/Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs b/src/Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs
index 0c6c62fb..95c367c7 100644
--- a/src/Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs
+++ b/src/Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs
@@ -1,10 +1,10 @@
//
using System;
-using Infrastructure.Persistence;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using SSW.CleanArchitecture.Infrastructure.Persistence;
#nullable disable
diff --git a/src/Infrastructure/Services/DateTimeService.cs b/src/Infrastructure/Services/DateTimeService.cs
index 98c95980..5777dfdb 100644
--- a/src/Infrastructure/Services/DateTimeService.cs
+++ b/src/Infrastructure/Services/DateTimeService.cs
@@ -1,5 +1,5 @@
-using Application.Common.Interfaces;
+using SSW.CleanArchitecture.Application.Common.Interfaces;
-namespace Infrastructure.Services;
+namespace SSW.CleanArchitecture.Infrastructure.Services;
public class DateTimeService : IDateTime { }
\ No newline at end of file
diff --git a/src/WebApi/DependencyInjection.cs b/src/WebApi/DependencyInjection.cs
index d8feca2f..c16c556a 100644
--- a/src/WebApi/DependencyInjection.cs
+++ b/src/WebApi/DependencyInjection.cs
@@ -1,8 +1,8 @@
-using Application.Common.Interfaces;
-using Infrastructure.Persistence;
-using WebApi.Services;
+using SSW.CleanArchitecture.Application.Common.Interfaces;
+using SSW.CleanArchitecture.Infrastructure.Persistence;
+using SSW.CleanArchitecture.WebApi.Services;
-namespace WebApi;
+namespace SSW.CleanArchitecture.WebApi;
public static class DependencyInjection
{
diff --git a/src/WebApi/Extensions/EndpointRouteBuilderExt.cs b/src/WebApi/Extensions/EndpointRouteBuilderExt.cs
index 22020302..cfb61444 100644
--- a/src/WebApi/Extensions/EndpointRouteBuilderExt.cs
+++ b/src/WebApi/Extensions/EndpointRouteBuilderExt.cs
@@ -1,4 +1,4 @@
-namespace WebApi.Extensions;
+namespace SSW.CleanArchitecture.WebApi.Extensions;
public static class EndpointRouteBuilderExt
{
diff --git a/src/WebApi/Features/TodoItemEndpoints.cs b/src/WebApi/Features/TodoItemEndpoints.cs
index 6e6a1104..0fa0b50d 100644
--- a/src/WebApi/Features/TodoItemEndpoints.cs
+++ b/src/WebApi/Features/TodoItemEndpoints.cs
@@ -1,10 +1,9 @@
-using Application.Features.TodoItems.Commands.CreateTodoItem;
-using Application.Features.TodoItems.Queries.GetAllTodoItems;
-using MediatR;
+using MediatR;
+using SSW.CleanArchitecture.Application.Features.TodoItems.Commands.CreateTodoItem;
+using SSW.CleanArchitecture.Application.Features.TodoItems.Queries.GetAllTodoItems;
+using SSW.CleanArchitecture.WebApi.Extensions;
-using WebApi.Extensions;
-
-namespace WebApi.Features;
+namespace SSW.CleanArchitecture.WebApi.Features;
public static class TodoItemEndpoints
{
@@ -20,7 +19,7 @@ public static void MapTodoItemEndpoints(this WebApplication app)
=> sender.Send(new GetAllTodoItemsQuery(), ct))
.WithName("GetTodoItems")
.ProducesGet();
-
+
// TODO: Investigate examples for swagger docs. i.e. better docs than:
// myWeirdField: "string" vs myWeirdField: "this-silly-string"
diff --git a/src/WebApi/Filters/ExceptionFilter.cs b/src/WebApi/Filters/ExceptionFilter.cs
index 3038a56b..ff16ee04 100644
--- a/src/WebApi/Filters/ExceptionFilter.cs
+++ b/src/WebApi/Filters/ExceptionFilter.cs
@@ -1,7 +1,7 @@
-using CleanArchitecture.Application.Common.Exceptions;
-using Microsoft.AspNetCore.Diagnostics;
+using Microsoft.AspNetCore.Diagnostics;
+using SSW.CleanArchitecture.Application.Common.Exceptions;
-namespace WebApi.Filters;
+namespace SSW.CleanArchitecture.WebApi.Filters;
public static class ExceptionFilter
{
diff --git a/src/WebApi/Program.cs b/src/WebApi/Program.cs
index ea9126d8..b0070db1 100644
--- a/src/WebApi/Program.cs
+++ b/src/WebApi/Program.cs
@@ -1,9 +1,9 @@
-using Application;
-using Infrastructure;
-using Infrastructure.Persistence;
-using WebApi;
-using WebApi.Features;
-using WebApi.Filters;
+using SSW.CleanArchitecture.Application;
+using SSW.CleanArchitecture.Infrastructure;
+using SSW.CleanArchitecture.Infrastructure.Persistence;
+using SSW.CleanArchitecture.WebApi;
+using SSW.CleanArchitecture.WebApi.Features;
+using SSW.CleanArchitecture.WebApi.Filters;
var builder = WebApplication.CreateBuilder(args);
@@ -42,4 +42,6 @@
app.MapTodoItemEndpoints();
-app.Run();
\ No newline at end of file
+app.Run();
+
+public partial class Program { }
\ No newline at end of file
diff --git a/src/WebApi/Services/CurrentUserService.cs b/src/WebApi/Services/CurrentUserService.cs
index 0fee73c2..c5198041 100644
--- a/src/WebApi/Services/CurrentUserService.cs
+++ b/src/WebApi/Services/CurrentUserService.cs
@@ -1,7 +1,7 @@
-using Application.Common.Interfaces;
+using SSW.CleanArchitecture.Application.Common.Interfaces;
using System.Security.Claims;
-namespace WebApi.Services;
+namespace SSW.CleanArchitecture.WebApi.Services;
public class CurrentUserService : ICurrentUserService
{
diff --git a/src/WebApi/WebApi.csproj b/src/WebApi/WebApi.csproj
index 99896953..fa80b8bb 100644
--- a/src/WebApi/WebApi.csproj
+++ b/src/WebApi/WebApi.csproj
@@ -2,6 +2,8 @@
net7.0
+ SSW.CleanArchitecture.WebApi
+ SSW.CleanArchitecture.WebApi
enable
enable
fc525b0c-3d84-4847-9b4f-840f8db76d87
@@ -46,7 +48,6 @@
-
diff --git a/tests/Application.IntegrationTests/Application.IntegrationTests.csproj b/tests/Application.IntegrationTests/Application.IntegrationTests.csproj
index f801170e..9b2d05b5 100644
--- a/tests/Application.IntegrationTests/Application.IntegrationTests.csproj
+++ b/tests/Application.IntegrationTests/Application.IntegrationTests.csproj
@@ -1,36 +1,37 @@
-
- net7.0
- enable
- enable
+
+ net7.0
+ SSW.CleanArchitecture.Application.IntegrationTests
+ SSW.CleanArchitecture.Application.IntegrationTests
+ enable
+ enable
+ false
+
- false
-
+
+
+
+
+
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
-
-
-
-
-
-
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
-
+
+
+
diff --git a/tests/Application.IntegrationTests/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemCommandTests.cs b/tests/Application.IntegrationTests/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemCommandTests.cs
index 03e59436..50382eb0 100644
--- a/tests/Application.IntegrationTests/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemCommandTests.cs
+++ b/tests/Application.IntegrationTests/Features/TodoItems/Commands/CreateTodoItem/CreateTodoItemCommandTests.cs
@@ -1,21 +1,22 @@
-using Application.Features.TodoItems.Commands.CreateTodoItem;
-using Application.IntegrationTests.TestHelpers;
-using CleanArchitecture.Application.Common.Exceptions;
-using Domain.Entities;
+using SSW.CleanArchitecture.Application.Features.TodoItems.Commands.CreateTodoItem;
+using SSW.CleanArchitecture.Domain.Entities;
+using SSW.CleanArchitecture.Application.Common.Exceptions;
+using SSW.CleanArchitecture.Application.IntegrationTests;
+using SSW.CleanArchitecture.Application.IntegrationTests.TestHelpers;
-namespace Application.IntegrationTests.Features.TodoItems.Commands.CreateTodoItem;
+namespace SSW.CleanArchitecture.Application.IntegrationTests.Features.TodoItems.Commands.CreateTodoItem;
public class CreateTodoItemCommandTests : IntegrationTestBase
{
public CreateTodoItemCommandTests(TestingDatabaseFixture fixture) : base(fixture) { }
-
+
[Fact]
public async Task ShouldRequireUniqueTitle()
{
await Mediator.Send(new CreateTodoItemCommand("Shopping"));
var command = new CreateTodoItemCommand("Shopping");
-
+
await FluentActions.Invoking(() =>
Mediator.Send(command)).Should().ThrowAsync();
}
@@ -27,7 +28,7 @@ public async Task ShouldCreateTodoItem()
var id = await Mediator.Send(command);
- TodoItem item = (await Context.TodoItems.FindAsync(new TodoItemId(id)))!;
+ var item = (await Context.TodoItems.FindAsync(new TodoItemId(id)))!;
item.Should().NotBeNull();
item.Title.Should().Be(command.Title);
diff --git a/tests/Application.IntegrationTests/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsQueryTests.cs b/tests/Application.IntegrationTests/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsQueryTests.cs
index 8326413f..d072f6fe 100644
--- a/tests/Application.IntegrationTests/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsQueryTests.cs
+++ b/tests/Application.IntegrationTests/Features/TodoItems/Queries/GetAllTodoItems/GetAllTodoItemsQueryTests.cs
@@ -1,9 +1,10 @@
-using Application.Features.TodoItems.Queries.GetAllTodoItems;
-using Application.IntegrationTests.TestHelpers;
using Bogus;
-using Domain.Entities;
+using SSW.CleanArchitecture.Application.Features.TodoItems.Queries.GetAllTodoItems;
+using SSW.CleanArchitecture.Application.IntegrationTests;
+using SSW.CleanArchitecture.Application.IntegrationTests.TestHelpers;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Application.IntegrationTests.Features.TodoItems.Queries.GetAllTodoItems;
+namespace SSW.CleanArchitecture.Application.IntegrationTests.Features.TodoItems.Queries.GetAllTodoItems;
public class GetAllTodoItemsQueryTests : IntegrationTestBase
{
diff --git a/tests/Application.IntegrationTests/IntegrationTestBase.cs b/tests/Application.IntegrationTests/IntegrationTestBase.cs
index 1342a0eb..279f6d85 100644
--- a/tests/Application.IntegrationTests/IntegrationTestBase.cs
+++ b/tests/Application.IntegrationTests/IntegrationTestBase.cs
@@ -1,9 +1,9 @@
-using Application.IntegrationTests.TestHelpers;
-using Infrastructure.Persistence;
using MediatR;
using Microsoft.Extensions.DependencyInjection;
+using SSW.CleanArchitecture.Application.IntegrationTests.TestHelpers;
+using SSW.CleanArchitecture.Infrastructure.Persistence;
-namespace Application.IntegrationTests;
+namespace SSW.CleanArchitecture.Application.IntegrationTests;
[Collection(TestingDatabaseFixture.DatabaseCollectionDefinition)]
public abstract class IntegrationTestBase : IAsyncLifetime
diff --git a/tests/Application.IntegrationTests/TestHelpers/DatabaseContainer.cs b/tests/Application.IntegrationTests/TestHelpers/DatabaseContainer.cs
index 92dee742..ec5a2979 100644
--- a/tests/Application.IntegrationTests/TestHelpers/DatabaseContainer.cs
+++ b/tests/Application.IntegrationTests/TestHelpers/DatabaseContainer.cs
@@ -1,6 +1,6 @@
using Testcontainers.SqlEdge;
-namespace Application.IntegrationTests.TestHelpers;
+namespace SSW.CleanArchitecture.Application.IntegrationTests.TestHelpers;
public class DatabaseContainer
{
diff --git a/tests/Application.IntegrationTests/TestHelpers/IntegrationTestWebApplicationFactory.cs b/tests/Application.IntegrationTests/TestHelpers/IntegrationTestWebApplicationFactory.cs
index 830e6265..5aea0830 100644
--- a/tests/Application.IntegrationTests/TestHelpers/IntegrationTestWebApplicationFactory.cs
+++ b/tests/Application.IntegrationTests/TestHelpers/IntegrationTestWebApplicationFactory.cs
@@ -1,17 +1,17 @@
-using Infrastructure.Persistence;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.AspNetCore.TestHost;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
+using SSW.CleanArchitecture.Infrastructure.Persistence;
-namespace Application.IntegrationTests.TestHelpers;
+namespace SSW.CleanArchitecture.Application.IntegrationTests.TestHelpers;
internal class IntegrationTestWebApplicationFactory : WebApplicationFactory
{
public DatabaseContainer Database { get; }
-
+
public IntegrationTestWebApplicationFactory()
{
Database = new DatabaseContainer();
@@ -19,14 +19,14 @@ public IntegrationTestWebApplicationFactory()
protected override void ConfigureWebHost(IWebHostBuilder webHostBuilder)
{
- webHostBuilder.ConfigureTestServices((services) =>
+ webHostBuilder.ConfigureTestServices((services) =>
{
services
.RemoveAll>()
.RemoveAll()
.AddDbContext((_, options) =>
options.UseSqlServer(
- Database.ConnectionString,
+ Database.ConnectionString,
b => b.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName)));
});
}
diff --git a/tests/Application.IntegrationTests/TestHelpers/TestingDatabaseFixture.cs b/tests/Application.IntegrationTests/TestHelpers/TestingDatabaseFixture.cs
index 033fc483..d53b210e 100644
--- a/tests/Application.IntegrationTests/TestHelpers/TestingDatabaseFixture.cs
+++ b/tests/Application.IntegrationTests/TestHelpers/TestingDatabaseFixture.cs
@@ -1,15 +1,15 @@
using Microsoft.Extensions.DependencyInjection;
using Respawn;
-namespace Application.IntegrationTests.TestHelpers;
+namespace SSW.CleanArchitecture.Application.IntegrationTests.TestHelpers;
public class TestingDatabaseFixture : IAsyncLifetime
{
public const string DatabaseCollectionDefinition = "Database collection";
-
+
private readonly IntegrationTestWebApplicationFactory _factory;
private Respawner _checkpoint = default!;
-
+
public IServiceScopeFactory ScopeFactory { get; private set; } = default!;
private string ConnectionString => _factory.Database.ConnectionString!;
diff --git a/tests/Application.UnitTests/Application.UnitTests.csproj b/tests/Application.UnitTests/Application.UnitTests.csproj
index d9ae3637..9d01755a 100644
--- a/tests/Application.UnitTests/Application.UnitTests.csproj
+++ b/tests/Application.UnitTests/Application.UnitTests.csproj
@@ -1,30 +1,31 @@
-
- net7.0
- enable
- enable
+
+ net7.0
+ SSW.CleanArchitecture.Application.UnitTests
+ SSW.CleanArchitecture.Application.UnitTests
+ enable
+ enable
+ false
+
- false
-
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
-
+
+
+
diff --git a/tests/Application.UnitTests/Features/TodoItems/Specifications/AllTodoItemSpecTests.cs b/tests/Application.UnitTests/Features/TodoItems/Specifications/AllTodoItemSpecTests.cs
index 834de06a..5d9b69e8 100644
--- a/tests/Application.UnitTests/Features/TodoItems/Specifications/AllTodoItemSpecTests.cs
+++ b/tests/Application.UnitTests/Features/TodoItems/Specifications/AllTodoItemSpecTests.cs
@@ -1,8 +1,8 @@
-using Application.Features.TodoItems.Specifications;
using Bogus;
-using Domain.Entities;
+using SSW.CleanArchitecture.Application.Features.TodoItems.Specifications;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Application.UnitTests.Features.TodoItems.Specifications;
+namespace SSW.CleanArchitecture.Application.UnitTests.Features.TodoItems.Specifications;
public class AllTodoItemSpecTests
{
diff --git a/tests/Application.UnitTests/Features/TodoItems/Specifications/TodoItemByTitleSpecTests.cs b/tests/Application.UnitTests/Features/TodoItems/Specifications/TodoItemByTitleSpecTests.cs
index 7698b1c6..9abee236 100644
--- a/tests/Application.UnitTests/Features/TodoItems/Specifications/TodoItemByTitleSpecTests.cs
+++ b/tests/Application.UnitTests/Features/TodoItems/Specifications/TodoItemByTitleSpecTests.cs
@@ -1,13 +1,12 @@
-using Application.Features.TodoItems.Specifications;
-using Bogus;
-using Domain.Entities;
+using SSW.CleanArchitecture.Application.Features.TodoItems.Specifications;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Application.UnitTests.Features.TodoItems.Specifications;
+namespace SSW.CleanArchitecture.Application.UnitTests.Features.TodoItems.Specifications;
public class TodoItemByTitleSpecTests
{
private readonly List _entities;
-
+
public TodoItemByTitleSpecTests()
{
_entities = new List()
diff --git a/tests/Architecture.Tests/Architecture.Tests.csproj b/tests/Architecture.Tests/Architecture.Tests.csproj
index aa540a0c..b438797b 100644
--- a/tests/Architecture.Tests/Architecture.Tests.csproj
+++ b/tests/Architecture.Tests/Architecture.Tests.csproj
@@ -1,33 +1,34 @@
-
- net7.0
- enable
- enable
+
+ net7.0
+ SSW.CleanArchitecture.Architecture.UnitTests
+ SSW.CleanArchitecture.Architecture.UnitTests
+ enable
+ enable
+ false
+
- false
-
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/tests/Architecture.Tests/DatabaseEntitiesTest.cs b/tests/Architecture.Tests/DatabaseEntitiesTest.cs
index 0b7dff1e..bc656417 100644
--- a/tests/Architecture.Tests/DatabaseEntitiesTest.cs
+++ b/tests/Architecture.Tests/DatabaseEntitiesTest.cs
@@ -1,16 +1,17 @@
-using Domain.Common;
using FluentAssertions;
using Microsoft.EntityFrameworkCore;
using NetArchTest.Rules;
+using SSW.CleanArchitecture.Domain.Common;
+using SSW.CleanArchitecture.Infrastructure;
-namespace Architecture.Tests;
+namespace SSW.CleanArchitecture.Architecture.UnitTests;
public class DatabaseEntities
{
[Fact]
public void Entities_Should_Inherits_BaseComponent()
{
- var entityTypes = Types.InAssembly(typeof(Infrastructure.DependencyInjection).Assembly)
+ var entityTypes = Types.InAssembly(typeof(DependencyInjection).Assembly)
.That()
.Inherit(typeof(DbContext))
.GetTypes()
@@ -25,7 +26,7 @@ public void Entities_Should_Inherits_BaseComponent()
.HaveName(entityTypes)
.Should()
.Inherit(typeof(BaseEntity<>));
-
+
result.GetTypes().Count().Should().BePositive();
result.GetResult().IsSuccessful.Should().BeTrue();
}
diff --git a/tests/Domain.UnitTests/Domain.UnitTests.csproj b/tests/Domain.UnitTests/Domain.UnitTests.csproj
index 5d838aca..6cb9c28b 100644
--- a/tests/Domain.UnitTests/Domain.UnitTests.csproj
+++ b/tests/Domain.UnitTests/Domain.UnitTests.csproj
@@ -1,29 +1,36 @@
-
- net7.0
- enable
- enable
+
+ net7.0
+ SSW.CleanArchitecture.Domain.UnitTests
+ SSW.CleanArchitecture.Domain.UnitTests
+ enable
+ enable
+ false
+
- false
-
+
+
+
+
+
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
-
-
-
+
+
+
diff --git a/tests/Domain.UnitTests/Entities/TodoItemTests.cs b/tests/Domain.UnitTests/Entities/TodoItemTests.cs
index 936b24a3..194a4247 100644
--- a/tests/Domain.UnitTests/Entities/TodoItemTests.cs
+++ b/tests/Domain.UnitTests/Entities/TodoItemTests.cs
@@ -1,6 +1,6 @@
-using Domain.Entities;
+using SSW.CleanArchitecture.Domain.Entities;
-namespace Domain.UnitTests.Entities;
+namespace SSW.CleanArchitecture.Domain.UnitTests.Entities;
public class TodoItemTests
{