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,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
+