generator-codedesignplus 0.0.1-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENCE.md +13 -0
- package/README.md +454 -0
- package/generators/app/index.mjs +22 -0
- package/generators/microservice/core/aggregate.mjs +25 -0
- package/generators/microservice/core/appsettings.mjs +73 -0
- package/generators/microservice/core/asyncWorker.mjs +87 -0
- package/generators/microservice/core/command.mjs +54 -0
- package/generators/microservice/core/consumer.mjs +73 -0
- package/generators/microservice/core/controller.mjs +25 -0
- package/generators/microservice/core/core.mjs +98 -0
- package/generators/microservice/core/dataTransferObject.mjs +31 -0
- package/generators/microservice/core/domainEvent.mjs +36 -0
- package/generators/microservice/core/dotnet.mjs +56 -0
- package/generators/microservice/core/entity.mjs +29 -0
- package/generators/microservice/core/errors.mjs +37 -0
- package/generators/microservice/core/grpc.mjs +97 -0
- package/generators/microservice/core/microservice.mjs +212 -0
- package/generators/microservice/core/proto.mjs +61 -0
- package/generators/microservice/core/query.mjs +59 -0
- package/generators/microservice/core/repository.mjs +41 -0
- package/generators/microservice/core/utils.mjs +196 -0
- package/generators/microservice/core/valueObject.mjs +29 -0
- package/generators/microservice/core/xml.mjs +48 -0
- package/generators/microservice/index.mjs +38 -0
- package/generators/microservice/templates/aggregate/ItemAggregate.cs +9 -0
- package/generators/microservice/templates/command/ItemCommand.cs +12 -0
- package/generators/microservice/templates/command/ItemCommandHandler.cs +9 -0
- package/generators/microservice/templates/consumer/ItemHandler.cs +14 -0
- package/generators/microservice/templates/controller/ItemController.cs +8 -0
- package/generators/microservice/templates/data-transfer-object/ItemDto.cs +6 -0
- package/generators/microservice/templates/domain-event/ItemDomainEvent.cs +15 -0
- package/generators/microservice/templates/entity/ItemEntity.cs +6 -0
- package/generators/microservice/templates/errors/Error.cs +6 -0
- package/generators/microservice/templates/grpc/ItemService.cs +6 -0
- package/generators/microservice/templates/grpc/grpc.proto +22 -0
- package/generators/microservice/templates/microservice/.dockerignore +30 -0
- package/generators/microservice/templates/microservice/CodeDesignPlus.Net.Microservice.sln +155 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/CodeDesignPlus.Net.Microservice.Application.csproj +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Errors.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/AddProductToOrder/AddProductToOrderCommand.cs +17 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/AddProductToOrder/AddProductToOrderCommandHandler.cs +27 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CancelOrder/CancelOrderCommand.cs +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CancelOrder/CancelOrderCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CompleteOrder/CompleteOrderCommand.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CompleteOrder/CompleteOrderCommandHandler.cs +25 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CreateOrder/CreateOrderCommand.cs +32 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CreateOrder/CreateOrderCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/RemoveProduct/RemoveProductCommand.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/RemoveProduct/RemoveProductCommandHandler.cs +22 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommand.cs +14 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/AddressDto.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/ClientDto.cs +9 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/OrderDto.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/ProductDto.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/FindOrderById/FindOrderByIdQuery.cs +4 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/FindOrderById/FindOrderByIdQueryHandler.cs +23 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/GetAllOrders/GetAllOrdersQuery.cs +3 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/GetAllOrders/GetAllOrdersQueryHandler.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Setup/MapsterConfig.cs +26 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Startup.cs +15 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Usings.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/CodeDesignPlus.Net.Microservice.Domain.csproj +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/AddProductToOrderParams.cs +15 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/CancelOrderParams.cs +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/CompleteOrderParams.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/RemoveProductFromOrderParams.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/UpdateQuantityProductParams.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCancelledDomainEvent.cs +21 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCompletedDomainEvent.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCreatedDomainEvent.cs +44 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductAddedToOrderDomainEvent.cs +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductQuantityUpdatedDomainEvent.cs +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductRemovedFromOrderDomainEvent.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Entities/ProductEntity.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Enums/OrderStatus.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Errors.cs +28 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/OrderAggregate.cs +124 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Repositories/IOrderRepository.cs +14 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Startup.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Usings.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/ValueObjects/AddressValueObject.cs +30 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/ValueObjects/ClientValueObject.cs +27 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/CodeDesignPlus.Net.Microservice.Infrastructure.csproj +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Errors.cs +6 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Repositories/OrderRepository.cs +109 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Startup.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Usings.cs +15 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/CodeDesignPlus.Net.Microservice.AsyncWorker.csproj +31 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Program.cs +41 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Properties/launchSettings.json +15 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Usings.cs +10 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/appsettings.Development.json +2 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/appsettings.json +129 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/CodeDesignPlus.Net.Microservice.Rest.csproj +36 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/CodeDesignPlus.Net.Microservice.Rest.csproj.user +11 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Controllers/OrderController.cs +138 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Core/Mapster/MapsterConfig.cs +12 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Dockerfile +37 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Program.cs +52 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Properties/launchSettings.json +26 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Usings.cs +22 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/appsettings.Development.json +3 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/appsettings.json +86 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/CodeDesignPlus.Net.Microservice.gRpc.csproj +35 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/CodeDesignPlus.Net.Microservice.gRpc.csproj.user +9 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Core/Mapster/MapsterConfig.cs +13 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Program.cs +61 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Properties/launchSettings.json +23 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Protos/orders.proto +66 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Services/OrderService.cs +29 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Usings.cs +12 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/appsettings.Development.json +3 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/appsettings.json +92 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/CodeDesignPlus.Net.Microservice.AsyncWorker.Test.csproj +35 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Properties/launchSettings.json +12 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Usings.cs +8 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/CodeDesignPlus.Net.Microservice.Rest.Test.csproj +36 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Controllers/OrderControllerTest.cs +337 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Properties/launchSettings.json +12 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Usings.cs +8 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/CodeDesignPlus.Net.Microservice.gRpc.Test.csproj +46 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Protos/orders.proto +65 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Services/OrdersServiceTest.cs +64 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Usings.cs +7 -0
- package/generators/microservice/templates/microservice/tests/load/load-rest.js +63 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/CodeDesignPlus.Net.Microservice.Application.Test.csproj +34 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/AddProductToOrder/AddProductToOrderCommandHandlerTest.cs +98 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/AddProductToOrder/AddProductToOrderCommandTest.cs +84 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CancelOrder/CancelOrderCommandHandlerTest.cs +74 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CancelOrder/CancelOrderCommandTest.cs +43 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CompleteOrder/CompleteOrderCommandHandlerTest.cs +74 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CompleteOrder/CompleteOrderCommandTest.cs +32 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CreateOrder/CreateOrderCommandHandlerTest.cs +100 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CreateOrder/CreateOrderCommandTest.cs +122 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/RemoveProduct/RemoveProductCommandHandlerTest.cs +71 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/RemoveProduct/RemoveProductCommandTest.cs +33 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandHandlerTest.cs +82 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandTest.cs +51 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Queries/FindOrderById/FindOrderByIdQueryHandlerTest.cs +70 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Queries/GetAllOrders/GetAllOrdersQueryHandlerTest.cs +80 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Setup/MapsterConfigTest.cs +20 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Usings.cs +18 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/CodeDesignPlus.Net.Microservice.AsyncWorker.Test.csproj +38 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Usings.cs +9 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/CodeDesignPlus.Net.Microservice.Default.Test.csproj +35 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Usings.cs +6 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/AggregateTest.cs +37 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/CommandsTests.cs +29 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/DataTransferObjectTest.cs +47 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/DomainEventTest.cs +42 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/EntityTest.cs +25 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/ErrorsTest.cs +55 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/QueryTests.cs +29 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/StartupTest.cs +43 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/CodeDesignPlus.Net.Microservice.Domain.Test.csproj +38 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/DomainEvents/OrderCancelledDomainEventTest.cs +46 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/OrderAggregateTest.cs +518 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/Usings.cs +7 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/CodeDesignPlus.Net.Microservice.Infrastructure.Test.csproj +34 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/Repositories/OrderRepositoryTest.cs +259 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/Usings.cs +14 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/CodeDesignPlus.Net.Microservice.Rest.Test.csproj +40 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Controllers/OrderControllerTest.cs +189 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Core/Mapster/MapsterConfigTest.cs +19 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Usings.cs +14 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/CodeDesignPlus.Net.Microservice.gRpc.Test.csproj +39 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Core/Mapster/MapsterConfigTest.cs +19 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Services/OrderServiceTest.cs +72 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Usings.cs +15 -0
- package/generators/microservice/templates/microservice/tools/convert-crlf-to-lf.sh +6 -0
- package/generators/microservice/templates/microservice/tools/sonarqube/sonar.ps1 +18 -0
- package/generators/microservice/templates/microservice/tools/sonarqube/sonar.sh +18 -0
- package/generators/microservice/templates/microservice/tools/update-packages/update-packages.ps1 +10 -0
- package/generators/microservice/templates/microservice/tools/update-packages/update-packages.sh +11 -0
- package/generators/microservice/templates/microservice/tools/upgrade-dotnet/upgrade-assistant.ps1 +10 -0
- package/generators/microservice/templates/microservice/tools/upgrade-dotnet/upgrade-assistant.sh +11 -0
- package/generators/microservice/templates/microservice/tools/vault/config-vault.ps1 +178 -0
- package/generators/microservice/templates/microservice/tools/vault/config-vault.sh +152 -0
- package/generators/microservice/templates/others/MapsterConfig.cs +9 -0
- package/generators/microservice/templates/query/ItemQuery.cs +4 -0
- package/generators/microservice/templates/query/ItemQueryHandler.cs +9 -0
- package/generators/microservice/templates/repository/IItemRepository.cs +6 -0
- package/generators/microservice/templates/repository/ItemRepository.cs +7 -0
- package/generators/microservice/templates/value-object/ItemValueObject.cs +23 -0
- package/generators/microservice/types/aggregate.mjs +19 -0
- package/generators/microservice/types/appsettings.mjs +26 -0
- package/generators/microservice/types/base.mjs +24 -0
- package/generators/microservice/types/command.mjs +38 -0
- package/generators/microservice/types/consumer.mjs +21 -0
- package/generators/microservice/types/controller.mjs +20 -0
- package/generators/microservice/types/dataTransferObject.mjs +19 -0
- package/generators/microservice/types/domainEvents.mjs +22 -0
- package/generators/microservice/types/entity.mjs +21 -0
- package/generators/microservice/types/index.mjs +25 -0
- package/generators/microservice/types/proto.mjs +19 -0
- package/generators/microservice/types/query.mjs +38 -0
- package/generators/microservice/types/repository.mjs +21 -0
- package/generators/microservice/types/valueObject.mjs +23 -0
- package/package.json +70 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.RemoveProduct;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
3
|
+
|
|
4
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.RemoveProduct;
|
|
5
|
+
|
|
6
|
+
public class RemoveProductCommandHandlerTest
|
|
7
|
+
{
|
|
8
|
+
private readonly IUserContext user;
|
|
9
|
+
|
|
10
|
+
public RemoveProductCommandHandlerTest()
|
|
11
|
+
{
|
|
12
|
+
var userMock = new Mock<IUserContext>();
|
|
13
|
+
|
|
14
|
+
userMock.Setup(x => x.IdUser).Returns(Guid.NewGuid());
|
|
15
|
+
userMock.Setup(x => x.Tenant).Returns(Guid.NewGuid());
|
|
16
|
+
|
|
17
|
+
this.user = userMock.Object;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
[Fact]
|
|
21
|
+
public async Task Handle_OrderNotFound_ThrowApplicaionException()
|
|
22
|
+
{
|
|
23
|
+
// Arrange
|
|
24
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
25
|
+
var pubsub = new Mock<IPubSub>();
|
|
26
|
+
var handler = new RemoveProductCommandHandler(orderRepository.Object, user, pubsub.Object);
|
|
27
|
+
var request = new RemoveProductCommand(Guid.NewGuid(), Guid.NewGuid());
|
|
28
|
+
|
|
29
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync((OrderAggregate)null!);
|
|
30
|
+
|
|
31
|
+
// Act
|
|
32
|
+
var exception = await Assert.ThrowsAsync<CodeDesignPlusException>(() => handler.Handle(request, CancellationToken.None));
|
|
33
|
+
|
|
34
|
+
// Assert
|
|
35
|
+
Assert.Equal(Errors.OrderNotFound.GetMessage(), exception.Message);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
[Fact]
|
|
39
|
+
public async Task Handle_Success()
|
|
40
|
+
{
|
|
41
|
+
// Arrange
|
|
42
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
43
|
+
var pubsub = new Mock<IPubSub>();
|
|
44
|
+
var handler = new RemoveProductCommandHandler(orderRepository.Object, user, pubsub.Object);
|
|
45
|
+
var request = new RemoveProductCommand(Guid.NewGuid(), Guid.NewGuid());
|
|
46
|
+
var clientValueObject = ClientValueObject.Create(Guid.NewGuid(), "Client", "1234567890", "CC");
|
|
47
|
+
var addressValueObject = AddressValueObject.Create("Colombia", "Bogota", "Bogota", "Calle 123", 123456);
|
|
48
|
+
|
|
49
|
+
var order = OrderAggregate.Create(Guid.NewGuid(), clientValueObject, addressValueObject, this.user.Tenant, this.user.IdUser);
|
|
50
|
+
|
|
51
|
+
order.Products.Add(new ProductEntity()
|
|
52
|
+
{
|
|
53
|
+
Id = request.ProductId,
|
|
54
|
+
Name = "Product",
|
|
55
|
+
Price = 100,
|
|
56
|
+
Quantity = 1
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync(order);
|
|
60
|
+
|
|
61
|
+
// Act
|
|
62
|
+
await handler.Handle(request, CancellationToken.None);
|
|
63
|
+
|
|
64
|
+
// Assert
|
|
65
|
+
Assert.NotNull(order.UpdatedAt);
|
|
66
|
+
Assert.Equal(this.user.IdUser, order.UpdatedBy);
|
|
67
|
+
orderRepository.Verify(x => x.RemoveProductFromOrderAsync(It.IsAny<RemoveProductFromOrderParams>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
68
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.RemoveProduct;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.RemoveProduct;
|
|
4
|
+
|
|
5
|
+
public class RemoveProductCommandTest
|
|
6
|
+
{
|
|
7
|
+
|
|
8
|
+
private readonly Validator _validator;
|
|
9
|
+
|
|
10
|
+
public RemoveProductCommandTest()
|
|
11
|
+
{
|
|
12
|
+
_validator = new Validator();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
[Fact]
|
|
16
|
+
public async Task Should_Have_Error_When_Id_Is_Empty()
|
|
17
|
+
{
|
|
18
|
+
var command = new RemoveProductCommand(Guid.Empty, Guid.NewGuid());
|
|
19
|
+
var result = await _validator.ValidateAsync(command);
|
|
20
|
+
|
|
21
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Id) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
[Fact]
|
|
25
|
+
public async Task Should_Have_Error_When_ProductId_Is_Empty()
|
|
26
|
+
{
|
|
27
|
+
var command = new RemoveProductCommand(Guid.NewGuid(), Guid.Empty);
|
|
28
|
+
var result = await _validator.ValidateAsync(command);
|
|
29
|
+
|
|
30
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.ProductId) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.UpdateQuantityProduct;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
3
|
+
|
|
4
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.UpdateQuantityProduct;
|
|
5
|
+
|
|
6
|
+
public class UpdateQuantityProductCommandHandlerTest
|
|
7
|
+
{
|
|
8
|
+
private readonly IUserContext user;
|
|
9
|
+
|
|
10
|
+
public UpdateQuantityProductCommandHandlerTest()
|
|
11
|
+
{
|
|
12
|
+
var userMock = new Mock<IUserContext>();
|
|
13
|
+
|
|
14
|
+
userMock.Setup(x => x.IdUser).Returns(Guid.NewGuid());
|
|
15
|
+
userMock.Setup(x => x.Tenant).Returns(Guid.NewGuid());
|
|
16
|
+
|
|
17
|
+
this.user = userMock.Object;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
[Fact]
|
|
21
|
+
public async Task Should_Throw_Exception_When_Order_Not_Found()
|
|
22
|
+
{
|
|
23
|
+
// Arrange
|
|
24
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
25
|
+
var pubsub = new Mock<IPubSub>();
|
|
26
|
+
|
|
27
|
+
var command = new UpdateQuantityProductCommand(Guid.NewGuid(), Guid.NewGuid(), 1);
|
|
28
|
+
|
|
29
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync(default(OrderAggregate));
|
|
30
|
+
|
|
31
|
+
var handler = new UpdateQuantityProductCommandHandler(orderRepository.Object, this.user, pubsub.Object);
|
|
32
|
+
|
|
33
|
+
// Act
|
|
34
|
+
var exception = await Assert.ThrowsAsync<CodeDesignPlusException>(() => handler.Handle(command, CancellationToken.None));
|
|
35
|
+
|
|
36
|
+
// Assert
|
|
37
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
38
|
+
orderRepository.Verify(x => x.UpdateQuantityProductAsync(It.IsAny<UpdateQuantityProductParams>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
39
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
40
|
+
|
|
41
|
+
Assert.Equal(Errors.OrderNotFound.GetCode(), exception.Code);
|
|
42
|
+
Assert.Equal(Errors.OrderNotFound.GetMessage(), exception.Message);
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
[Fact]
|
|
47
|
+
public async Task Handler_Success()
|
|
48
|
+
{
|
|
49
|
+
// Arrange
|
|
50
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
51
|
+
var pubsub = new Mock<IPubSub>();
|
|
52
|
+
var client = ClientValueObject.Create(Guid.NewGuid(), "client", "1234567890", "CC");
|
|
53
|
+
var address = AddressValueObject.Create("Colombia", "Bogota", "Bogota", "Calle 123", 123456);
|
|
54
|
+
|
|
55
|
+
var order = OrderAggregate.Create(Guid.NewGuid(), client, address, this.user.Tenant, this.user.IdUser);
|
|
56
|
+
|
|
57
|
+
order.Products.Add(new ProductEntity()
|
|
58
|
+
{
|
|
59
|
+
Id = Guid.NewGuid(),
|
|
60
|
+
Name = "Product",
|
|
61
|
+
Price = 100,
|
|
62
|
+
Quantity = 1
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
var command = new UpdateQuantityProductCommand(order.Id, order.Products[0].Id, 2);
|
|
66
|
+
|
|
67
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync(order);
|
|
68
|
+
|
|
69
|
+
var handler = new UpdateQuantityProductCommandHandler(orderRepository.Object, this.user, pubsub.Object);
|
|
70
|
+
|
|
71
|
+
// Act
|
|
72
|
+
await handler.Handle(command, CancellationToken.None);
|
|
73
|
+
|
|
74
|
+
// Assert
|
|
75
|
+
Assert.NotNull(order.UpdatedAt);
|
|
76
|
+
Assert.Equal(this.user.IdUser, order.UpdatedBy);
|
|
77
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
78
|
+
orderRepository.Verify(x => x.UpdateQuantityProductAsync(It.IsAny<UpdateQuantityProductParams>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
79
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.UpdateQuantityProduct;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.UpdateQuantityProduct;
|
|
4
|
+
|
|
5
|
+
public class UpdateQuantityProductCommandTest
|
|
6
|
+
{
|
|
7
|
+
|
|
8
|
+
private readonly Validator _validator;
|
|
9
|
+
|
|
10
|
+
public UpdateQuantityProductCommandTest()
|
|
11
|
+
{
|
|
12
|
+
_validator = new Validator();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
[Fact]
|
|
16
|
+
public async Task Should_Have_Error_When_Id_Is_Empty()
|
|
17
|
+
{
|
|
18
|
+
var command = new UpdateQuantityProductCommand(Guid.Empty, Guid.NewGuid(), 1);
|
|
19
|
+
var result = await _validator.ValidateAsync(command);
|
|
20
|
+
|
|
21
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Id) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
[Fact]
|
|
25
|
+
public async Task Should_Have_Error_When_ProductId_Is_Empty()
|
|
26
|
+
{
|
|
27
|
+
var command = new UpdateQuantityProductCommand(Guid.NewGuid(), Guid.Empty, 1);
|
|
28
|
+
var result = await _validator.ValidateAsync(command);
|
|
29
|
+
|
|
30
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.ProductId) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[Fact]
|
|
34
|
+
public async Task Should_Have_Error_When_Quantity_Is_Less_Than_One()
|
|
35
|
+
{
|
|
36
|
+
var command = new UpdateQuantityProductCommand(Guid.NewGuid(), Guid.NewGuid(), 0);
|
|
37
|
+
var result = await _validator.ValidateAsync(command);
|
|
38
|
+
|
|
39
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Quantity) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[Fact]
|
|
43
|
+
public async Task Should_Not_Have_Error()
|
|
44
|
+
{
|
|
45
|
+
var command = new UpdateQuantityProductCommand(Guid.NewGuid(), Guid.NewGuid(), 1);
|
|
46
|
+
var result = await _validator.ValidateAsync(command);
|
|
47
|
+
|
|
48
|
+
Assert.Empty(result.Errors);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Cache.Abstractions;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Queries.FindOrderById;
|
|
3
|
+
|
|
4
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Queries.FindOrderById;
|
|
5
|
+
|
|
6
|
+
public class FindOrderByIdQueryHandlerTest
|
|
7
|
+
{
|
|
8
|
+
[Fact]
|
|
9
|
+
public async Task Handle_ValidId_ReturnsOrderDto()
|
|
10
|
+
{
|
|
11
|
+
// Arrange
|
|
12
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
13
|
+
var mapper = new Mock<IMapper>();
|
|
14
|
+
var query = new FindOrderByIdQuery(Guid.NewGuid());
|
|
15
|
+
var cancellationToken = new CancellationToken();
|
|
16
|
+
var dtoExpected = new OrderDto();
|
|
17
|
+
var cacheManagerMock = new Mock<ICacheManager>();
|
|
18
|
+
|
|
19
|
+
cacheManagerMock.Setup(x => x.ExistsAsync(It.IsAny<string>())).ReturnsAsync(false);
|
|
20
|
+
cacheManagerMock.Setup(x => x.SetAsync(It.IsAny<string>(), It.IsAny<OrderDto>(), It.IsAny<TimeSpan?>()));
|
|
21
|
+
|
|
22
|
+
mapper.Setup(x => x.Map<OrderDto>(It.IsAny<object>())).Returns(dtoExpected);
|
|
23
|
+
|
|
24
|
+
var handler = new FindOrderByIdQueryHandler(orderRepository.Object, mapper.Object, cacheManagerMock.Object);
|
|
25
|
+
|
|
26
|
+
// Act
|
|
27
|
+
var result = await handler.Handle(query, cancellationToken);
|
|
28
|
+
|
|
29
|
+
// Assert
|
|
30
|
+
Assert.NotNull(result);
|
|
31
|
+
Assert.IsType<OrderDto>(result);
|
|
32
|
+
Assert.Equal(dtoExpected, result);
|
|
33
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
34
|
+
mapper.Verify(x => x.Map<OrderDto>(It.IsAny<object>()), Times.Once);
|
|
35
|
+
cacheManagerMock.Verify(x => x.SetAsync(It.IsAny<string>(), It.IsAny<OrderDto>(), It.IsAny<TimeSpan?>()), Times.Once);
|
|
36
|
+
cacheManagerMock.Verify(x => x.ExistsAsync(It.IsAny<string>()), Times.Once);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
[Fact]
|
|
41
|
+
public async Task Handle_Cache_ReturnsOrderDto()
|
|
42
|
+
{
|
|
43
|
+
// Arrange
|
|
44
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
45
|
+
var mapper = new Mock<IMapper>();
|
|
46
|
+
var query = new FindOrderByIdQuery(Guid.NewGuid());
|
|
47
|
+
var cancellationToken = new CancellationToken();
|
|
48
|
+
var dtoExpected = new OrderDto();
|
|
49
|
+
var cacheManagerMock = new Mock<ICacheManager>();
|
|
50
|
+
|
|
51
|
+
cacheManagerMock.Setup(x => x.ExistsAsync(It.IsAny<string>())).ReturnsAsync(true);
|
|
52
|
+
cacheManagerMock.Setup(x => x.GetAsync<OrderDto>(It.IsAny<string>())).ReturnsAsync(dtoExpected);
|
|
53
|
+
|
|
54
|
+
mapper.Setup(x => x.Map<OrderDto>(It.IsAny<object>())).Returns(dtoExpected);
|
|
55
|
+
|
|
56
|
+
var handler = new FindOrderByIdQueryHandler(orderRepository.Object, mapper.Object, cacheManagerMock.Object);
|
|
57
|
+
|
|
58
|
+
// Act
|
|
59
|
+
var result = await handler.Handle(query, cancellationToken);
|
|
60
|
+
|
|
61
|
+
// Assert
|
|
62
|
+
Assert.NotNull(result);
|
|
63
|
+
Assert.IsType<OrderDto>(result);
|
|
64
|
+
Assert.Equal(dtoExpected, result);
|
|
65
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
66
|
+
mapper.Verify(x => x.Map<OrderDto>(It.IsAny<object>()), Times.Never);
|
|
67
|
+
cacheManagerMock.Verify(x => x.GetAsync<OrderDto>(It.IsAny<string>()), Times.Once);
|
|
68
|
+
cacheManagerMock.Verify(x => x.ExistsAsync(It.IsAny<string>()), Times.Once);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Queries.GetAllOrders;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Queries.GetAllOrders;
|
|
4
|
+
|
|
5
|
+
public class GetAllOrdersQueryHandlerTest
|
|
6
|
+
{
|
|
7
|
+
|
|
8
|
+
[Fact]
|
|
9
|
+
public async Task Handle_Success()
|
|
10
|
+
{
|
|
11
|
+
// Arrange
|
|
12
|
+
var criteria = new C.Criteria();
|
|
13
|
+
var query = new GetAllOrdersQuery(criteria);
|
|
14
|
+
var orders = new List<OrderDto>
|
|
15
|
+
{
|
|
16
|
+
new() {
|
|
17
|
+
Id = Guid.NewGuid(),
|
|
18
|
+
Client = new ClientDto(){
|
|
19
|
+
Name = "Client 1",
|
|
20
|
+
Document = "123456789",
|
|
21
|
+
TypeDocument = "CC",
|
|
22
|
+
Id = Guid.NewGuid()
|
|
23
|
+
},
|
|
24
|
+
CompletedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
25
|
+
CreatedBy = Guid.NewGuid(),
|
|
26
|
+
CreatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
27
|
+
IsActive = true,
|
|
28
|
+
Products = [
|
|
29
|
+
new(){
|
|
30
|
+
Id = Guid.NewGuid(),
|
|
31
|
+
Name = "Product 1",
|
|
32
|
+
Price = 100,
|
|
33
|
+
Quantity = 1
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
|
|
37
|
+
},
|
|
38
|
+
new() {
|
|
39
|
+
Id = Guid.NewGuid(),
|
|
40
|
+
Client = new ClientDto(){
|
|
41
|
+
Name = "Client 2",
|
|
42
|
+
Document = "987654321",
|
|
43
|
+
TypeDocument = "CC",
|
|
44
|
+
Id = Guid.NewGuid()
|
|
45
|
+
},
|
|
46
|
+
CompletedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
47
|
+
CreatedBy = Guid.NewGuid(),
|
|
48
|
+
CreatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
49
|
+
IsActive = true,
|
|
50
|
+
Products = [
|
|
51
|
+
new(){
|
|
52
|
+
Id = Guid.NewGuid(),
|
|
53
|
+
Name = "Product 2",
|
|
54
|
+
Price = 200,
|
|
55
|
+
Quantity = 2
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
var orderRepositoryMock = new Mock<IOrderRepository>();
|
|
63
|
+
var mapperMock = new Mock<IMapper>();
|
|
64
|
+
var queryHandler = new GetAllOrdersQueryHandler(orderRepositoryMock.Object, mapperMock.Object);
|
|
65
|
+
|
|
66
|
+
mapperMock.Setup(x => x.Map<List<OrderDto>>(It.IsAny<List<OrderAggregate>>())).Returns(orders);
|
|
67
|
+
|
|
68
|
+
// Act
|
|
69
|
+
var result = await queryHandler.Handle(query, CancellationToken.None);
|
|
70
|
+
|
|
71
|
+
// Assert
|
|
72
|
+
Assert.NotNull(result);
|
|
73
|
+
Assert.NotEmpty(result);
|
|
74
|
+
Assert.Equal(orders.Count, result.Count);
|
|
75
|
+
|
|
76
|
+
orderRepositoryMock.Verify(x => x.MatchingAsync<OrderAggregate>(criteria, It.IsAny<CancellationToken>()), Times.Once);
|
|
77
|
+
mapperMock.Verify(x => x.Map<List<OrderDto>>(It.IsAny<List<OrderAggregate>>()), Times.Once);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Setup;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Setup;
|
|
4
|
+
|
|
5
|
+
public class MapsterConfigTest
|
|
6
|
+
{
|
|
7
|
+
[Fact]
|
|
8
|
+
public void Configure_ShouldMapProperties_Success()
|
|
9
|
+
{
|
|
10
|
+
// Arrange
|
|
11
|
+
var config = TypeAdapterConfig.GlobalSettings;
|
|
12
|
+
config.Scan(typeof(MapsterConfigOrder).Assembly);
|
|
13
|
+
|
|
14
|
+
// Act
|
|
15
|
+
var mapper = new Mapper(config);
|
|
16
|
+
|
|
17
|
+
// Assert
|
|
18
|
+
Assert.NotNull(mapper);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.Core.Abstractions;
|
|
2
|
+
global using CodeDesignPlus.Net.Exceptions.Extensions;
|
|
3
|
+
global using CodeDesignPlus.Net.PubSub.Abstractions;
|
|
4
|
+
global using Moq;
|
|
5
|
+
global using System;
|
|
6
|
+
global using CodeDesignPlus.Net.Security.Abstractions;
|
|
7
|
+
global using CodeDesignPlus.Net.Exceptions;
|
|
8
|
+
global using Mapster;
|
|
9
|
+
global using MapsterMapper;
|
|
10
|
+
global using C = CodeDesignPlus.Net.Core.Abstractions.Models.Criteria;
|
|
11
|
+
global using CodeDesignPlus.Net.Serializers;
|
|
12
|
+
|
|
13
|
+
global using CodeDesignPlus.Net.Microservice.Application.Order.DataTransferObjects;
|
|
14
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Enums;
|
|
15
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Entities;
|
|
16
|
+
global using CodeDesignPlus.Net.Microservice.Domain;
|
|
17
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Repositories;
|
|
18
|
+
global using CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
2
|
+
<PropertyGroup>
|
|
3
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
4
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
|
5
|
+
<Nullable>enable</Nullable>
|
|
6
|
+
<IsPackable>false</IsPackable>
|
|
7
|
+
<IsTestProject>true</IsTestProject>
|
|
8
|
+
<IsPackable>false</IsPackable>
|
|
9
|
+
<SonarQubeExclude>true</SonarQubeExclude>
|
|
10
|
+
</PropertyGroup>
|
|
11
|
+
<ItemGroup>
|
|
12
|
+
<PackageReference Include="coverlet.msbuild" Version="6.0.3">
|
|
13
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
14
|
+
<PrivateAssets>all</PrivateAssets>
|
|
15
|
+
</PackageReference>
|
|
16
|
+
<PackageReference Include="coverlet.collector" Version="6.0.3">
|
|
17
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
18
|
+
<PrivateAssets>all</PrivateAssets>
|
|
19
|
+
</PackageReference>
|
|
20
|
+
<PackageReference Include="CodeDesignPlus.Net.xUnit.Microservice" Version="0.5.0-beta.60" />
|
|
21
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
|
22
|
+
<PackageReference Include="Moq" Version="4.20.72" />
|
|
23
|
+
<PackageReference Include="xunit" Version="2.9.2" />
|
|
24
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.0">
|
|
25
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
26
|
+
<PrivateAssets>all</PrivateAssets>
|
|
27
|
+
</PackageReference>
|
|
28
|
+
</ItemGroup>
|
|
29
|
+
<ItemGroup>
|
|
30
|
+
<Using Include="Xunit" />
|
|
31
|
+
</ItemGroup>
|
|
32
|
+
<ItemGroup>
|
|
33
|
+
<ProjectReference Include="..\..\..\src\entrypoints\CodeDesignPlus.Net.Microservice.AsyncWorker\CodeDesignPlus.Net.Microservice.AsyncWorker.csproj" />
|
|
34
|
+
</ItemGroup>
|
|
35
|
+
<ItemGroup>
|
|
36
|
+
<Folder Include="Consumers\" />
|
|
37
|
+
</ItemGroup>
|
|
38
|
+
</Project>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.xUnit.Microservice.Utils.Logger;
|
|
2
|
+
global using Microsoft.Extensions.Logging;
|
|
3
|
+
global using Moq;
|
|
4
|
+
global using Newtonsoft.Json;
|
|
5
|
+
global using System;
|
|
6
|
+
global using CodeDesignPlus.Net.Serializers;
|
|
7
|
+
|
|
8
|
+
global using CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
9
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Entities;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
2
|
+
<PropertyGroup>
|
|
3
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
4
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
|
5
|
+
<Nullable>enable</Nullable>
|
|
6
|
+
<IsPackable>false</IsPackable>
|
|
7
|
+
</PropertyGroup>
|
|
8
|
+
<ItemGroup>
|
|
9
|
+
<PackageReference Include="CodeDesignPlus.Net.Serializers" Version="0.5.0-beta.60" />
|
|
10
|
+
<PackageReference Include="coverlet.msbuild" Version="6.0.3">
|
|
11
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
12
|
+
<PrivateAssets>all</PrivateAssets>
|
|
13
|
+
</PackageReference>
|
|
14
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
|
15
|
+
<PackageReference Include="Moq" Version="4.20.72" />
|
|
16
|
+
<PackageReference Include="xunit" Version="2.9.2" />
|
|
17
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.0">
|
|
18
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
19
|
+
<PrivateAssets>all</PrivateAssets>
|
|
20
|
+
</PackageReference>
|
|
21
|
+
<PackageReference Include="coverlet.collector" Version="6.0.3">
|
|
22
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
23
|
+
<PrivateAssets>all</PrivateAssets>
|
|
24
|
+
</PackageReference>
|
|
25
|
+
</ItemGroup>
|
|
26
|
+
<ItemGroup>
|
|
27
|
+
<PackageReference Include="CodeDesignPlus.Net.xUnit.Microservice" Version="0.5.0-beta.60" />
|
|
28
|
+
</ItemGroup>
|
|
29
|
+
<ItemGroup>
|
|
30
|
+
<ProjectReference Include="..\..\..\src\domain\CodeDesignPlus.Net.Microservice.Infrastructure\CodeDesignPlus.Net.Microservice.Infrastructure.csproj" />
|
|
31
|
+
</ItemGroup>
|
|
32
|
+
<ItemGroup>
|
|
33
|
+
<Folder Include="Validations\" />
|
|
34
|
+
</ItemGroup>
|
|
35
|
+
</Project>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.xUnit.Microservice.Attributes;
|
|
2
|
+
global using System.Reflection;
|
|
3
|
+
global using CodeDesignPlus.Net.Core.Abstractions;
|
|
4
|
+
global using CodeDesignPlus.Net.xUnit.Microservice.Utils.Reflection;
|
|
5
|
+
global using Xunit;
|
|
6
|
+
// global using CodeDesignPlus.Net.Serializers;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Default.Test.Validations;
|
|
2
|
+
|
|
3
|
+
/// <summary>
|
|
4
|
+
/// A class for validating aggregates.
|
|
5
|
+
/// </summary>
|
|
6
|
+
public class AggregateTest
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
/// Validates that aggregates can be created using the constructor and their properties can be set and retrieved correctly.
|
|
10
|
+
/// </summary>
|
|
11
|
+
[Theory]
|
|
12
|
+
[Aggregate<Domain.Errors>(false)]
|
|
13
|
+
public void Aggregate_Constructor_ShouldSetAndRetrievePropertiesCorrectly(Type aggregate, object instance, Dictionary<ParameterInfo, object> values)
|
|
14
|
+
{
|
|
15
|
+
// Assert
|
|
16
|
+
Assert.NotNull(instance);
|
|
17
|
+
|
|
18
|
+
var value = aggregate.GetProperty(nameof(AggregateRoot.Id))!.GetValue(instance, null);
|
|
19
|
+
var valueExpected = values.First(x => x.Key.Name!.Equals(nameof(AggregateRoot.Id), StringComparison.OrdinalIgnoreCase)).Value;
|
|
20
|
+
Assert.Equal(valueExpected, value);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/// <summary>
|
|
24
|
+
/// Validates that aggregates can be created using the named constructor with custom values.
|
|
25
|
+
/// </summary>
|
|
26
|
+
[Theory]
|
|
27
|
+
[Aggregate<Domain.Errors>(true)]
|
|
28
|
+
public void Aggregate_CreateMethod_ShouldCreateInstanceWithCustomValues(Type aggregate, object instance, Dictionary<ParameterInfo, object> values)
|
|
29
|
+
{
|
|
30
|
+
// Assert
|
|
31
|
+
Assert.NotNull(instance);
|
|
32
|
+
|
|
33
|
+
var value = aggregate.GetProperty(nameof(AggregateRoot.Id))!.GetValue(instance, null);
|
|
34
|
+
var valueExpected = values.First(x => x.Key.Name!.Equals(nameof(AggregateRoot.Id), StringComparison.OrdinalIgnoreCase)).Value;
|
|
35
|
+
Assert.Equal(valueExpected, value);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Default.Test.Validations;
|
|
2
|
+
|
|
3
|
+
/// <summary>
|
|
4
|
+
/// A class for validating commands.
|
|
5
|
+
/// </summary>
|
|
6
|
+
public class CommandsTests
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
/// Validates that commands can be created and their properties can be set and retrieved correctly.
|
|
10
|
+
/// </summary>
|
|
11
|
+
[Theory]
|
|
12
|
+
[Command<Application.Errors>]
|
|
13
|
+
public void Commands_GetAndSet_Success(Type command, object instance, Dictionary<ParameterInfo, object> values)
|
|
14
|
+
{
|
|
15
|
+
// Assert
|
|
16
|
+
Assert.NotNull(instance);
|
|
17
|
+
|
|
18
|
+
var properties = command.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
|
19
|
+
|
|
20
|
+
foreach (var property in properties)
|
|
21
|
+
{
|
|
22
|
+
var value = property.GetValue(instance);
|
|
23
|
+
var valueExpected = values.FirstOrDefault(x => x.Key.Name == property.Name).Value;
|
|
24
|
+
|
|
25
|
+
Assert.NotNull(value);
|
|
26
|
+
Assert.Equal(valueExpected, value);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Default.Test.Validations;
|
|
2
|
+
|
|
3
|
+
/// <summary>
|
|
4
|
+
/// A class for validating data transfer objects (DTOs).
|
|
5
|
+
/// </summary>
|
|
6
|
+
public class DataTransferObjectTests
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
/// Validates that DTOs can be created and their properties can be set and retrieved correctly.
|
|
10
|
+
/// </summary>
|
|
11
|
+
[Theory]
|
|
12
|
+
[DataTransferObject<Application.Errors>]
|
|
13
|
+
public void Dtos_GetAndSet_Application(Type dto, object instance)
|
|
14
|
+
{
|
|
15
|
+
// Assert
|
|
16
|
+
Assert.NotNull(instance);
|
|
17
|
+
|
|
18
|
+
var properties = dto.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
|
19
|
+
|
|
20
|
+
foreach (var property in properties)
|
|
21
|
+
{
|
|
22
|
+
var value = property.GetValue(instance);
|
|
23
|
+
Assert.NotNull(value);
|
|
24
|
+
Assert.NotEqual(value, property.PropertyType.GetDefaultValue());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/// <summary>
|
|
29
|
+
/// Validates that DTOs can be created and their properties can be set and retrieved correctly.
|
|
30
|
+
/// </summary>
|
|
31
|
+
[Theory]
|
|
32
|
+
[DataTransferObject<Domain.Errors>]
|
|
33
|
+
public void Dtos_GetAndSet_Domain(Type dto, object instance)
|
|
34
|
+
{
|
|
35
|
+
// Assert
|
|
36
|
+
Assert.NotNull(instance);
|
|
37
|
+
|
|
38
|
+
var properties = dto.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
|
39
|
+
|
|
40
|
+
foreach (var property in properties)
|
|
41
|
+
{
|
|
42
|
+
var value = property.GetValue(instance);
|
|
43
|
+
Assert.NotNull(value);
|
|
44
|
+
Assert.NotEqual(value, property.PropertyType.GetDefaultValue());
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|