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,98 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.AddProductToOrder;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
3
|
+
|
|
4
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.AddProductToOrder;
|
|
5
|
+
|
|
6
|
+
public class AddProductToOrderCommandHandlerTest
|
|
7
|
+
{
|
|
8
|
+
private readonly IUserContext user;
|
|
9
|
+
|
|
10
|
+
public AddProductToOrderCommandHandlerTest()
|
|
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
|
+
|
|
27
|
+
var command = new AddProductToOrderCommand
|
|
28
|
+
(
|
|
29
|
+
Guid.NewGuid(),
|
|
30
|
+
Guid.NewGuid(),
|
|
31
|
+
"Product 1",
|
|
32
|
+
"Description Product 1",
|
|
33
|
+
100,
|
|
34
|
+
1
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync(default(OrderAggregate));
|
|
38
|
+
|
|
39
|
+
var handler = new AddProductToOrderCommandHandler(orderRepository.Object, this.user, pubsub.Object);
|
|
40
|
+
|
|
41
|
+
// Act
|
|
42
|
+
var exception = await Assert.ThrowsAsync<CodeDesignPlusException>(() => handler.Handle(command, CancellationToken.None));
|
|
43
|
+
|
|
44
|
+
// Assert
|
|
45
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
46
|
+
orderRepository.Verify(x => x.AddProductToOrderAsync(It.IsAny<AddProductToOrderParams>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
47
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
48
|
+
|
|
49
|
+
Assert.Equal(Errors.OrderNotFound.GetCode(), exception.Code);
|
|
50
|
+
Assert.Equal(Errors.OrderNotFound.GetMessage(), exception.Message);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
[Fact]
|
|
54
|
+
public async Task Handle_Success()
|
|
55
|
+
{
|
|
56
|
+
// Arrange
|
|
57
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
58
|
+
var pubsub = new Mock<IPubSub>();
|
|
59
|
+
var client = ClientValueObject.Create(Guid.NewGuid(), "client", "1234567890", "CC");
|
|
60
|
+
var address = AddressValueObject.Create("Colombia", "Bogota", "Bogota", "Calle 123", 123456);
|
|
61
|
+
|
|
62
|
+
var order = OrderAggregate.Create(Guid.NewGuid(), client, address, this.user.Tenant, this.user.IdUser);
|
|
63
|
+
|
|
64
|
+
var command = new AddProductToOrderCommand
|
|
65
|
+
(
|
|
66
|
+
Guid.NewGuid(),
|
|
67
|
+
Guid.NewGuid(),
|
|
68
|
+
"Product 1",
|
|
69
|
+
"Description Product 1",
|
|
70
|
+
100,
|
|
71
|
+
1
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>())).ReturnsAsync(order);
|
|
75
|
+
|
|
76
|
+
var handler = new AddProductToOrderCommandHandler(orderRepository.Object, this.user, pubsub.Object);
|
|
77
|
+
|
|
78
|
+
// Act
|
|
79
|
+
await handler.Handle(command, CancellationToken.None);
|
|
80
|
+
|
|
81
|
+
// Assert
|
|
82
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
83
|
+
orderRepository.Verify(x => x.AddProductToOrderAsync(It.IsAny<AddProductToOrderParams>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
84
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
85
|
+
|
|
86
|
+
Assert.NotEmpty(order.Products);
|
|
87
|
+
Assert.NotNull(order.UpdatedAt);
|
|
88
|
+
Assert.Equal(this.user.IdUser, order.UpdatedBy);
|
|
89
|
+
Assert.Contains(order.Products,
|
|
90
|
+
x =>
|
|
91
|
+
x.Name == command.Name &&
|
|
92
|
+
x.Description == command.Description &&
|
|
93
|
+
x.Price == command.Price &&
|
|
94
|
+
x.Quantity == command.Quantity
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.AddProductToOrder;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.AddProductToOrder;
|
|
4
|
+
|
|
5
|
+
public class AddProductToOrderCommandTest
|
|
6
|
+
{
|
|
7
|
+
private readonly Validator _validator;
|
|
8
|
+
|
|
9
|
+
public AddProductToOrderCommandTest()
|
|
10
|
+
{
|
|
11
|
+
_validator = new Validator();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
[Fact]
|
|
15
|
+
public async Task Should_Have_Error_When_Id_Is_Empty()
|
|
16
|
+
{
|
|
17
|
+
var command = new AddProductToOrderCommand(Guid.Empty, Guid.NewGuid(), "product", "description", 1, 10);
|
|
18
|
+
var result = await _validator.ValidateAsync(command);
|
|
19
|
+
|
|
20
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Id) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[Fact]
|
|
24
|
+
public async Task Should_Have_Error_When_IdProduct_Is_Empty()
|
|
25
|
+
{
|
|
26
|
+
var command = new AddProductToOrderCommand(Guid.NewGuid(), Guid.Empty, "product", "description", 1, 10);
|
|
27
|
+
var result = await _validator.ValidateAsync(command);
|
|
28
|
+
|
|
29
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.IdProduct) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
[Theory]
|
|
33
|
+
[InlineData("")]
|
|
34
|
+
[InlineData(null)]
|
|
35
|
+
public async Task Should_Have_Error_When_Name_Is_Invalid(string? name)
|
|
36
|
+
{
|
|
37
|
+
var command = new AddProductToOrderCommand(Guid.NewGuid(), Guid.NewGuid(), name!, "description", 1, 10);
|
|
38
|
+
var result = await _validator.ValidateAsync(command);
|
|
39
|
+
|
|
40
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Name) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
[Theory]
|
|
44
|
+
[InlineData("")]
|
|
45
|
+
[InlineData(null)]
|
|
46
|
+
public async Task Should_Have_Error_When_Description_Is_Invalid(string? description)
|
|
47
|
+
{
|
|
48
|
+
var command = new AddProductToOrderCommand(Guid.NewGuid(), Guid.NewGuid(), "product", description!, 1, 10);
|
|
49
|
+
var result = await _validator.ValidateAsync(command);
|
|
50
|
+
|
|
51
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Description) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
[Theory]
|
|
55
|
+
[InlineData(0)]
|
|
56
|
+
[InlineData(-10)]
|
|
57
|
+
public async Task Should_Have_Error_When_Price_Is_Invalid(long price)
|
|
58
|
+
{
|
|
59
|
+
var command = new AddProductToOrderCommand(Guid.NewGuid(), Guid.NewGuid(), "product", "description", price, 10);
|
|
60
|
+
var result = await _validator.ValidateAsync(command);
|
|
61
|
+
|
|
62
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Price) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
[Theory]
|
|
66
|
+
[InlineData(0)]
|
|
67
|
+
[InlineData(-10)]
|
|
68
|
+
public async Task Should_Have_Error_When_Quantity_Is_Invalid(int quantity)
|
|
69
|
+
{
|
|
70
|
+
var command = new AddProductToOrderCommand(Guid.NewGuid(), Guid.NewGuid(), "product", "description", 1, quantity);
|
|
71
|
+
var result = await _validator.ValidateAsync(command);
|
|
72
|
+
|
|
73
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Quantity) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
[Fact]
|
|
77
|
+
public async Task Should_Not_Have_Error_When_All_Properties_Are_Valid()
|
|
78
|
+
{
|
|
79
|
+
var command = new AddProductToOrderCommand(Guid.NewGuid(), Guid.NewGuid(), "product", "description", 1, 10);
|
|
80
|
+
var result = await _validator.ValidateAsync(command);
|
|
81
|
+
|
|
82
|
+
Assert.Empty(result.Errors);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CancelOrder;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
3
|
+
|
|
4
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.CancelOrder;
|
|
5
|
+
|
|
6
|
+
public class CancelOrderCommandHandlerTest
|
|
7
|
+
{
|
|
8
|
+
|
|
9
|
+
private readonly IUserContext user;
|
|
10
|
+
|
|
11
|
+
public CancelOrderCommandHandlerTest()
|
|
12
|
+
{
|
|
13
|
+
var userMock = new Mock<IUserContext>();
|
|
14
|
+
|
|
15
|
+
userMock.Setup(x => x.IdUser).Returns(Guid.NewGuid());
|
|
16
|
+
userMock.Setup(x => x.Tenant).Returns(Guid.NewGuid());
|
|
17
|
+
|
|
18
|
+
this.user = userMock.Object;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
[Fact]
|
|
22
|
+
public async Task Handle_OrderNotFound_ThrowApplicaionException()
|
|
23
|
+
{
|
|
24
|
+
// Arrange
|
|
25
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
26
|
+
var pubsub = new Mock<IPubSub>();
|
|
27
|
+
|
|
28
|
+
var command = new CancelOrderCommand(Guid.NewGuid(), "Reason");
|
|
29
|
+
|
|
30
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync(default(OrderAggregate));
|
|
31
|
+
|
|
32
|
+
var handler = new CancelOrderCommandHandler(orderRepository.Object, this.user, pubsub.Object);
|
|
33
|
+
|
|
34
|
+
// Act
|
|
35
|
+
var exception = await Assert.ThrowsAsync<CodeDesignPlusException>(() => handler.Handle(command, CancellationToken.None));
|
|
36
|
+
|
|
37
|
+
// Assert
|
|
38
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
39
|
+
orderRepository.Verify(x => x.CancelOrderAsync(It.IsAny<CancelOrderParams>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
40
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
41
|
+
|
|
42
|
+
Assert.Equal(Errors.OrderNotFound.GetCode(), exception.Code);
|
|
43
|
+
Assert.Equal(Errors.OrderNotFound.GetMessage(), exception.Message);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
[Fact]
|
|
47
|
+
public async Task Handle_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
|
+
var command = new CancelOrderCommand(order.Id, "Reason");
|
|
58
|
+
|
|
59
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync(order);
|
|
60
|
+
|
|
61
|
+
var handler = new CancelOrderCommandHandler(orderRepository.Object, this.user, pubsub.Object);
|
|
62
|
+
|
|
63
|
+
// Act
|
|
64
|
+
await handler.Handle(command, CancellationToken.None);
|
|
65
|
+
|
|
66
|
+
// Assert
|
|
67
|
+
Assert.NotNull(order.UpdatedAt);
|
|
68
|
+
Assert.Equal(this.user.IdUser, order.UpdatedBy);
|
|
69
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
70
|
+
orderRepository.Verify(x => x.CancelOrderAsync(It.IsAny<CancelOrderParams>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
71
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CancelOrder;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.CancelOrder;
|
|
4
|
+
|
|
5
|
+
public class CancelOrderCommandTest
|
|
6
|
+
{
|
|
7
|
+
private readonly Validator _validator;
|
|
8
|
+
|
|
9
|
+
public CancelOrderCommandTest()
|
|
10
|
+
{
|
|
11
|
+
_validator = new Validator();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
[Fact]
|
|
15
|
+
public async Task Should_Have_Error_When_Id_Is_Empty()
|
|
16
|
+
{
|
|
17
|
+
var command = new CancelOrderCommand(Guid.Empty, "Reason");
|
|
18
|
+
var result = await _validator.ValidateAsync(command);
|
|
19
|
+
|
|
20
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Id) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[Theory]
|
|
24
|
+
[InlineData("")]
|
|
25
|
+
[InlineData(null)]
|
|
26
|
+
public async Task Should_Have_Error_When_Reason_Is_Invalid(string? reason)
|
|
27
|
+
{
|
|
28
|
+
var command = new CancelOrderCommand(Guid.NewGuid(), reason!);
|
|
29
|
+
var result = await _validator.ValidateAsync(command);
|
|
30
|
+
|
|
31
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Reason) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
[Fact]
|
|
35
|
+
public async Task Should_Not_Have_Error()
|
|
36
|
+
{
|
|
37
|
+
var command = new CancelOrderCommand(Guid.NewGuid(), "Reason");
|
|
38
|
+
var result = await _validator.ValidateAsync(command);
|
|
39
|
+
|
|
40
|
+
Assert.Empty(result.Errors);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CompleteOrder;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
3
|
+
|
|
4
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.CompleteOrder;
|
|
5
|
+
|
|
6
|
+
public class CompleteOrderCommandHandlerTest
|
|
7
|
+
{
|
|
8
|
+
|
|
9
|
+
private readonly IUserContext user;
|
|
10
|
+
|
|
11
|
+
public CompleteOrderCommandHandlerTest()
|
|
12
|
+
{
|
|
13
|
+
var userMock = new Mock<IUserContext>();
|
|
14
|
+
|
|
15
|
+
userMock.Setup(x => x.IdUser).Returns(Guid.NewGuid());
|
|
16
|
+
userMock.Setup(x => x.Tenant).Returns(Guid.NewGuid());
|
|
17
|
+
|
|
18
|
+
this.user = userMock.Object;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
[Fact]
|
|
23
|
+
public async Task Handle_OrderNotFound_ThrowApplicaionException()
|
|
24
|
+
{
|
|
25
|
+
// Arrange
|
|
26
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
27
|
+
var pubsub = new Mock<IPubSub>();
|
|
28
|
+
|
|
29
|
+
var command = new CompleteOrderCommand(Guid.NewGuid());
|
|
30
|
+
|
|
31
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync(default(OrderAggregate));
|
|
32
|
+
|
|
33
|
+
var handler = new CompleteOrderCommandHandler(orderRepository.Object, this.user, pubsub.Object);
|
|
34
|
+
|
|
35
|
+
// Act
|
|
36
|
+
var exception = await Assert.ThrowsAsync<CodeDesignPlusException>(() => handler.Handle(command, CancellationToken.None));
|
|
37
|
+
|
|
38
|
+
// Assert
|
|
39
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
40
|
+
orderRepository.Verify(x => x.CompleteOrderAsync(It.IsAny<CompleteOrderParams>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
41
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
42
|
+
|
|
43
|
+
Assert.Equal(Errors.OrderNotFound.GetCode(), exception.Code);
|
|
44
|
+
Assert.Equal(Errors.OrderNotFound.GetMessage(), exception.Message);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
[Fact]
|
|
48
|
+
public async Task Handle_Success()
|
|
49
|
+
{
|
|
50
|
+
// Arrange
|
|
51
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
52
|
+
var pubsub = new Mock<IPubSub>();
|
|
53
|
+
var client = ClientValueObject.Create(Guid.NewGuid(), "client", "1234567890", "CC");
|
|
54
|
+
var address = AddressValueObject.Create("Colombia", "Bogota", "Bogota", "Calle 123", 123456);
|
|
55
|
+
|
|
56
|
+
var order = OrderAggregate.Create(Guid.NewGuid(), client, address, this.user.Tenant, this.user.IdUser);
|
|
57
|
+
|
|
58
|
+
var command = new CompleteOrderCommand(order.Id);
|
|
59
|
+
|
|
60
|
+
orderRepository.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!.ReturnsAsync(order);
|
|
61
|
+
|
|
62
|
+
var handler = new CompleteOrderCommandHandler(orderRepository.Object, this.user, pubsub.Object);
|
|
63
|
+
|
|
64
|
+
// Act
|
|
65
|
+
await handler.Handle(command, CancellationToken.None);
|
|
66
|
+
|
|
67
|
+
// Assert
|
|
68
|
+
Assert.NotNull(order.UpdatedAt);
|
|
69
|
+
Assert.Equal(this.user.IdUser, order.UpdatedBy);
|
|
70
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
71
|
+
orderRepository.Verify(x => x.CompleteOrderAsync(It.IsAny<CompleteOrderParams>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CompleteOrder;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.CompleteOrder;
|
|
4
|
+
|
|
5
|
+
public class CompleteOrderCommandTest
|
|
6
|
+
{
|
|
7
|
+
|
|
8
|
+
private readonly Validator _validator;
|
|
9
|
+
|
|
10
|
+
public CompleteOrderCommandTest()
|
|
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 CompleteOrderCommand(Guid.Empty);
|
|
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_Not_Have_Error()
|
|
26
|
+
{
|
|
27
|
+
var command = new CompleteOrderCommand(Guid.NewGuid());
|
|
28
|
+
var result = await _validator.ValidateAsync(command);
|
|
29
|
+
|
|
30
|
+
Assert.Empty(result.Errors);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CreateOrder;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
3
|
+
|
|
4
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.CreateOrder;
|
|
5
|
+
|
|
6
|
+
public class CreateOrderCommandHandlerTest
|
|
7
|
+
{
|
|
8
|
+
private Mock<IUserContext> userMock;
|
|
9
|
+
|
|
10
|
+
public CreateOrderCommandHandlerTest()
|
|
11
|
+
{
|
|
12
|
+
this.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
|
+
|
|
18
|
+
[Fact]
|
|
19
|
+
public async Task Handle_OrderAlreadyExists_ThrowApplicaionException()
|
|
20
|
+
{
|
|
21
|
+
// Arrange
|
|
22
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
23
|
+
var pubsub = new Mock<IPubSub>();
|
|
24
|
+
|
|
25
|
+
var clientValueObject = ClientValueObject.Create(Guid.NewGuid(), "Client", "1234567890", "CC");
|
|
26
|
+
var addressValueObject = AddressValueObject.Create("Colombia", "Bogota", "Bogota", "Calle 123", 123456);
|
|
27
|
+
|
|
28
|
+
var client = new ClientDto()
|
|
29
|
+
{
|
|
30
|
+
Id = Guid.NewGuid(),
|
|
31
|
+
Name = "Client",
|
|
32
|
+
Document = "1234567890",
|
|
33
|
+
TypeDocument = "CC"
|
|
34
|
+
};
|
|
35
|
+
var address = new AddressDto(){
|
|
36
|
+
Country = "Colombia",
|
|
37
|
+
State = "Bogota",
|
|
38
|
+
City = "Bogota",
|
|
39
|
+
Address = "Calle 123",
|
|
40
|
+
CodePostal = 123456
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
var command = new CreateOrderCommand(Guid.NewGuid(), client, address);
|
|
44
|
+
|
|
45
|
+
orderRepository
|
|
46
|
+
.Setup(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()))!
|
|
47
|
+
.ReturnsAsync(OrderAggregate.Create(Guid.NewGuid(), clientValueObject, addressValueObject, this.userMock.Object.Tenant, this.userMock.Object.IdUser));
|
|
48
|
+
|
|
49
|
+
var handler = new CreateOrderCommandHandler(orderRepository.Object, this.userMock.Object, pubsub.Object);
|
|
50
|
+
|
|
51
|
+
// Act
|
|
52
|
+
var exception = await Assert.ThrowsAsync<Exceptions.CodeDesignPlusException>(() => handler.Handle(command, CancellationToken.None));
|
|
53
|
+
|
|
54
|
+
// Assert
|
|
55
|
+
orderRepository.Verify(x => x.FindAsync(It.IsAny<Guid>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
56
|
+
orderRepository.Verify(x => x.CreateOrderAsync(It.IsAny<OrderAggregate>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
57
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Never);
|
|
58
|
+
|
|
59
|
+
Assert.Equal(Errors.OrderAlreadyExists.GetCode(), exception.Code);
|
|
60
|
+
Assert.Equal(Errors.OrderAlreadyExists.GetMessage(), exception.Message);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[Fact]
|
|
64
|
+
public async Task Handle_Success()
|
|
65
|
+
{
|
|
66
|
+
// Arrange
|
|
67
|
+
var orderRepository = new Mock<IOrderRepository>();
|
|
68
|
+
var pubsub = new Mock<IPubSub>();
|
|
69
|
+
|
|
70
|
+
var client = new ClientDto()
|
|
71
|
+
{
|
|
72
|
+
Id = Guid.NewGuid(),
|
|
73
|
+
Name = "Client",
|
|
74
|
+
Document = "1234567890",
|
|
75
|
+
TypeDocument = "CC"
|
|
76
|
+
};
|
|
77
|
+
var address = new AddressDto(){
|
|
78
|
+
Country = "Colombia",
|
|
79
|
+
State = "Bogota",
|
|
80
|
+
City = "Bogota",
|
|
81
|
+
Address = "Calle 123",
|
|
82
|
+
CodePostal = 123456
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
var command = new CreateOrderCommand(Guid.NewGuid(), client, address);
|
|
87
|
+
|
|
88
|
+
var handler = new CreateOrderCommandHandler(orderRepository.Object, this.userMock.Object, pubsub.Object);
|
|
89
|
+
|
|
90
|
+
// Act
|
|
91
|
+
await handler.Handle(command, CancellationToken.None);
|
|
92
|
+
|
|
93
|
+
// Assert
|
|
94
|
+
orderRepository.Verify(x => x.CreateOrderAsync(It.IsAny<OrderAggregate>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
95
|
+
pubsub.Verify(x => x.PublishAsync(It.IsAny<IReadOnlyList<IDomainEvent>>(), It.IsAny<CancellationToken>()), Times.Once);
|
|
96
|
+
userMock.Verify(x => x.Tenant, Times.Once);
|
|
97
|
+
userMock.Verify(x => x.IdUser, Times.Once);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CreateOrder;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Test.Order.Commands.CreateOrder;
|
|
4
|
+
|
|
5
|
+
public class CreateOrderCommandTest
|
|
6
|
+
{
|
|
7
|
+
private readonly Validator _validator;
|
|
8
|
+
|
|
9
|
+
public CreateOrderCommandTest()
|
|
10
|
+
{
|
|
11
|
+
_validator = new Validator();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
[Fact]
|
|
15
|
+
public async Task Should_Have_Error_When_Client_Is_Null()
|
|
16
|
+
{
|
|
17
|
+
var address = new AddressDto()
|
|
18
|
+
{
|
|
19
|
+
Country = "Colombia",
|
|
20
|
+
State = "Bogota",
|
|
21
|
+
City = "Bogota",
|
|
22
|
+
Address = "Calle 123",
|
|
23
|
+
CodePostal = 123456
|
|
24
|
+
};
|
|
25
|
+
var command = new CreateOrderCommand(Guid.NewGuid(), null!, address);
|
|
26
|
+
var result = await _validator.ValidateAsync(command);
|
|
27
|
+
|
|
28
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Client) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
[Fact]
|
|
32
|
+
public async Task Should_Have_Error_When_Address_Is_Null()
|
|
33
|
+
{
|
|
34
|
+
var client = new ClientDto()
|
|
35
|
+
{
|
|
36
|
+
Id = Guid.NewGuid(),
|
|
37
|
+
Name = "Client",
|
|
38
|
+
Document = "1234567890",
|
|
39
|
+
TypeDocument = "CC"
|
|
40
|
+
};
|
|
41
|
+
var command = new CreateOrderCommand(Guid.NewGuid(), client, null!);
|
|
42
|
+
var result = await _validator.ValidateAsync(command);
|
|
43
|
+
|
|
44
|
+
Assert.Contains(result.Errors, x => x.PropertyName == nameof(command.Address) && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
[Theory]
|
|
48
|
+
[InlineData("")]
|
|
49
|
+
[InlineData(null)]
|
|
50
|
+
public async Task Should_Have_Error_When_ClientName_Is_Invalid(string? client)
|
|
51
|
+
{
|
|
52
|
+
var address = new AddressDto()
|
|
53
|
+
{
|
|
54
|
+
Country = "Colombia",
|
|
55
|
+
State = "Bogota",
|
|
56
|
+
City = "Bogota",
|
|
57
|
+
Address = "Calle 123",
|
|
58
|
+
CodePostal = 123456
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
var command = new CreateOrderCommand(Guid.NewGuid(), new ClientDto()
|
|
62
|
+
{
|
|
63
|
+
Name = client!,
|
|
64
|
+
Document = "1234567890",
|
|
65
|
+
TypeDocument = "CC"
|
|
66
|
+
}, address);
|
|
67
|
+
|
|
68
|
+
var result = await _validator.ValidateAsync(command);
|
|
69
|
+
|
|
70
|
+
Assert.Contains(result.Errors, x => x.PropertyName == $"{nameof(CreateOrderCommand.Client)}.{nameof(CreateOrderCommand.Client.Id)}" && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
[Fact]
|
|
74
|
+
public async Task Shoul_Have_Error_When_ClientId_Is_Empty()
|
|
75
|
+
{
|
|
76
|
+
var address = new AddressDto()
|
|
77
|
+
{
|
|
78
|
+
Country = "Colombia",
|
|
79
|
+
State = "Bogota",
|
|
80
|
+
City = "Bogota",
|
|
81
|
+
Address = "Calle 123",
|
|
82
|
+
CodePostal = 123456
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
var command = new CreateOrderCommand(Guid.NewGuid(), new ClientDto()
|
|
86
|
+
{
|
|
87
|
+
Id = Guid.Empty,
|
|
88
|
+
Name = "Client",
|
|
89
|
+
Document = "1234567890",
|
|
90
|
+
TypeDocument = "CC"
|
|
91
|
+
}, address);
|
|
92
|
+
|
|
93
|
+
var result = await _validator.ValidateAsync(command);
|
|
94
|
+
|
|
95
|
+
Assert.Contains(result.Errors, x => x.PropertyName == $"{nameof(command.Client)}.{nameof(command.Client.Id)}" && !string.IsNullOrEmpty(x.ErrorMessage));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
[Fact]
|
|
99
|
+
public async Task Should_Not_Have_Error()
|
|
100
|
+
{
|
|
101
|
+
var address = new AddressDto()
|
|
102
|
+
{
|
|
103
|
+
Country = "Colombia",
|
|
104
|
+
State = "Bogota",
|
|
105
|
+
City = "Bogota",
|
|
106
|
+
Address = "Calle 123",
|
|
107
|
+
CodePostal = 123456
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
var command = new CreateOrderCommand(Guid.NewGuid(), new ClientDto()
|
|
111
|
+
{
|
|
112
|
+
Id = Guid.NewGuid(),
|
|
113
|
+
Name = "Client",
|
|
114
|
+
Document = "1234567890",
|
|
115
|
+
TypeDocument = "CC"
|
|
116
|
+
}, address);
|
|
117
|
+
var result = await _validator.ValidateAsync(command);
|
|
118
|
+
|
|
119
|
+
Assert.Empty(result.Errors);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
}
|