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,259 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Infrastructure.Test.Repositories;
|
|
4
|
+
|
|
5
|
+
public class OrderRepositoryTest
|
|
6
|
+
{
|
|
7
|
+
private readonly ServiceProvider serviceProvider;
|
|
8
|
+
private readonly Mock<IMongoClient> mongoClientMock;
|
|
9
|
+
private readonly Mock<IMongoDatabase> mongoDatabaseMock;
|
|
10
|
+
private readonly IOptions<MongoOptions> mongoOptions;
|
|
11
|
+
private readonly Mock<ILogger<RepositoryBase>> loggerMock;
|
|
12
|
+
private readonly Mock<IMongoCollection<OrderAggregate>> collectionMock;
|
|
13
|
+
private readonly OrderRepository orderRepository;
|
|
14
|
+
|
|
15
|
+
public OrderRepositoryTest()
|
|
16
|
+
{
|
|
17
|
+
mongoClientMock = new Mock<IMongoClient>();
|
|
18
|
+
mongoDatabaseMock = new Mock<IMongoDatabase>();
|
|
19
|
+
this.mongoOptions = Options.Create(new MongoOptions());
|
|
20
|
+
loggerMock = new Mock<ILogger<RepositoryBase>>();
|
|
21
|
+
collectionMock = new Mock<IMongoCollection<OrderAggregate>>();
|
|
22
|
+
|
|
23
|
+
mongoDatabaseMock.Setup(x => x.GetCollection<OrderAggregate>(It.IsAny<string>(), It.IsAny<MongoCollectionSettings>()))
|
|
24
|
+
.Returns(collectionMock.Object);
|
|
25
|
+
|
|
26
|
+
mongoClientMock.Setup(x => x.GetDatabase(It.IsAny<string>(), It.IsAny<MongoDatabaseSettings>()))
|
|
27
|
+
.Returns(mongoDatabaseMock.Object);
|
|
28
|
+
|
|
29
|
+
var serviceCollection = new ServiceCollection();
|
|
30
|
+
|
|
31
|
+
serviceCollection.AddSingleton(mongoClientMock.Object);
|
|
32
|
+
serviceCollection.AddSingleton(this.mongoOptions);
|
|
33
|
+
serviceCollection.AddSingleton(loggerMock.Object);
|
|
34
|
+
|
|
35
|
+
serviceProvider = serviceCollection.BuildServiceProvider();
|
|
36
|
+
|
|
37
|
+
var mongoOptions2 = serviceProvider.GetService<IOptions<MongoOptions>>();
|
|
38
|
+
var logger = serviceProvider.GetService<ILogger<RepositoryBase>>();
|
|
39
|
+
|
|
40
|
+
orderRepository = new OrderRepository(
|
|
41
|
+
serviceProvider,
|
|
42
|
+
mongoOptions2!,
|
|
43
|
+
logger!
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
[Fact]
|
|
48
|
+
public async Task AddProductToOrderAsync_Should_Add_Product_To_Order()
|
|
49
|
+
{
|
|
50
|
+
// Arrange
|
|
51
|
+
var idOrder = Guid.NewGuid();
|
|
52
|
+
var idProduct = Guid.NewGuid();
|
|
53
|
+
var name = "Product Name";
|
|
54
|
+
var description = "Product Description";
|
|
55
|
+
var price = 100;
|
|
56
|
+
var quantity = 1;
|
|
57
|
+
var cancellationToken = CancellationToken.None;
|
|
58
|
+
|
|
59
|
+
collectionMock
|
|
60
|
+
.Setup(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken))
|
|
61
|
+
.ReturnsAsync(It.IsAny<UpdateResult>());
|
|
62
|
+
|
|
63
|
+
// Act
|
|
64
|
+
await orderRepository.AddProductToOrderAsync(new AddProductToOrderParams()
|
|
65
|
+
{
|
|
66
|
+
Id = idOrder,
|
|
67
|
+
IdProduct = idProduct,
|
|
68
|
+
Name = name,
|
|
69
|
+
Description = description,
|
|
70
|
+
Price = price,
|
|
71
|
+
Quantity = quantity,
|
|
72
|
+
UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
73
|
+
UpdateBy = Guid.NewGuid()
|
|
74
|
+
}, cancellationToken);
|
|
75
|
+
|
|
76
|
+
// Assert
|
|
77
|
+
collectionMock.Verify(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken), Times.Once);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
[Fact]
|
|
81
|
+
public async Task CancelOrderAsync_Should_Cancel_Order()
|
|
82
|
+
{
|
|
83
|
+
// Arrange
|
|
84
|
+
var idOrder = Guid.NewGuid();
|
|
85
|
+
var reason = "Reason for cancellation";
|
|
86
|
+
var cancellationToken = CancellationToken.None;
|
|
87
|
+
var cancelledAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
88
|
+
|
|
89
|
+
collectionMock
|
|
90
|
+
.Setup(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken))
|
|
91
|
+
.ReturnsAsync(It.IsAny<UpdateResult>());
|
|
92
|
+
|
|
93
|
+
// Act
|
|
94
|
+
await orderRepository.CancelOrderAsync(new CancelOrderParams()
|
|
95
|
+
{
|
|
96
|
+
Id = idOrder,
|
|
97
|
+
OrderStatus = OrderStatus.Cancelled,
|
|
98
|
+
Reason = reason,
|
|
99
|
+
CancelledAt = cancelledAt,
|
|
100
|
+
UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
101
|
+
UpdateBy = Guid.NewGuid()
|
|
102
|
+
}, cancellationToken);
|
|
103
|
+
|
|
104
|
+
// Assert
|
|
105
|
+
collectionMock.Verify(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken), Times.Once);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
[Fact]
|
|
109
|
+
public async Task CompleteOrderAsync_Should_Complete_Order()
|
|
110
|
+
{
|
|
111
|
+
// Arrange
|
|
112
|
+
var idOrder = Guid.NewGuid();
|
|
113
|
+
var cancellationToken = CancellationToken.None;
|
|
114
|
+
var completedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
115
|
+
|
|
116
|
+
collectionMock
|
|
117
|
+
.Setup(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken))
|
|
118
|
+
.ReturnsAsync(It.IsAny<UpdateResult>());
|
|
119
|
+
|
|
120
|
+
// Act
|
|
121
|
+
await orderRepository.CompleteOrderAsync(new CompleteOrderParams()
|
|
122
|
+
{
|
|
123
|
+
Id = idOrder,
|
|
124
|
+
CompletedAt = completedAt,
|
|
125
|
+
OrderStatus = OrderStatus.Completed,
|
|
126
|
+
UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
127
|
+
UpdateBy = Guid.NewGuid()
|
|
128
|
+
}, cancellationToken);
|
|
129
|
+
|
|
130
|
+
// Assert
|
|
131
|
+
collectionMock.Verify(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken), Times.Once);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
[Fact]
|
|
135
|
+
public async Task CreateOrderAsync_Should_Create_Order()
|
|
136
|
+
{
|
|
137
|
+
// Arrange
|
|
138
|
+
var client = ClientValueObject.Create(Guid.NewGuid(), "CodeDesignPlus", "1234567890", "CC");
|
|
139
|
+
var address = AddressValueObject.Create("Colombia", "Bogota", "Bogota", "Calle 123", 123456);
|
|
140
|
+
var order = OrderAggregate.Create(Guid.NewGuid(), client, address, Guid.NewGuid(), Guid.NewGuid());
|
|
141
|
+
var cancellationToken = CancellationToken.None;
|
|
142
|
+
|
|
143
|
+
collectionMock
|
|
144
|
+
.Setup(x => x.InsertOneAsync(It.IsAny<OrderAggregate>(), It.IsAny<InsertOneOptions>(), cancellationToken));
|
|
145
|
+
|
|
146
|
+
// Act
|
|
147
|
+
await orderRepository.CreateOrderAsync(order, cancellationToken);
|
|
148
|
+
|
|
149
|
+
// Assert
|
|
150
|
+
collectionMock.Verify(x => x.InsertOneAsync(It.IsAny<OrderAggregate>(), It.IsAny<InsertOneOptions>(), cancellationToken), Times.Once);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
[Fact]
|
|
154
|
+
public async Task FindAsync_Should_Find_Order()
|
|
155
|
+
{
|
|
156
|
+
// Arrange
|
|
157
|
+
var id = Guid.NewGuid();
|
|
158
|
+
var cancellationToken = CancellationToken.None;
|
|
159
|
+
|
|
160
|
+
collectionMock
|
|
161
|
+
.Setup(x => x.FindAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<FindOptions<OrderAggregate, OrderAggregate>>(), cancellationToken))
|
|
162
|
+
.ReturnsAsync(new Mock<IAsyncCursor<OrderAggregate>>().Object);
|
|
163
|
+
|
|
164
|
+
// Act
|
|
165
|
+
await orderRepository.FindAsync(id, cancellationToken);
|
|
166
|
+
|
|
167
|
+
// Assert
|
|
168
|
+
collectionMock.Verify(x => x.FindAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<FindOptions<OrderAggregate, OrderAggregate>>(), cancellationToken), Times.Once);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
[Fact]
|
|
172
|
+
public async Task GetAllOrdersAsync_Should_Get_All_Orders()
|
|
173
|
+
{
|
|
174
|
+
// Arrange
|
|
175
|
+
var cancellationToken = CancellationToken.None;
|
|
176
|
+
|
|
177
|
+
collectionMock
|
|
178
|
+
.Setup(x => x.FindAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<FindOptions<OrderAggregate, OrderAggregate>>(), cancellationToken))
|
|
179
|
+
.ReturnsAsync(new Mock<IAsyncCursor<OrderAggregate>>().Object);
|
|
180
|
+
|
|
181
|
+
// Act
|
|
182
|
+
await orderRepository.GetAllOrdersAsync(cancellationToken);
|
|
183
|
+
|
|
184
|
+
// Assert
|
|
185
|
+
collectionMock.Verify(x => x.FindAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<FindOptions<OrderAggregate, OrderAggregate>>(), cancellationToken), Times.Once);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
[Fact]
|
|
189
|
+
public async Task RemoveProductFromOrderAsync_Should_Remove_Product_From_Order()
|
|
190
|
+
{
|
|
191
|
+
// Arrange
|
|
192
|
+
var idOrder = Guid.NewGuid();
|
|
193
|
+
var idProduct = Guid.NewGuid();
|
|
194
|
+
var cancellationToken = CancellationToken.None;
|
|
195
|
+
|
|
196
|
+
collectionMock
|
|
197
|
+
.Setup(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken))
|
|
198
|
+
.ReturnsAsync(It.IsAny<UpdateResult>());
|
|
199
|
+
|
|
200
|
+
// Act
|
|
201
|
+
await orderRepository.RemoveProductFromOrderAsync( new RemoveProductFromOrderParams()
|
|
202
|
+
{
|
|
203
|
+
Id = idOrder,
|
|
204
|
+
IdProduct = idProduct,
|
|
205
|
+
UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
206
|
+
UpdateBy = Guid.NewGuid()
|
|
207
|
+
}, cancellationToken);
|
|
208
|
+
|
|
209
|
+
// Assert
|
|
210
|
+
collectionMock.Verify(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken), Times.Once);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
[Fact]
|
|
214
|
+
public async Task UpdateOrderAsync_Should_Update_Order()
|
|
215
|
+
{
|
|
216
|
+
// Arrange
|
|
217
|
+
var client = ClientValueObject.Create(Guid.NewGuid(), "CodeDesignPlus", "1234567890", "CC");
|
|
218
|
+
var address = AddressValueObject.Create("Colombia", "Bogota", "Bogota", "Calle 123", 123456);
|
|
219
|
+
var order = OrderAggregate.Create(Guid.NewGuid(), client, address, Guid.NewGuid(), Guid.NewGuid());
|
|
220
|
+
var cancellationToken = CancellationToken.None;
|
|
221
|
+
|
|
222
|
+
collectionMock
|
|
223
|
+
.Setup(x => x.ReplaceOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<OrderAggregate>(), It.IsAny<ReplaceOptions>(), cancellationToken))
|
|
224
|
+
.ReturnsAsync(It.IsAny<ReplaceOneResult>());
|
|
225
|
+
|
|
226
|
+
// Act
|
|
227
|
+
await orderRepository.UpdateOrderAsync(order, cancellationToken);
|
|
228
|
+
|
|
229
|
+
// Assert
|
|
230
|
+
collectionMock.Verify(x => x.ReplaceOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<OrderAggregate>(), It.IsAny<ReplaceOptions>(), cancellationToken), Times.Once);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
[Fact]
|
|
234
|
+
public async Task UpdateQuantityProductAsync_Should_Update_Quantity_Product()
|
|
235
|
+
{
|
|
236
|
+
// Arrange
|
|
237
|
+
var idOrder = Guid.NewGuid();
|
|
238
|
+
var productId = Guid.NewGuid();
|
|
239
|
+
var newQuantity = 10;
|
|
240
|
+
var cancellationToken = CancellationToken.None;
|
|
241
|
+
|
|
242
|
+
collectionMock
|
|
243
|
+
.Setup(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken))
|
|
244
|
+
.ReturnsAsync(It.IsAny<UpdateResult>());
|
|
245
|
+
|
|
246
|
+
// Act
|
|
247
|
+
await orderRepository.UpdateQuantityProductAsync(new UpdateQuantityProductParams()
|
|
248
|
+
{
|
|
249
|
+
Id = idOrder,
|
|
250
|
+
ProductId = productId,
|
|
251
|
+
NewQuantity = newQuantity,
|
|
252
|
+
UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
253
|
+
UpdateBy = Guid.NewGuid()
|
|
254
|
+
}, cancellationToken);
|
|
255
|
+
|
|
256
|
+
// Assert
|
|
257
|
+
collectionMock.Verify(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<OrderAggregate>>(), It.IsAny<UpdateDefinition<OrderAggregate>>(), It.IsAny<UpdateOptions>(), cancellationToken), Times.Once);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.Mongo.Abstractions.Options;
|
|
2
|
+
global using CodeDesignPlus.Net.Mongo.Repository;
|
|
3
|
+
global using Microsoft.Extensions.DependencyInjection;
|
|
4
|
+
global using Microsoft.Extensions.Logging;
|
|
5
|
+
global using Microsoft.Extensions.Options;
|
|
6
|
+
global using MongoDB.Driver;
|
|
7
|
+
global using Moq;
|
|
8
|
+
global using Microsoft.Extensions.Configuration;
|
|
9
|
+
global using CodeDesignPlus.Net.Serializers;
|
|
10
|
+
|
|
11
|
+
global using CodeDesignPlus.Net.Microservice.Infrastructure.Repositories;
|
|
12
|
+
global using CodeDesignPlus.Net.Microservice.Domain;
|
|
13
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Enums;
|
|
14
|
+
global using CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
<Target Name="DisableAnalyzers" BeforeTargets="CoreCompile">
|
|
12
|
+
<ItemGroup>
|
|
13
|
+
<Analyzer Remove="@(Analyzer)" Condition="'%(Filename)' == 'CodeDesignPlus.Net.Generator'" />
|
|
14
|
+
</ItemGroup>
|
|
15
|
+
</Target>
|
|
16
|
+
<ItemGroup>
|
|
17
|
+
<PackageReference Include="coverlet.msbuild" Version="6.0.3">
|
|
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
|
+
<PackageReference Include="CodeDesignPlus.Net.xUnit.Microservice" Version="0.5.0-beta.60" />
|
|
26
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
|
27
|
+
<PackageReference Include="Moq" Version="4.20.72" />
|
|
28
|
+
<PackageReference Include="xunit" Version="2.9.2" />
|
|
29
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.0">
|
|
30
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
31
|
+
<PrivateAssets>all</PrivateAssets>
|
|
32
|
+
</PackageReference>
|
|
33
|
+
</ItemGroup>
|
|
34
|
+
<ItemGroup>
|
|
35
|
+
<Using Include="Xunit" />
|
|
36
|
+
</ItemGroup>
|
|
37
|
+
<ItemGroup>
|
|
38
|
+
<ProjectReference Include="..\..\..\src\entrypoints\CodeDesignPlus.Net.Microservice.Rest\CodeDesignPlus.Net.Microservice.Rest.csproj" />
|
|
39
|
+
</ItemGroup>
|
|
40
|
+
</Project>
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.AddProductToOrder;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CancelOrder;
|
|
3
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CompleteOrder;
|
|
4
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.CreateOrder;
|
|
5
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.RemoveProduct;
|
|
6
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Commands.UpdateQuantityProduct;
|
|
7
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.DataTransferObjects;
|
|
8
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Queries.FindOrderById;
|
|
9
|
+
using CodeDesignPlus.Net.Microservice.Application.Order.Queries.GetAllOrders;
|
|
10
|
+
|
|
11
|
+
namespace CodeDesignPlus.Net.Microservice.Rest.Test.Controllers;
|
|
12
|
+
|
|
13
|
+
public class OrderControllerTest
|
|
14
|
+
{
|
|
15
|
+
private readonly Mock<IMediator> mediator;
|
|
16
|
+
private readonly Mock<IMapper> mapper;
|
|
17
|
+
|
|
18
|
+
public OrderControllerTest()
|
|
19
|
+
{
|
|
20
|
+
this.mediator = new Mock<IMediator>();
|
|
21
|
+
this.mapper = new Mock<IMapper>();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
[Fact]
|
|
25
|
+
public async Task GetOrdersAsync_WhenCalled_ReturnsOk()
|
|
26
|
+
{
|
|
27
|
+
// Arrange
|
|
28
|
+
var controller = new OrdersController(this.mediator.Object, this.mapper.Object);
|
|
29
|
+
var criteria = new C.Criteria();
|
|
30
|
+
var cancellationToken = new CancellationToken();
|
|
31
|
+
|
|
32
|
+
this.mediator
|
|
33
|
+
.Setup(x => x.Send(It.IsAny<GetAllOrdersQuery>(), cancellationToken))
|
|
34
|
+
.ReturnsAsync([]);
|
|
35
|
+
|
|
36
|
+
// Act
|
|
37
|
+
var result = await controller.GetOrders(criteria, cancellationToken);
|
|
38
|
+
|
|
39
|
+
// Assert
|
|
40
|
+
Assert.IsType<OkObjectResult>(result);
|
|
41
|
+
this.mediator.Verify(x => x.Send(It.IsAny<GetAllOrdersQuery>(), cancellationToken), Times.Once);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
[Fact]
|
|
45
|
+
public async Task GetOrderByIdAsync_WhenCalled_ReturnsOk()
|
|
46
|
+
{
|
|
47
|
+
// Arrange
|
|
48
|
+
var controller = new OrdersController(this.mediator.Object, this.mapper.Object);
|
|
49
|
+
var id = Guid.NewGuid();
|
|
50
|
+
var cancellationToken = new CancellationToken();
|
|
51
|
+
|
|
52
|
+
this.mediator
|
|
53
|
+
.Setup(x => x.Send(It.IsAny<FindOrderByIdQuery>(), cancellationToken))
|
|
54
|
+
.ReturnsAsync(new OrderDto());
|
|
55
|
+
|
|
56
|
+
// Act
|
|
57
|
+
var result = await controller.GetOrderById(id, cancellationToken);
|
|
58
|
+
|
|
59
|
+
// Assert
|
|
60
|
+
Assert.IsType<OkObjectResult>(result);
|
|
61
|
+
this.mediator.Verify(x => x.Send(It.IsAny<FindOrderByIdQuery>(), cancellationToken), Times.Once);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
[Fact]
|
|
65
|
+
public async Task CreateOrderAsync_WhenCalled_ReturnsNoContent()
|
|
66
|
+
{
|
|
67
|
+
// Arrange
|
|
68
|
+
var controller = new OrdersController(this.mediator.Object, this.mapper.Object);
|
|
69
|
+
var data = new CodeDesignPlus.Microservice.Api.Dtos.CreateOrderDto();
|
|
70
|
+
var cancellationToken = new CancellationToken();
|
|
71
|
+
|
|
72
|
+
this.mediator
|
|
73
|
+
.Setup(x => x.Send(It.IsAny<CreateOrderCommand>(), cancellationToken))
|
|
74
|
+
.Returns(Task.CompletedTask);
|
|
75
|
+
|
|
76
|
+
// Act
|
|
77
|
+
var result = await controller.CreateOrder(data, cancellationToken);
|
|
78
|
+
|
|
79
|
+
// Assert
|
|
80
|
+
Assert.IsType<NoContentResult>(result);
|
|
81
|
+
this.mediator.Verify(x => x.Send(It.IsAny<CreateOrderCommand>(), cancellationToken), Times.Once);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
[Fact]
|
|
85
|
+
public async Task CancelOrderAsync_WhenCalled_ReturnsNoContent()
|
|
86
|
+
{
|
|
87
|
+
// Arrange
|
|
88
|
+
var controller = new OrdersController(this.mediator.Object, this.mapper.Object);
|
|
89
|
+
var id = Guid.NewGuid();
|
|
90
|
+
var data = new CodeDesignPlus.Microservice.Api.Dtos.CancelOrderDto();
|
|
91
|
+
var cancellationToken = new CancellationToken();
|
|
92
|
+
|
|
93
|
+
this.mediator
|
|
94
|
+
.Setup(x => x.Send(It.IsAny<CancelOrderCommand>(), cancellationToken))
|
|
95
|
+
.Returns(Task.CompletedTask);
|
|
96
|
+
|
|
97
|
+
// Act
|
|
98
|
+
var result = await controller.CancelOrder(id, data, cancellationToken);
|
|
99
|
+
|
|
100
|
+
// Assert
|
|
101
|
+
Assert.IsType<NoContentResult>(result);
|
|
102
|
+
this.mediator.Verify(x => x.Send(It.IsAny<CancelOrderCommand>(), cancellationToken), Times.Once);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
[Fact]
|
|
106
|
+
public async Task CompleteOrderAsync_WhenCalled_ReturnsNoContent()
|
|
107
|
+
{
|
|
108
|
+
// Arrange
|
|
109
|
+
var controller = new OrdersController(this.mediator.Object, this.mapper.Object);
|
|
110
|
+
var id = Guid.NewGuid();
|
|
111
|
+
var cancellationToken = new CancellationToken();
|
|
112
|
+
|
|
113
|
+
this.mediator
|
|
114
|
+
.Setup(x => x.Send(It.IsAny<CompleteOrderCommand>(), cancellationToken))
|
|
115
|
+
.Returns(Task.CompletedTask);
|
|
116
|
+
|
|
117
|
+
// Act
|
|
118
|
+
var result = await controller.CompleteOrder(id, cancellationToken);
|
|
119
|
+
|
|
120
|
+
// Assert
|
|
121
|
+
Assert.IsType<NoContentResult>(result);
|
|
122
|
+
this.mediator.Verify(x => x.Send(It.IsAny<CompleteOrderCommand>(), cancellationToken), Times.Once);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
[Fact]
|
|
126
|
+
public async Task AddProductToOrderAsync_WhenCalled_ReturnsNoContent()
|
|
127
|
+
{
|
|
128
|
+
// Arrange
|
|
129
|
+
var controller = new OrdersController(this.mediator.Object, this.mapper.Object);
|
|
130
|
+
var id = Guid.NewGuid();
|
|
131
|
+
var data = new CodeDesignPlus.Microservice.Api.Dtos.AddProductToOrderDto();
|
|
132
|
+
var cancellationToken = new CancellationToken();
|
|
133
|
+
|
|
134
|
+
this.mediator
|
|
135
|
+
.Setup(x => x.Send(It.IsAny<AddProductToOrderCommand>(), cancellationToken))
|
|
136
|
+
.Returns(Task.CompletedTask);
|
|
137
|
+
|
|
138
|
+
// Act
|
|
139
|
+
var result = await controller.AddProductToOrder(id, data, cancellationToken);
|
|
140
|
+
|
|
141
|
+
// Assert
|
|
142
|
+
Assert.IsType<NoContentResult>(result);
|
|
143
|
+
this.mediator.Verify(x => x.Send(It.IsAny<AddProductToOrderCommand>(), cancellationToken), Times.Once);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
[Fact]
|
|
147
|
+
public async Task UpdateQuantityProductAsync_WhenCalled_ReturnsNoContent()
|
|
148
|
+
{
|
|
149
|
+
// Arrange
|
|
150
|
+
var controller = new OrdersController(this.mediator.Object, this.mapper.Object);
|
|
151
|
+
var id = Guid.NewGuid();
|
|
152
|
+
var productId = Guid.NewGuid();
|
|
153
|
+
var data = new CodeDesignPlus.Microservice.Api.Dtos.UpdateQuantityProductDto();
|
|
154
|
+
var cancellationToken = new CancellationToken();
|
|
155
|
+
|
|
156
|
+
this.mediator
|
|
157
|
+
.Setup(x => x.Send(It.IsAny<UpdateQuantityProductCommand>(), cancellationToken))
|
|
158
|
+
.Returns(Task.CompletedTask);
|
|
159
|
+
|
|
160
|
+
// Act
|
|
161
|
+
var result = await controller.UpdateQuantityProduct(id, productId, data, cancellationToken);
|
|
162
|
+
|
|
163
|
+
// Assert
|
|
164
|
+
Assert.IsType<NoContentResult>(result);
|
|
165
|
+
this.mediator.Verify(x => x.Send(It.IsAny<UpdateQuantityProductCommand>(), cancellationToken), Times.Once);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
[Fact]
|
|
169
|
+
public async Task RemoveProductFromOrderAsync_WhenCalled_ReturnsNoContent()
|
|
170
|
+
{
|
|
171
|
+
// Arrange
|
|
172
|
+
var controller = new OrdersController(this.mediator.Object, this.mapper.Object);
|
|
173
|
+
var id = Guid.NewGuid();
|
|
174
|
+
var productId = Guid.NewGuid();
|
|
175
|
+
var cancellationToken = new CancellationToken();
|
|
176
|
+
|
|
177
|
+
this.mediator
|
|
178
|
+
.Setup(x => x.Send(It.IsAny<RemoveProductCommand>(), cancellationToken))
|
|
179
|
+
.Returns(Task.CompletedTask);
|
|
180
|
+
|
|
181
|
+
// Act
|
|
182
|
+
var result = await controller.RemoveProduct(id, productId, cancellationToken);
|
|
183
|
+
|
|
184
|
+
// Assert
|
|
185
|
+
Assert.IsType<NoContentResult>(result);
|
|
186
|
+
this.mediator.Verify(x => x.Send(It.IsAny<RemoveProductCommand>(), cancellationToken), Times.Once);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Rest.Test.Core.Mapster;
|
|
2
|
+
|
|
3
|
+
public class MapsterConfigTest
|
|
4
|
+
{
|
|
5
|
+
[Fact]
|
|
6
|
+
public void Configure_ShouldMapProperties_Success()
|
|
7
|
+
{
|
|
8
|
+
// Arrange
|
|
9
|
+
MapsterConfig.Configure();
|
|
10
|
+
var config = TypeAdapterConfig.GlobalSettings;
|
|
11
|
+
|
|
12
|
+
// Act
|
|
13
|
+
var mapper = new Mapper(config);
|
|
14
|
+
|
|
15
|
+
// Assert
|
|
16
|
+
Assert.NotNull(mapper);
|
|
17
|
+
Assert.NotEmpty(config.RuleMap);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.Microservice.Rest.Core.Mapster;
|
|
2
|
+
global using Mapster;
|
|
3
|
+
global using MapsterMapper;
|
|
4
|
+
global using MediatR;
|
|
5
|
+
global using Moq;
|
|
6
|
+
global using System;
|
|
7
|
+
global using System.Threading;
|
|
8
|
+
global using System.Threading.Tasks;
|
|
9
|
+
global using Xunit;
|
|
10
|
+
global using C = CodeDesignPlus.Net.Core.Abstractions.Models.Criteria;
|
|
11
|
+
global using Microsoft.AspNetCore.Mvc;
|
|
12
|
+
global using CodeDesignPlus.Net.Serializers;
|
|
13
|
+
|
|
14
|
+
global using CodeDesignPlus.Net.Microservice.Rest.Controllers;
|
|
@@ -0,0 +1,39 @@
|
|
|
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="Grpc.Core.Testing" Version="2.46.6" />
|
|
22
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
|
23
|
+
<PackageReference Include="Moq" Version="4.20.72" />
|
|
24
|
+
<PackageReference Include="xunit" Version="2.9.2" />
|
|
25
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.0">
|
|
26
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
27
|
+
<PrivateAssets>all</PrivateAssets>
|
|
28
|
+
</PackageReference>
|
|
29
|
+
</ItemGroup>
|
|
30
|
+
<ItemGroup>
|
|
31
|
+
<Using Include="Xunit" />
|
|
32
|
+
</ItemGroup>
|
|
33
|
+
<ItemGroup>
|
|
34
|
+
<Folder Include="Core/Mapster/" />
|
|
35
|
+
</ItemGroup>
|
|
36
|
+
<ItemGroup>
|
|
37
|
+
<ProjectReference Include="..\..\..\src\entrypoints\CodeDesignPlus.Net.Microservice.gRpc\CodeDesignPlus.Net.Microservice.gRpc.csproj" />
|
|
38
|
+
</ItemGroup>
|
|
39
|
+
</Project>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.gRpc.Test.Core.Mapster;
|
|
2
|
+
|
|
3
|
+
public class MapsterConfigTest
|
|
4
|
+
{
|
|
5
|
+
[Fact]
|
|
6
|
+
public void Configure_ShouldMapProperties_Success()
|
|
7
|
+
{
|
|
8
|
+
// Arrange
|
|
9
|
+
CodeDesignPlus.Net.Microservice.gRpc.Core.Mapster.MapsterConfig.Configure();
|
|
10
|
+
var config = TypeAdapterConfig.GlobalSettings;
|
|
11
|
+
|
|
12
|
+
// Act
|
|
13
|
+
var mapper = new Mapper(config);
|
|
14
|
+
|
|
15
|
+
// Assert
|
|
16
|
+
Assert.NotNull(mapper);
|
|
17
|
+
Assert.NotEmpty(config.RuleMap);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.gRpc.Test.Services;
|
|
2
|
+
|
|
3
|
+
public class OrderServiceTest
|
|
4
|
+
{
|
|
5
|
+
private readonly Mock<IMediator> _mediatorMock;
|
|
6
|
+
private readonly Mock<IMapper> _mapperMock;
|
|
7
|
+
private readonly OrdersService _ordersService;
|
|
8
|
+
|
|
9
|
+
public OrderServiceTest()
|
|
10
|
+
{
|
|
11
|
+
_mediatorMock = new Mock<IMediator>();
|
|
12
|
+
_mapperMock = new Mock<IMapper>();
|
|
13
|
+
_ordersService = new OrdersService(_mediatorMock.Object, _mapperMock.Object);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
[Fact]
|
|
17
|
+
public async Task GetOrder_ValidId_ReturnsOrder()
|
|
18
|
+
{
|
|
19
|
+
// Arrange
|
|
20
|
+
var orderId = Guid.NewGuid();
|
|
21
|
+
var orderDto = new OrderDto
|
|
22
|
+
{
|
|
23
|
+
Id = orderId,
|
|
24
|
+
Products = []
|
|
25
|
+
};
|
|
26
|
+
var order = new Order
|
|
27
|
+
{
|
|
28
|
+
Id = orderId.ToString()
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
_mediatorMock.Setup(m => m.Send(It.IsAny<FindOrderByIdQuery>(), It.IsAny<CancellationToken>()))
|
|
32
|
+
.ReturnsAsync(orderDto);
|
|
33
|
+
|
|
34
|
+
_mapperMock.Setup(m => m.Map<OrderDto, Order>(It.IsAny<OrderDto>())).Returns(order);
|
|
35
|
+
_mapperMock.Setup(m => m.Map<ProductDto, Product>(It.IsAny<ProductDto>())).Returns(new Product());
|
|
36
|
+
|
|
37
|
+
var requestStream = new Mock<IAsyncStreamReader<GetOrderRequest>>();
|
|
38
|
+
requestStream.SetupSequence(r => r.MoveNext(It.IsAny<CancellationToken>()))
|
|
39
|
+
.ReturnsAsync(true)
|
|
40
|
+
.ReturnsAsync(false);
|
|
41
|
+
requestStream.Setup(r => r.Current).Returns(new GetOrderRequest { Id = orderId.ToString() });
|
|
42
|
+
|
|
43
|
+
var responseStream = new Mock<IServerStreamWriter<GetOrderResponse>>();
|
|
44
|
+
var serverCallContext = TestServerCallContext.Create("GetOrder", null, DateTime.UtcNow, [], CancellationToken.None, "127.0.0.1", null, null, null, null, null);
|
|
45
|
+
|
|
46
|
+
// Act
|
|
47
|
+
await _ordersService.GetOrder(requestStream.Object, responseStream.Object, serverCallContext);
|
|
48
|
+
|
|
49
|
+
// Assert
|
|
50
|
+
responseStream.Verify(r => r.WriteAsync(It.Is<GetOrderResponse>(response => response.Order.Id == orderId.ToString())), Times.Once);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
[Fact]
|
|
54
|
+
public async Task GetOrder_InvalidId_ThrowsRpcException()
|
|
55
|
+
{
|
|
56
|
+
// Arrange
|
|
57
|
+
var requestStream = new Mock<IAsyncStreamReader<GetOrderRequest>>();
|
|
58
|
+
requestStream.SetupSequence(r => r.MoveNext(It.IsAny<CancellationToken>()))
|
|
59
|
+
.ReturnsAsync(true)
|
|
60
|
+
.ReturnsAsync(false);
|
|
61
|
+
requestStream.Setup(r => r.Current).Returns(new GetOrderRequest { Id = "invalid-guid" });
|
|
62
|
+
|
|
63
|
+
var responseStream = new Mock<IServerStreamWriter<GetOrderResponse>>();
|
|
64
|
+
var serverCallContext = TestServerCallContext.Create("GetOrder", null, DateTime.UtcNow, [], CancellationToken.None, "127.0.0.1", null, null, null, null, null);
|
|
65
|
+
|
|
66
|
+
// Act & Assert
|
|
67
|
+
await Assert.ThrowsAsync<RpcException>(() => _ordersService.GetOrder(requestStream.Object, responseStream.Object, serverCallContext));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|