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.
Files changed (200) hide show
  1. package/LICENCE.md +13 -0
  2. package/README.md +454 -0
  3. package/generators/app/index.mjs +22 -0
  4. package/generators/microservice/core/aggregate.mjs +25 -0
  5. package/generators/microservice/core/appsettings.mjs +73 -0
  6. package/generators/microservice/core/asyncWorker.mjs +87 -0
  7. package/generators/microservice/core/command.mjs +54 -0
  8. package/generators/microservice/core/consumer.mjs +73 -0
  9. package/generators/microservice/core/controller.mjs +25 -0
  10. package/generators/microservice/core/core.mjs +98 -0
  11. package/generators/microservice/core/dataTransferObject.mjs +31 -0
  12. package/generators/microservice/core/domainEvent.mjs +36 -0
  13. package/generators/microservice/core/dotnet.mjs +56 -0
  14. package/generators/microservice/core/entity.mjs +29 -0
  15. package/generators/microservice/core/errors.mjs +37 -0
  16. package/generators/microservice/core/grpc.mjs +97 -0
  17. package/generators/microservice/core/microservice.mjs +212 -0
  18. package/generators/microservice/core/proto.mjs +61 -0
  19. package/generators/microservice/core/query.mjs +59 -0
  20. package/generators/microservice/core/repository.mjs +41 -0
  21. package/generators/microservice/core/utils.mjs +196 -0
  22. package/generators/microservice/core/valueObject.mjs +29 -0
  23. package/generators/microservice/core/xml.mjs +48 -0
  24. package/generators/microservice/index.mjs +38 -0
  25. package/generators/microservice/templates/aggregate/ItemAggregate.cs +9 -0
  26. package/generators/microservice/templates/command/ItemCommand.cs +12 -0
  27. package/generators/microservice/templates/command/ItemCommandHandler.cs +9 -0
  28. package/generators/microservice/templates/consumer/ItemHandler.cs +14 -0
  29. package/generators/microservice/templates/controller/ItemController.cs +8 -0
  30. package/generators/microservice/templates/data-transfer-object/ItemDto.cs +6 -0
  31. package/generators/microservice/templates/domain-event/ItemDomainEvent.cs +15 -0
  32. package/generators/microservice/templates/entity/ItemEntity.cs +6 -0
  33. package/generators/microservice/templates/errors/Error.cs +6 -0
  34. package/generators/microservice/templates/grpc/ItemService.cs +6 -0
  35. package/generators/microservice/templates/grpc/grpc.proto +22 -0
  36. package/generators/microservice/templates/microservice/.dockerignore +30 -0
  37. package/generators/microservice/templates/microservice/CodeDesignPlus.Net.Microservice.sln +155 -0
  38. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/CodeDesignPlus.Net.Microservice.Application.csproj +20 -0
  39. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Errors.cs +10 -0
  40. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/AddProductToOrder/AddProductToOrderCommand.cs +17 -0
  41. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/AddProductToOrder/AddProductToOrderCommandHandler.cs +27 -0
  42. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CancelOrder/CancelOrderCommand.cs +13 -0
  43. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CancelOrder/CancelOrderCommandHandler.cs +24 -0
  44. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CompleteOrder/CompleteOrderCommand.cs +11 -0
  45. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CompleteOrder/CompleteOrderCommandHandler.cs +25 -0
  46. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CreateOrder/CreateOrderCommand.cs +32 -0
  47. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CreateOrder/CreateOrderCommandHandler.cs +24 -0
  48. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/RemoveProduct/RemoveProductCommand.cs +12 -0
  49. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/RemoveProduct/RemoveProductCommandHandler.cs +22 -0
  50. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommand.cs +14 -0
  51. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandHandler.cs +24 -0
  52. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/AddressDto.cs +11 -0
  53. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/ClientDto.cs +9 -0
  54. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/OrderDto.cs +18 -0
  55. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/ProductDto.cs +10 -0
  56. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/FindOrderById/FindOrderByIdQuery.cs +4 -0
  57. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/FindOrderById/FindOrderByIdQueryHandler.cs +23 -0
  58. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/GetAllOrders/GetAllOrdersQuery.cs +3 -0
  59. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/GetAllOrders/GetAllOrdersQueryHandler.cs +18 -0
  60. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Setup/MapsterConfig.cs +26 -0
  61. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Startup.cs +15 -0
  62. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Usings.cs +18 -0
  63. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/CodeDesignPlus.Net.Microservice.Domain.csproj +11 -0
  64. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/AddProductToOrderParams.cs +15 -0
  65. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/CancelOrderParams.cs +13 -0
  66. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/CompleteOrderParams.cs +12 -0
  67. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/RemoveProductFromOrderParams.cs +11 -0
  68. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/UpdateQuantityProductParams.cs +12 -0
  69. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCancelledDomainEvent.cs +21 -0
  70. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCompletedDomainEvent.cs +18 -0
  71. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCreatedDomainEvent.cs +44 -0
  72. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductAddedToOrderDomainEvent.cs +20 -0
  73. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductQuantityUpdatedDomainEvent.cs +20 -0
  74. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductRemovedFromOrderDomainEvent.cs +18 -0
  75. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Entities/ProductEntity.cs +10 -0
  76. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Enums/OrderStatus.cs +10 -0
  77. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Errors.cs +28 -0
  78. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/OrderAggregate.cs +124 -0
  79. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Repositories/IOrderRepository.cs +14 -0
  80. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Startup.cs +12 -0
  81. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Usings.cs +11 -0
  82. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/ValueObjects/AddressValueObject.cs +30 -0
  83. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/ValueObjects/ClientValueObject.cs +27 -0
  84. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/CodeDesignPlus.Net.Microservice.Infrastructure.csproj +13 -0
  85. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Errors.cs +6 -0
  86. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Repositories/OrderRepository.cs +109 -0
  87. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Startup.cs +10 -0
  88. package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Usings.cs +15 -0
  89. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/CodeDesignPlus.Net.Microservice.AsyncWorker.csproj +31 -0
  90. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Program.cs +41 -0
  91. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Properties/launchSettings.json +15 -0
  92. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Usings.cs +10 -0
  93. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/appsettings.Development.json +2 -0
  94. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/appsettings.json +129 -0
  95. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/CodeDesignPlus.Net.Microservice.Rest.csproj +36 -0
  96. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/CodeDesignPlus.Net.Microservice.Rest.csproj.user +11 -0
  97. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Controllers/OrderController.cs +138 -0
  98. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Core/Mapster/MapsterConfig.cs +12 -0
  99. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Dockerfile +37 -0
  100. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Program.cs +52 -0
  101. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Properties/launchSettings.json +26 -0
  102. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Usings.cs +22 -0
  103. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/appsettings.Development.json +3 -0
  104. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/appsettings.json +86 -0
  105. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/CodeDesignPlus.Net.Microservice.gRpc.csproj +35 -0
  106. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/CodeDesignPlus.Net.Microservice.gRpc.csproj.user +9 -0
  107. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Core/Mapster/MapsterConfig.cs +13 -0
  108. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Program.cs +61 -0
  109. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Properties/launchSettings.json +23 -0
  110. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Protos/orders.proto +66 -0
  111. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Services/OrderService.cs +29 -0
  112. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Usings.cs +12 -0
  113. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/appsettings.Development.json +3 -0
  114. package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/appsettings.json +92 -0
  115. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/CodeDesignPlus.Net.Microservice.AsyncWorker.Test.csproj +35 -0
  116. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Properties/launchSettings.json +12 -0
  117. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Usings.cs +8 -0
  118. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/CodeDesignPlus.Net.Microservice.Rest.Test.csproj +36 -0
  119. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Controllers/OrderControllerTest.cs +337 -0
  120. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Properties/launchSettings.json +12 -0
  121. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Usings.cs +8 -0
  122. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/CodeDesignPlus.Net.Microservice.gRpc.Test.csproj +46 -0
  123. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Protos/orders.proto +65 -0
  124. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Services/OrdersServiceTest.cs +64 -0
  125. package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Usings.cs +7 -0
  126. package/generators/microservice/templates/microservice/tests/load/load-rest.js +63 -0
  127. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/CodeDesignPlus.Net.Microservice.Application.Test.csproj +34 -0
  128. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/AddProductToOrder/AddProductToOrderCommandHandlerTest.cs +98 -0
  129. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/AddProductToOrder/AddProductToOrderCommandTest.cs +84 -0
  130. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CancelOrder/CancelOrderCommandHandlerTest.cs +74 -0
  131. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CancelOrder/CancelOrderCommandTest.cs +43 -0
  132. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CompleteOrder/CompleteOrderCommandHandlerTest.cs +74 -0
  133. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CompleteOrder/CompleteOrderCommandTest.cs +32 -0
  134. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CreateOrder/CreateOrderCommandHandlerTest.cs +100 -0
  135. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CreateOrder/CreateOrderCommandTest.cs +122 -0
  136. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/RemoveProduct/RemoveProductCommandHandlerTest.cs +71 -0
  137. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/RemoveProduct/RemoveProductCommandTest.cs +33 -0
  138. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandHandlerTest.cs +82 -0
  139. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandTest.cs +51 -0
  140. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Queries/FindOrderById/FindOrderByIdQueryHandlerTest.cs +70 -0
  141. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Queries/GetAllOrders/GetAllOrdersQueryHandlerTest.cs +80 -0
  142. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Setup/MapsterConfigTest.cs +20 -0
  143. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Usings.cs +18 -0
  144. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/CodeDesignPlus.Net.Microservice.AsyncWorker.Test.csproj +38 -0
  145. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Usings.cs +9 -0
  146. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/CodeDesignPlus.Net.Microservice.Default.Test.csproj +35 -0
  147. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Usings.cs +6 -0
  148. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/AggregateTest.cs +37 -0
  149. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/CommandsTests.cs +29 -0
  150. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/DataTransferObjectTest.cs +47 -0
  151. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/DomainEventTest.cs +42 -0
  152. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/EntityTest.cs +25 -0
  153. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/ErrorsTest.cs +55 -0
  154. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/QueryTests.cs +29 -0
  155. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/StartupTest.cs +43 -0
  156. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/CodeDesignPlus.Net.Microservice.Domain.Test.csproj +38 -0
  157. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/DomainEvents/OrderCancelledDomainEventTest.cs +46 -0
  158. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/OrderAggregateTest.cs +518 -0
  159. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/Usings.cs +7 -0
  160. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/CodeDesignPlus.Net.Microservice.Infrastructure.Test.csproj +34 -0
  161. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/Repositories/OrderRepositoryTest.cs +259 -0
  162. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/Usings.cs +14 -0
  163. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/CodeDesignPlus.Net.Microservice.Rest.Test.csproj +40 -0
  164. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Controllers/OrderControllerTest.cs +189 -0
  165. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Core/Mapster/MapsterConfigTest.cs +19 -0
  166. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Usings.cs +14 -0
  167. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/CodeDesignPlus.Net.Microservice.gRpc.Test.csproj +39 -0
  168. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Core/Mapster/MapsterConfigTest.cs +19 -0
  169. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Services/OrderServiceTest.cs +72 -0
  170. package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Usings.cs +15 -0
  171. package/generators/microservice/templates/microservice/tools/convert-crlf-to-lf.sh +6 -0
  172. package/generators/microservice/templates/microservice/tools/sonarqube/sonar.ps1 +18 -0
  173. package/generators/microservice/templates/microservice/tools/sonarqube/sonar.sh +18 -0
  174. package/generators/microservice/templates/microservice/tools/update-packages/update-packages.ps1 +10 -0
  175. package/generators/microservice/templates/microservice/tools/update-packages/update-packages.sh +11 -0
  176. package/generators/microservice/templates/microservice/tools/upgrade-dotnet/upgrade-assistant.ps1 +10 -0
  177. package/generators/microservice/templates/microservice/tools/upgrade-dotnet/upgrade-assistant.sh +11 -0
  178. package/generators/microservice/templates/microservice/tools/vault/config-vault.ps1 +178 -0
  179. package/generators/microservice/templates/microservice/tools/vault/config-vault.sh +152 -0
  180. package/generators/microservice/templates/others/MapsterConfig.cs +9 -0
  181. package/generators/microservice/templates/query/ItemQuery.cs +4 -0
  182. package/generators/microservice/templates/query/ItemQueryHandler.cs +9 -0
  183. package/generators/microservice/templates/repository/IItemRepository.cs +6 -0
  184. package/generators/microservice/templates/repository/ItemRepository.cs +7 -0
  185. package/generators/microservice/templates/value-object/ItemValueObject.cs +23 -0
  186. package/generators/microservice/types/aggregate.mjs +19 -0
  187. package/generators/microservice/types/appsettings.mjs +26 -0
  188. package/generators/microservice/types/base.mjs +24 -0
  189. package/generators/microservice/types/command.mjs +38 -0
  190. package/generators/microservice/types/consumer.mjs +21 -0
  191. package/generators/microservice/types/controller.mjs +20 -0
  192. package/generators/microservice/types/dataTransferObject.mjs +19 -0
  193. package/generators/microservice/types/domainEvents.mjs +22 -0
  194. package/generators/microservice/types/entity.mjs +21 -0
  195. package/generators/microservice/types/index.mjs +25 -0
  196. package/generators/microservice/types/proto.mjs +19 -0
  197. package/generators/microservice/types/query.mjs +38 -0
  198. package/generators/microservice/types/repository.mjs +21 -0
  199. package/generators/microservice/types/valueObject.mjs +23 -0
  200. 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
+ }