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,518 @@
1
+ using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
2
+
3
+ namespace CodeDesignPlus.Net.Microservice.Domain.Test;
4
+
5
+ public class OrderAggregateTest
6
+ {
7
+ [Fact]
8
+ public void Create_IdIsEmpty_Should_Throw_DomainException()
9
+ {
10
+ // Arrange
11
+ var id = Guid.Empty;
12
+ var idClient = Guid.NewGuid();
13
+ var tenant = Guid.NewGuid();
14
+ var createdBy = Guid.NewGuid();
15
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
16
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
17
+
18
+ // Act
19
+ var exception = Assert.Throws<CodeDesignPlusException>(() => OrderAggregate.Create(id, client, shippingAddress, tenant, createdBy));
20
+
21
+ // Assert
22
+ Assert.Equal(Errors.IdOrderIsInvalid.GetCode(), exception.Code);
23
+ Assert.Equal(Errors.IdOrderIsInvalid.GetMessage(), exception.Message);
24
+ }
25
+
26
+ [Fact]
27
+ public void Create_TenantIsEmpty_Should_Throw_DomainException()
28
+ {
29
+ // Arrange
30
+ var id = Guid.NewGuid();
31
+ var idClient = Guid.NewGuid();
32
+ var tenant = Guid.Empty;
33
+ var createdBy = Guid.NewGuid();
34
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
35
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
36
+
37
+ // Act
38
+ var exception = Assert.Throws<CodeDesignPlusException>(() => OrderAggregate.Create(id, client, shippingAddress, tenant, createdBy));
39
+
40
+ // Assert
41
+ Assert.Equal(Errors.TenantIsInvalid.GetCode(), exception.Code);
42
+ Assert.Equal(Errors.TenantIsInvalid.GetMessage(), exception.Message);
43
+ }
44
+
45
+ [Fact]
46
+ public void Create_ClientIsNull_Should_Throw_DomainException()
47
+ {
48
+ // Arrange
49
+ var id = Guid.NewGuid();
50
+ var idClient = Guid.NewGuid();
51
+ var tenant = Guid.NewGuid();
52
+ var createdBy = Guid.NewGuid();
53
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
54
+
55
+ // Act
56
+ var exception = Assert.Throws<CodeDesignPlusException>(() => OrderAggregate.Create(id, null!, shippingAddress, tenant, createdBy));
57
+
58
+ // Assert
59
+ Assert.Equal(Errors.ClientIsNull.GetCode(), exception.Code);
60
+ Assert.Equal(Errors.ClientIsNull.GetMessage(), exception.Message);
61
+ }
62
+
63
+
64
+ [Fact]
65
+ public void Create_AddressIsNull_Should_Throw_DomainException()
66
+ {
67
+ // Arrange
68
+ var id = Guid.NewGuid();
69
+ var idClient = Guid.NewGuid();
70
+ var tenant = Guid.NewGuid();
71
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
72
+ var createdBy = Guid.NewGuid();
73
+
74
+ // Act
75
+ var exception = Assert.Throws<CodeDesignPlusException>(() => OrderAggregate.Create(id, client, null!, tenant, createdBy));
76
+
77
+ // Assert
78
+ Assert.Equal(Errors.AddressIsNull.GetCode(), exception.Code);
79
+ Assert.Equal(Errors.AddressIsNull.GetMessage(), exception.Message);
80
+ }
81
+
82
+ [Fact]
83
+ public void Create_Should_Create_OrderAggregate()
84
+ {
85
+ // Arrange
86
+ var id = Guid.NewGuid();
87
+ var tenant = Guid.NewGuid();
88
+ var createdBy = Guid.NewGuid();
89
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
90
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
91
+
92
+ // Act
93
+ var orderAggregate = OrderAggregate.Create(id, client, shippingAddress, tenant, createdBy);
94
+ var @event = orderAggregate.GetAndClearEvents()[0] as OrderCreatedDomainEvent;
95
+
96
+ // Assert
97
+ Assert.NotNull(orderAggregate);
98
+ Assert.Equal(id, orderAggregate.Id);
99
+ Assert.Equal(client.Id, orderAggregate.Client.Id);
100
+ Assert.Equal(client.Name, orderAggregate.Client.Name);
101
+ Assert.Equal(client.Document, orderAggregate.Client.Document);
102
+ Assert.Equal(client.TypeDocument, orderAggregate.Client.TypeDocument);
103
+ Assert.Equal(shippingAddress.Country, orderAggregate.ShippingAddress.Country);
104
+ Assert.Equal(shippingAddress.State, orderAggregate.ShippingAddress.State);
105
+ Assert.Equal(shippingAddress.City, orderAggregate.ShippingAddress.City);
106
+ Assert.Equal(shippingAddress.Address, orderAggregate.ShippingAddress.Address);
107
+ Assert.Equal(shippingAddress.CodePostal, orderAggregate.ShippingAddress.CodePostal);
108
+ Assert.Equal(tenant, orderAggregate.Tenant);
109
+ Assert.Equal(createdBy, orderAggregate.CreatedBy);
110
+ Assert.Equal(OrderStatus.Created, orderAggregate.Status);
111
+
112
+ Assert.NotNull(@event);
113
+ Assert.Equal(id, @event.AggregateId);
114
+ Assert.Equal(client.Id, @event.Client.Id);
115
+ Assert.Equal(client.Name, @event.Client.Name);
116
+ Assert.Equal(client.Document, @event.Client.Document);
117
+ Assert.Equal(client.TypeDocument, @event.Client.TypeDocument);
118
+ Assert.Equal(shippingAddress.Country, @event.ShippingAddress.Country);
119
+ Assert.Equal(shippingAddress.State, @event.ShippingAddress.State);
120
+ Assert.Equal(shippingAddress.City, @event.ShippingAddress.City);
121
+ Assert.Equal(shippingAddress.Address, @event.ShippingAddress.Address);
122
+ Assert.Equal(shippingAddress.CodePostal, @event.ShippingAddress.CodePostal);
123
+ Assert.Equal(tenant, @event.Tenant);
124
+ Assert.Equal(OrderStatus.Created, @event.OrderStatus);
125
+ Assert.NotEqual(0, @event.CreatedAt);
126
+ }
127
+
128
+ [Fact]
129
+ public void AddProduct_IdIsEmpty_Should_Throw_DomainException()
130
+ {
131
+ // Arrange
132
+ var createdBy = Guid.NewGuid();
133
+ var updatedBy = Guid.NewGuid();
134
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
135
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
136
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(),client, shippingAddress, Guid.NewGuid(), createdBy);
137
+ var id = Guid.Empty;
138
+ var name = "Product 1";
139
+ var description = "Product 1 description";
140
+ var price = 10L;
141
+ var quantity = 2;
142
+
143
+ // Act
144
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.AddProduct(id, name, description, price, quantity, updatedBy));
145
+
146
+ // Assert
147
+ Assert.Equal(Errors.IdProductIsInvalid.GetCode(), exception.Code);
148
+ Assert.Equal(Errors.IdProductIsInvalid.GetMessage(), exception.Message);
149
+ }
150
+
151
+ [Fact]
152
+ public void AddProduct_NameIsEmpty_Should_Throw_DomainException()
153
+ {
154
+ // Arrange
155
+ var createdBy = Guid.NewGuid();
156
+ var updatedBy = Guid.NewGuid();
157
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
158
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
159
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
160
+ var id = Guid.NewGuid();
161
+ var name = string.Empty;
162
+ var description = "Product 1 description";
163
+ var price = 10L;
164
+ var quantity = 2;
165
+
166
+ // Act
167
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.AddProduct(id, name, description, price, quantity, updatedBy));
168
+
169
+ // Assert
170
+ Assert.Equal(Errors.NameProductIsInvalid.GetCode(), exception.Code);
171
+ Assert.Equal(Errors.NameProductIsInvalid.GetMessage(), exception.Message);
172
+ }
173
+
174
+ [Fact]
175
+ public void AddProduct_PriceIsLessThanZero_Should_Throw_DomainException()
176
+ {
177
+ // Arrange
178
+ var createdBy = Guid.NewGuid();
179
+ var updatedBy = Guid.NewGuid();
180
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
181
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
182
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
183
+ var id = Guid.NewGuid();
184
+ var name = "Product 1";
185
+ var description = "Product 1 description";
186
+ var price = -1L;
187
+ var quantity = 2;
188
+
189
+ // Act
190
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.AddProduct(id, name, description, price, quantity, updatedBy));
191
+
192
+ // Assert
193
+ Assert.Equal(Errors.PriceProductIsInvalid.GetCode(), exception.Code);
194
+ Assert.Equal(Errors.PriceProductIsInvalid.GetMessage(), exception.Message);
195
+ }
196
+
197
+ [Fact]
198
+ public void AddProduct_QuantityIsLessThanZero_Should_Throw_DomainException()
199
+ {
200
+ // Arrange
201
+ var createdBy = Guid.NewGuid();
202
+ var updatedBy = Guid.NewGuid();
203
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
204
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
205
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
206
+ var id = Guid.NewGuid();
207
+ var name = "Product 1";
208
+ var description = "Product 1 description";
209
+ var price = 10L;
210
+ var quantity = -1;
211
+
212
+ // Act
213
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.AddProduct(id, name, description, price, quantity, updatedBy));
214
+
215
+ // Assert
216
+ Assert.Equal(Errors.QuantityProductIsInvalid.GetCode(), exception.Code);
217
+ Assert.Equal(Errors.QuantityProductIsInvalid.GetMessage(), exception.Message);
218
+ }
219
+
220
+ [Fact]
221
+ public void AddProduct_Should_Add_Product_To_OrderAggregate()
222
+ {
223
+ // Arrange
224
+ var createdBy = Guid.NewGuid();
225
+ var updatedBy = Guid.NewGuid();
226
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
227
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
228
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
229
+ var productId = Guid.NewGuid();
230
+ var name = "Product 1";
231
+ var description = "Product 1 description";
232
+ var price = 10L;
233
+ var quantity = 2;
234
+
235
+ // Act
236
+ orderAggregate.AddProduct(productId, name, description, price, quantity, updatedBy);
237
+ var @event = orderAggregate.GetAndClearEvents().FirstOrDefault(x => x is ProductAddedToOrderDomainEvent) as ProductAddedToOrderDomainEvent;
238
+
239
+ // Assert
240
+ var product = orderAggregate.Products.First(p => p.Id == productId);
241
+ Assert.NotNull(product);
242
+ Assert.Equal(name, product.Name);
243
+ Assert.Equal(description, product.Description);
244
+ Assert.Equal(price, product.Price);
245
+ Assert.Equal(quantity, product.Quantity);
246
+
247
+ Assert.NotNull(@event);
248
+ Assert.Equal(orderAggregate.Id, @event.AggregateId);
249
+ Assert.Equal(quantity, @event.Quantity);
250
+ Assert.Equal(productId, @event.Product.Id);
251
+ Assert.Equal(name, @event.Product.Name);
252
+ Assert.Equal(description, @event.Product.Description);
253
+ Assert.Equal(price, @event.Product.Price);
254
+
255
+ Assert.NotNull(orderAggregate.UpdatedAt);
256
+ Assert.Equal(updatedBy, orderAggregate.UpdatedBy);
257
+ Assert.NotEqual(orderAggregate.CreatedBy, orderAggregate.UpdatedBy);
258
+ }
259
+
260
+ [Fact]
261
+ public void RemoveProduct_IdIsEmpty_Should_Throw_DomainException()
262
+ {
263
+ // Arrange
264
+ var createdBy = Guid.NewGuid();
265
+ var updatedBy = Guid.NewGuid();
266
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
267
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
268
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
269
+ var id = Guid.Empty;
270
+
271
+ // Act
272
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.RemoveProduct(id, updatedBy));
273
+
274
+ // Assert
275
+ Assert.Equal(Errors.IdProductIsInvalid.GetCode(), exception.Code);
276
+ Assert.Equal(Errors.IdProductIsInvalid.GetMessage(), exception.Message);
277
+ }
278
+
279
+ [Fact]
280
+ public void RemoveProduct_ProductNotFound_Should_Throw_DomainException()
281
+ {
282
+ // Arrange
283
+ var createdBy = Guid.NewGuid();
284
+ var updatedBy = Guid.NewGuid();
285
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
286
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
287
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
288
+ var productId = Guid.NewGuid();
289
+
290
+ // Act
291
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.RemoveProduct(productId, updatedBy));
292
+
293
+ // Assert
294
+ Assert.Equal(Errors.ProductNotFound.GetCode(), exception.Code);
295
+ Assert.Equal(Errors.ProductNotFound.GetMessage(), exception.Message);
296
+ }
297
+
298
+ [Fact]
299
+ public void RemoveProduct_Should_Remove_Product_From_OrderAggregate()
300
+ {
301
+ // Arrange
302
+ var createdBy = Guid.NewGuid();
303
+ var updatedBy = Guid.NewGuid();
304
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
305
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
306
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
307
+ var productId = Guid.NewGuid();
308
+ var name = "Product 1";
309
+ var description = "Product 1 description";
310
+ var price = 10L;
311
+ var quantity = 2;
312
+ orderAggregate.AddProduct(productId, name, description, price, quantity, Guid.NewGuid());
313
+
314
+ // Act
315
+ orderAggregate.RemoveProduct(productId, updatedBy);
316
+ var @event = orderAggregate.GetAndClearEvents().FirstOrDefault(x => x is ProductRemovedFromOrderDomainEvent) as ProductRemovedFromOrderDomainEvent;
317
+
318
+ // Assert
319
+ Assert.DoesNotContain(orderAggregate.Products, p => p.Id == productId);
320
+
321
+ Assert.NotNull(@event);
322
+ Assert.Equal(orderAggregate.Id, @event.AggregateId);
323
+ Assert.Equal(productId, @event.ProductId);
324
+
325
+ Assert.NotNull(orderAggregate.UpdatedAt);
326
+ Assert.Equal(updatedBy, orderAggregate.UpdatedBy);
327
+ Assert.NotEqual(orderAggregate.CreatedBy, orderAggregate.UpdatedBy);
328
+ }
329
+
330
+ [Fact]
331
+ public void UpdateProductQuantity_IdIsEmpty_Should_Throw_DomainException()
332
+ {
333
+ // Arrange
334
+ var createdBy = Guid.NewGuid();
335
+ var updatedBy = Guid.NewGuid();
336
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
337
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
338
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
339
+ var id = Guid.Empty;
340
+ var newQuantity = 5;
341
+
342
+ // Act
343
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.UpdateProductQuantity(id, newQuantity, updatedBy));
344
+
345
+ // Assert
346
+ Assert.Equal(Errors.IdProductIsInvalid.GetCode(), exception.Code);
347
+ Assert.Equal(Errors.IdProductIsInvalid.GetMessage(), exception.Message);
348
+ }
349
+
350
+ [Fact]
351
+ public void UpdateProductQuantity_QuantityIsLessThanZero_Should_Throw_DomainException()
352
+ {
353
+ // Arrange
354
+ var createdBy = Guid.NewGuid();
355
+ var updatedBy = Guid.NewGuid();
356
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
357
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
358
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
359
+ var productId = Guid.NewGuid();
360
+ var newQuantity = -1;
361
+
362
+ // Act
363
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.UpdateProductQuantity(productId, newQuantity, updatedBy));
364
+
365
+ // Assert
366
+ Assert.Equal(Errors.QuantityProductIsInvalid.GetCode(), exception.Code);
367
+ Assert.Equal(Errors.QuantityProductIsInvalid.GetMessage(), exception.Message);
368
+ }
369
+
370
+ [Fact]
371
+ public void UpdateProductQuantity_Should_Update_Product_Quantity_In_OrderAggregate()
372
+ {
373
+ // Arrange
374
+ var createdBy = Guid.NewGuid();
375
+ var updatedBy = Guid.NewGuid();
376
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
377
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
378
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
379
+ var productId = Guid.NewGuid();
380
+ var name = "Product 1";
381
+ var description = "Product 1 description";
382
+ var price = 10L;
383
+ var quantity = 2;
384
+ orderAggregate.AddProduct(productId, name, description, price, quantity, Guid.NewGuid());
385
+ var newQuantity = 5;
386
+
387
+ // Act
388
+ orderAggregate.UpdateProductQuantity(productId, newQuantity, updatedBy);
389
+ var @event = orderAggregate.GetAndClearEvents().FirstOrDefault(x => x is ProductQuantityUpdatedDomainEvent) as ProductQuantityUpdatedDomainEvent;
390
+
391
+ // Assert
392
+ var product = orderAggregate.Products.First(p => p.Id == productId);
393
+ Assert.NotNull(product);
394
+ Assert.Equal(newQuantity, product.Quantity);
395
+
396
+ Assert.NotNull(@event);
397
+ Assert.Equal(orderAggregate.Id, @event.AggregateId);
398
+ Assert.Equal(productId, @event.ProductId);
399
+ Assert.Equal(newQuantity, @event.NewQuantity);
400
+
401
+ Assert.NotNull(orderAggregate.UpdatedAt);
402
+ Assert.Equal(updatedBy, orderAggregate.UpdatedBy);
403
+ Assert.NotEqual(orderAggregate.CreatedBy, orderAggregate.UpdatedBy);
404
+ }
405
+
406
+ [Fact]
407
+ public void CompleteOrder_StatusIsCancelled_ShouldThrow_DomainException()
408
+ {
409
+ // Arrange
410
+ var createdBy = Guid.NewGuid();
411
+ var updatedBy = Guid.NewGuid();
412
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
413
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
414
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
415
+ orderAggregate.CancelOrder("Out of stock", Guid.NewGuid());
416
+
417
+ // Act
418
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.CompleteOrder(updatedBy));
419
+
420
+ // Assert
421
+ Assert.Equal(Errors.OrderAlreadyCancelled.GetCode(), exception.Code);
422
+ Assert.Equal(Errors.OrderAlreadyCancelled.GetMessage(), exception.Message);
423
+ }
424
+
425
+ [Fact]
426
+ public void CompleteOrder_StatusIsCompleted_ShouldThrow_DomainException()
427
+ {
428
+ // Arrange
429
+ var createdBy = Guid.NewGuid();
430
+ var updatedBy = Guid.NewGuid();
431
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
432
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
433
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
434
+ orderAggregate.CompleteOrder(Guid.NewGuid());
435
+
436
+ // Act
437
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.CompleteOrder(updatedBy));
438
+
439
+ // Assert
440
+ Assert.Equal(Errors.OrderAlreadyCompleted.GetCode(), exception.Code);
441
+ Assert.Equal(Errors.OrderAlreadyCompleted.GetMessage(), exception.Message);
442
+ }
443
+
444
+ [Fact]
445
+ public void CompleteOrder_Should_Complete_OrderAggregate()
446
+ {
447
+ // Arrange
448
+ var createdBy = Guid.NewGuid();
449
+ var updatedBy = Guid.NewGuid();
450
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
451
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
452
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
453
+
454
+ // Act
455
+ orderAggregate.CompleteOrder(updatedBy);
456
+ var @event = orderAggregate.GetAndClearEvents().FirstOrDefault(x => x is OrderCompletedDomainEvent) as OrderCompletedDomainEvent;
457
+
458
+ // Assert
459
+ Assert.Equal(OrderStatus.Completed, orderAggregate.Status);
460
+ Assert.NotNull(orderAggregate.CompletedAt);
461
+
462
+ Assert.NotNull(@event);
463
+ Assert.Equal(orderAggregate.Id, @event.AggregateId);
464
+ Assert.NotEqual(0, @event.CompletedAt);
465
+
466
+ Assert.NotNull(orderAggregate.UpdatedAt);
467
+ Assert.Equal(updatedBy, orderAggregate.UpdatedBy);
468
+ Assert.NotEqual(orderAggregate.CreatedBy, orderAggregate.UpdatedBy);
469
+ }
470
+
471
+ [Fact]
472
+ public void CancelOrder_StatusIsCancelled_ShouldThrow_DomainException()
473
+ {
474
+ // Arrange
475
+ var createdBy = Guid.NewGuid();
476
+ var updatedBy = Guid.NewGuid();
477
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
478
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
479
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
480
+ orderAggregate.CancelOrder("Out of stock", Guid.NewGuid());
481
+
482
+ // Act
483
+ var exception = Assert.Throws<CodeDesignPlusException>(() => orderAggregate.CancelOrder("Out of stock", updatedBy));
484
+
485
+ // Assert
486
+ Assert.Equal(Errors.OrderAlreadyCancelled.GetCode(), exception.Code);
487
+ Assert.Equal(Errors.OrderAlreadyCancelled.GetMessage(), exception.Message);
488
+ }
489
+
490
+ [Fact]
491
+ public void CancelOrder_Should_Cancel_OrderAggregate()
492
+ {
493
+ // Arrange
494
+ var createdBy = Guid.NewGuid();
495
+ var updatedBy = Guid.NewGuid();
496
+ var client = ClientValueObject.Create(Guid.NewGuid(), "John Doe", "123456789", "CC");
497
+ var shippingAddress = AddressValueObject.Create("Colombia", "Antioquia", "Medellin", "Cra 80 # 45a 45", 500);
498
+ var orderAggregate = OrderAggregate.Create(Guid.NewGuid(), client, shippingAddress, Guid.NewGuid(), createdBy);
499
+ var reason = "Out of stock";
500
+
501
+ // Act
502
+ orderAggregate.CancelOrder(reason, updatedBy);
503
+ var @event = orderAggregate.GetAndClearEvents().FirstOrDefault(x => x is OrderCancelledDomainEvent) as OrderCancelledDomainEvent;
504
+
505
+ // Assert
506
+ Assert.Equal(OrderStatus.Cancelled, orderAggregate.Status);
507
+ Assert.NotNull(orderAggregate.CancelledAt);
508
+ Assert.Equal(reason, orderAggregate.ReasonForCancellation);
509
+
510
+ Assert.NotNull(@event);
511
+ Assert.Equal(orderAggregate.Id, @event.AggregateId);
512
+ Assert.Equal(reason, @event.Reason);
513
+
514
+ Assert.NotNull(orderAggregate.UpdatedAt);
515
+ Assert.Equal(updatedBy, orderAggregate.UpdatedBy);
516
+ Assert.NotEqual(orderAggregate.CreatedBy, orderAggregate.UpdatedBy);
517
+ }
518
+ }
@@ -0,0 +1,7 @@
1
+ global using System;
2
+ global using CodeDesignPlus.Net.Exceptions;
3
+ global using CodeDesignPlus.Net.Exceptions.Extensions;
4
+ global using CodeDesignPlus.Net.Serializers;
5
+
6
+ global using CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
7
+ global using CodeDesignPlus.Net.Microservice.Domain.Enums;
@@ -0,0 +1,34 @@
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="Microsoft.NET.Test.Sdk" Version="17.12.0" />
21
+ <PackageReference Include="Moq" Version="4.20.72" />
22
+ <PackageReference Include="xunit" Version="2.9.2" />
23
+ <PackageReference Include="xunit.runner.visualstudio" Version="3.0.0">
24
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
25
+ <PrivateAssets>all</PrivateAssets>
26
+ </PackageReference>
27
+ </ItemGroup>
28
+ <ItemGroup>
29
+ <Using Include="Xunit" />
30
+ </ItemGroup>
31
+ <ItemGroup>
32
+ <ProjectReference Include="..\..\..\src\domain\CodeDesignPlus.Net.Microservice.Infrastructure\CodeDesignPlus.Net.Microservice.Infrastructure.csproj" />
33
+ </ItemGroup>
34
+ </Project>