@reventlessdev/online-shop-aggregates-catalog 3.0.0-alpha.101

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 (330) hide show
  1. package/CHANGELOG.md +854 -0
  2. package/LICENSE +202 -0
  3. package/__mocks__/emptyModule.js +1 -0
  4. package/lib/bs/.compiler.log +2 -0
  5. package/lib/bs/CatalogPlugin.cmi +0 -0
  6. package/lib/bs/CatalogPlugin.cmj +0 -0
  7. package/lib/bs/CatalogPlugin.cmt +0 -0
  8. package/lib/bs/CatalogPlugin.mlmap +25 -0
  9. package/lib/bs/build.ninja +0 -0
  10. package/lib/bs/compiler-info.json +8 -0
  11. package/lib/bs/src/Category/Aggregate/Category-CatalogPlugin.cmi +0 -0
  12. package/lib/bs/src/Category/Aggregate/Category-CatalogPlugin.cmj +0 -0
  13. package/lib/bs/src/Category/Aggregate/Category-CatalogPlugin.cmt +0 -0
  14. package/lib/bs/src/Category/Aggregate/Category.ast +0 -0
  15. package/lib/bs/src/Category/Aggregate/Category.res +22 -0
  16. package/lib/bs/src/Category/Aggregate/Category.res.mjs +61 -0
  17. package/lib/bs/src/Category/Aggregate/Category_Behavior-CatalogPlugin.cmi +0 -0
  18. package/lib/bs/src/Category/Aggregate/Category_Behavior-CatalogPlugin.cmj +0 -0
  19. package/lib/bs/src/Category/Aggregate/Category_Behavior-CatalogPlugin.cmt +0 -0
  20. package/lib/bs/src/Category/Aggregate/Category_Behavior.ast +0 -0
  21. package/lib/bs/src/Category/Aggregate/Category_Behavior.res +36 -0
  22. package/lib/bs/src/Category/Aggregate/Category_Behavior.res.mjs +106 -0
  23. package/lib/bs/src/Category/ReadModel/Categories-CatalogPlugin.cmi +0 -0
  24. package/lib/bs/src/Category/ReadModel/Categories-CatalogPlugin.cmj +0 -0
  25. package/lib/bs/src/Category/ReadModel/Categories-CatalogPlugin.cmt +0 -0
  26. package/lib/bs/src/Category/ReadModel/Categories.ast +0 -0
  27. package/lib/bs/src/Category/ReadModel/Categories.res +11 -0
  28. package/lib/bs/src/Category/ReadModel/Categories.res.mjs +35 -0
  29. package/lib/bs/src/Category/ReadModel/Categories_Projections-CatalogPlugin.cmi +0 -0
  30. package/lib/bs/src/Category/ReadModel/Categories_Projections-CatalogPlugin.cmj +0 -0
  31. package/lib/bs/src/Category/ReadModel/Categories_Projections-CatalogPlugin.cmt +0 -0
  32. package/lib/bs/src/Category/ReadModel/Categories_Projections.ast +0 -0
  33. package/lib/bs/src/Category/ReadModel/Categories_Projections.res +19 -0
  34. package/lib/bs/src/Category/ReadModel/Categories_Projections.res.mjs +75 -0
  35. package/lib/bs/src/Extension/Orders_Extension-CatalogPlugin.cmi +0 -0
  36. package/lib/bs/src/Extension/Orders_Extension-CatalogPlugin.cmj +0 -0
  37. package/lib/bs/src/Extension/Orders_Extension-CatalogPlugin.cmt +0 -0
  38. package/lib/bs/src/Extension/Orders_Extension.ast +0 -0
  39. package/lib/bs/src/Extension/Orders_Extension.res +23 -0
  40. package/lib/bs/src/Extension/Orders_Extension.res.mjs +42 -0
  41. package/lib/bs/src/ExtensionPoint/Products_ExtensionPointMapping-CatalogPlugin.cmi +0 -0
  42. package/lib/bs/src/ExtensionPoint/Products_ExtensionPointMapping-CatalogPlugin.cmj +0 -0
  43. package/lib/bs/src/ExtensionPoint/Products_ExtensionPointMapping-CatalogPlugin.cmt +0 -0
  44. package/lib/bs/src/ExtensionPoint/Products_ExtensionPointMapping.ast +0 -0
  45. package/lib/bs/src/ExtensionPoint/Products_ExtensionPointMapping.res +19 -0
  46. package/lib/bs/src/ExtensionPoint/Products_ExtensionPointMapping.res.mjs +56 -0
  47. package/lib/bs/src/Plugin-CatalogPlugin.cmi +0 -0
  48. package/lib/bs/src/Plugin-CatalogPlugin.cmj +0 -0
  49. package/lib/bs/src/Plugin-CatalogPlugin.cmt +0 -0
  50. package/lib/bs/src/Plugin.ast +0 -0
  51. package/lib/bs/src/Plugin.res +65 -0
  52. package/lib/bs/src/Plugin.res.mjs +222 -0
  53. package/lib/bs/src/Product/Aggregate/Product-CatalogPlugin.cmi +0 -0
  54. package/lib/bs/src/Product/Aggregate/Product-CatalogPlugin.cmj +0 -0
  55. package/lib/bs/src/Product/Aggregate/Product-CatalogPlugin.cmt +0 -0
  56. package/lib/bs/src/Product/Aggregate/Product.ast +0 -0
  57. package/lib/bs/src/Product/Aggregate/Product.res +23 -0
  58. package/lib/bs/src/Product/Aggregate/Product.res.mjs +71 -0
  59. package/lib/bs/src/Product/Aggregate/Product_Behavior-CatalogPlugin.cmi +0 -0
  60. package/lib/bs/src/Product/Aggregate/Product_Behavior-CatalogPlugin.cmj +0 -0
  61. package/lib/bs/src/Product/Aggregate/Product_Behavior-CatalogPlugin.cmt +0 -0
  62. package/lib/bs/src/Product/Aggregate/Product_Behavior.ast +0 -0
  63. package/lib/bs/src/Product/Aggregate/Product_Behavior.res +38 -0
  64. package/lib/bs/src/Product/Aggregate/Product_Behavior.res.mjs +150 -0
  65. package/lib/bs/src/Product/ReadModel/Products-CatalogPlugin.cmi +0 -0
  66. package/lib/bs/src/Product/ReadModel/Products-CatalogPlugin.cmj +0 -0
  67. package/lib/bs/src/Product/ReadModel/Products-CatalogPlugin.cmt +0 -0
  68. package/lib/bs/src/Product/ReadModel/Products.ast +0 -0
  69. package/lib/bs/src/Product/ReadModel/Products.res +12 -0
  70. package/lib/bs/src/Product/ReadModel/Products.res.mjs +36 -0
  71. package/lib/bs/src/Product/ReadModel/Products_Projections-CatalogPlugin.cmi +0 -0
  72. package/lib/bs/src/Product/ReadModel/Products_Projections-CatalogPlugin.cmj +0 -0
  73. package/lib/bs/src/Product/ReadModel/Products_Projections-CatalogPlugin.cmt +0 -0
  74. package/lib/bs/src/Product/ReadModel/Products_Projections.ast +0 -0
  75. package/lib/bs/src/Product/ReadModel/Products_Projections.res +22 -0
  76. package/lib/bs/src/Product/ReadModel/Products_Projections.res.mjs +91 -0
  77. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand-CatalogPlugin.cmi +0 -0
  78. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand-CatalogPlugin.cmj +0 -0
  79. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand-CatalogPlugin.cmt +0 -0
  80. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand.ast +0 -0
  81. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand.res +20 -0
  82. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand.res.mjs +51 -0
  83. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand_Behavior-CatalogPlugin.cmi +0 -0
  84. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand_Behavior-CatalogPlugin.cmj +0 -0
  85. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand_Behavior-CatalogPlugin.cmt +0 -0
  86. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand_Behavior.ast +0 -0
  87. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand_Behavior.res +39 -0
  88. package/lib/bs/src/ProductDemand/Aggregate/ProductDemand_Behavior.res.mjs +102 -0
  89. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands-CatalogPlugin.cmi +0 -0
  90. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands-CatalogPlugin.cmj +0 -0
  91. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands-CatalogPlugin.cmt +0 -0
  92. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands.ast +0 -0
  93. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands.res +8 -0
  94. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands.res.mjs +35 -0
  95. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands_Projections-CatalogPlugin.cmi +0 -0
  96. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands_Projections-CatalogPlugin.cmj +0 -0
  97. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands_Projections-CatalogPlugin.cmt +0 -0
  98. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands_Projections.ast +0 -0
  99. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands_Projections.res +36 -0
  100. package/lib/bs/src/ProductDemand/ReadModel/ProductDemands_Projections.res.mjs +99 -0
  101. package/lib/bs/src/Task/ImportProducts-CatalogPlugin.cmi +0 -0
  102. package/lib/bs/src/Task/ImportProducts-CatalogPlugin.cmj +0 -0
  103. package/lib/bs/src/Task/ImportProducts-CatalogPlugin.cmt +0 -0
  104. package/lib/bs/src/Task/ImportProducts.ast +0 -0
  105. package/lib/bs/src/Task/ImportProducts.res +48 -0
  106. package/lib/bs/src/Task/ImportProducts.res.mjs +58 -0
  107. package/lib/bs/tests/Category/Aggregate/Category_GWT-CatalogPlugin.cmi +0 -0
  108. package/lib/bs/tests/Category/Aggregate/Category_GWT-CatalogPlugin.cmj +0 -0
  109. package/lib/bs/tests/Category/Aggregate/Category_GWT-CatalogPlugin.cmt +0 -0
  110. package/lib/bs/tests/Category/Aggregate/Category_GWT.ast +0 -0
  111. package/lib/bs/tests/Category/Aggregate/Category_GWT.res +51 -0
  112. package/lib/bs/tests/Category/Aggregate/Category_GWT.res.mjs +125 -0
  113. package/lib/bs/tests/Category/ReadModel/Categories_GWT-CatalogPlugin.cmi +0 -0
  114. package/lib/bs/tests/Category/ReadModel/Categories_GWT-CatalogPlugin.cmj +0 -0
  115. package/lib/bs/tests/Category/ReadModel/Categories_GWT-CatalogPlugin.cmt +0 -0
  116. package/lib/bs/tests/Category/ReadModel/Categories_GWT.ast +0 -0
  117. package/lib/bs/tests/Category/ReadModel/Categories_GWT.res +21 -0
  118. package/lib/bs/tests/Category/ReadModel/Categories_GWT.res.mjs +88 -0
  119. package/lib/bs/tests/Extension/Orders_Extension_GWT-CatalogPlugin.cmi +0 -0
  120. package/lib/bs/tests/Extension/Orders_Extension_GWT-CatalogPlugin.cmj +0 -0
  121. package/lib/bs/tests/Extension/Orders_Extension_GWT-CatalogPlugin.cmt +0 -0
  122. package/lib/bs/tests/Extension/Orders_Extension_GWT.ast +0 -0
  123. package/lib/bs/tests/Extension/Orders_Extension_GWT.res +21 -0
  124. package/lib/bs/tests/Extension/Orders_Extension_GWT.res.mjs +105 -0
  125. package/lib/bs/tests/ExtensionPoint/Products_ExtensionPointMapping_GWT-CatalogPlugin.cmi +0 -0
  126. package/lib/bs/tests/ExtensionPoint/Products_ExtensionPointMapping_GWT-CatalogPlugin.cmj +0 -0
  127. package/lib/bs/tests/ExtensionPoint/Products_ExtensionPointMapping_GWT-CatalogPlugin.cmt +0 -0
  128. package/lib/bs/tests/ExtensionPoint/Products_ExtensionPointMapping_GWT.ast +0 -0
  129. package/lib/bs/tests/ExtensionPoint/Products_ExtensionPointMapping_GWT.res +31 -0
  130. package/lib/bs/tests/ExtensionPoint/Products_ExtensionPointMapping_GWT.res.mjs +114 -0
  131. package/lib/bs/tests/Product/Aggregate/Product_GWT-CatalogPlugin.cmi +0 -0
  132. package/lib/bs/tests/Product/Aggregate/Product_GWT-CatalogPlugin.cmj +0 -0
  133. package/lib/bs/tests/Product/Aggregate/Product_GWT-CatalogPlugin.cmt +0 -0
  134. package/lib/bs/tests/Product/Aggregate/Product_GWT.ast +0 -0
  135. package/lib/bs/tests/Product/Aggregate/Product_GWT.res +69 -0
  136. package/lib/bs/tests/Product/Aggregate/Product_GWT.res.mjs +166 -0
  137. package/lib/bs/tests/Product/ReadModel/Products_GWT-CatalogPlugin.cmi +0 -0
  138. package/lib/bs/tests/Product/ReadModel/Products_GWT-CatalogPlugin.cmj +0 -0
  139. package/lib/bs/tests/Product/ReadModel/Products_GWT-CatalogPlugin.cmt +0 -0
  140. package/lib/bs/tests/Product/ReadModel/Products_GWT.ast +0 -0
  141. package/lib/bs/tests/Product/ReadModel/Products_GWT.res +27 -0
  142. package/lib/bs/tests/Product/ReadModel/Products_GWT.res.mjs +113 -0
  143. package/lib/bs/tests/ProductDemand/Aggregate/ProductDemand_GWT-CatalogPlugin.cmi +0 -0
  144. package/lib/bs/tests/ProductDemand/Aggregate/ProductDemand_GWT-CatalogPlugin.cmj +0 -0
  145. package/lib/bs/tests/ProductDemand/Aggregate/ProductDemand_GWT-CatalogPlugin.cmt +0 -0
  146. package/lib/bs/tests/ProductDemand/Aggregate/ProductDemand_GWT.ast +0 -0
  147. package/lib/bs/tests/ProductDemand/Aggregate/ProductDemand_GWT.res +39 -0
  148. package/lib/bs/tests/ProductDemand/Aggregate/ProductDemand_GWT.res.mjs +114 -0
  149. package/lib/bs/tests/ProductDemand/ReadModel/ProductDemands_GWT-CatalogPlugin.cmi +0 -0
  150. package/lib/bs/tests/ProductDemand/ReadModel/ProductDemands_GWT-CatalogPlugin.cmj +0 -0
  151. package/lib/bs/tests/ProductDemand/ReadModel/ProductDemands_GWT-CatalogPlugin.cmt +0 -0
  152. package/lib/bs/tests/ProductDemand/ReadModel/ProductDemands_GWT.ast +0 -0
  153. package/lib/bs/tests/ProductDemand/ReadModel/ProductDemands_GWT.res +56 -0
  154. package/lib/bs/tests/ProductDemand/ReadModel/ProductDemands_GWT.res.mjs +73 -0
  155. package/lib/ocaml/.compiler.log +2 -0
  156. package/lib/ocaml/CatalogPlugin.cmi +0 -0
  157. package/lib/ocaml/CatalogPlugin.cmj +0 -0
  158. package/lib/ocaml/CatalogPlugin.cmt +0 -0
  159. package/lib/ocaml/CatalogPlugin.mlmap +25 -0
  160. package/lib/ocaml/Categories-CatalogPlugin.cmi +0 -0
  161. package/lib/ocaml/Categories-CatalogPlugin.cmj +0 -0
  162. package/lib/ocaml/Categories-CatalogPlugin.cmt +0 -0
  163. package/lib/ocaml/Categories.ast +0 -0
  164. package/lib/ocaml/Categories.res +11 -0
  165. package/lib/ocaml/Categories_GWT-CatalogPlugin.cmi +0 -0
  166. package/lib/ocaml/Categories_GWT-CatalogPlugin.cmj +0 -0
  167. package/lib/ocaml/Categories_GWT-CatalogPlugin.cmt +0 -0
  168. package/lib/ocaml/Categories_GWT.ast +0 -0
  169. package/lib/ocaml/Categories_GWT.res +21 -0
  170. package/lib/ocaml/Categories_Projections-CatalogPlugin.cmi +0 -0
  171. package/lib/ocaml/Categories_Projections-CatalogPlugin.cmj +0 -0
  172. package/lib/ocaml/Categories_Projections-CatalogPlugin.cmt +0 -0
  173. package/lib/ocaml/Categories_Projections.ast +0 -0
  174. package/lib/ocaml/Categories_Projections.res +19 -0
  175. package/lib/ocaml/Category-CatalogPlugin.cmi +0 -0
  176. package/lib/ocaml/Category-CatalogPlugin.cmj +0 -0
  177. package/lib/ocaml/Category-CatalogPlugin.cmt +0 -0
  178. package/lib/ocaml/Category.ast +0 -0
  179. package/lib/ocaml/Category.res +22 -0
  180. package/lib/ocaml/Category_Behavior-CatalogPlugin.cmi +0 -0
  181. package/lib/ocaml/Category_Behavior-CatalogPlugin.cmj +0 -0
  182. package/lib/ocaml/Category_Behavior-CatalogPlugin.cmt +0 -0
  183. package/lib/ocaml/Category_Behavior.ast +0 -0
  184. package/lib/ocaml/Category_Behavior.res +36 -0
  185. package/lib/ocaml/Category_GWT-CatalogPlugin.cmi +0 -0
  186. package/lib/ocaml/Category_GWT-CatalogPlugin.cmj +0 -0
  187. package/lib/ocaml/Category_GWT-CatalogPlugin.cmt +0 -0
  188. package/lib/ocaml/Category_GWT.ast +0 -0
  189. package/lib/ocaml/Category_GWT.res +51 -0
  190. package/lib/ocaml/ImportProducts-CatalogPlugin.cmi +0 -0
  191. package/lib/ocaml/ImportProducts-CatalogPlugin.cmj +0 -0
  192. package/lib/ocaml/ImportProducts-CatalogPlugin.cmt +0 -0
  193. package/lib/ocaml/ImportProducts.ast +0 -0
  194. package/lib/ocaml/ImportProducts.res +48 -0
  195. package/lib/ocaml/Orders_Extension-CatalogPlugin.cmi +0 -0
  196. package/lib/ocaml/Orders_Extension-CatalogPlugin.cmj +0 -0
  197. package/lib/ocaml/Orders_Extension-CatalogPlugin.cmt +0 -0
  198. package/lib/ocaml/Orders_Extension.ast +0 -0
  199. package/lib/ocaml/Orders_Extension.res +23 -0
  200. package/lib/ocaml/Orders_Extension_GWT-CatalogPlugin.cmi +0 -0
  201. package/lib/ocaml/Orders_Extension_GWT-CatalogPlugin.cmj +0 -0
  202. package/lib/ocaml/Orders_Extension_GWT-CatalogPlugin.cmt +0 -0
  203. package/lib/ocaml/Orders_Extension_GWT.ast +0 -0
  204. package/lib/ocaml/Orders_Extension_GWT.res +21 -0
  205. package/lib/ocaml/Plugin-CatalogPlugin.cmi +0 -0
  206. package/lib/ocaml/Plugin-CatalogPlugin.cmj +0 -0
  207. package/lib/ocaml/Plugin-CatalogPlugin.cmt +0 -0
  208. package/lib/ocaml/Plugin.ast +0 -0
  209. package/lib/ocaml/Plugin.res +65 -0
  210. package/lib/ocaml/Product-CatalogPlugin.cmi +0 -0
  211. package/lib/ocaml/Product-CatalogPlugin.cmj +0 -0
  212. package/lib/ocaml/Product-CatalogPlugin.cmt +0 -0
  213. package/lib/ocaml/Product.ast +0 -0
  214. package/lib/ocaml/Product.res +23 -0
  215. package/lib/ocaml/ProductDemand-CatalogPlugin.cmi +0 -0
  216. package/lib/ocaml/ProductDemand-CatalogPlugin.cmj +0 -0
  217. package/lib/ocaml/ProductDemand-CatalogPlugin.cmt +0 -0
  218. package/lib/ocaml/ProductDemand.ast +0 -0
  219. package/lib/ocaml/ProductDemand.res +20 -0
  220. package/lib/ocaml/ProductDemand_Behavior-CatalogPlugin.cmi +0 -0
  221. package/lib/ocaml/ProductDemand_Behavior-CatalogPlugin.cmj +0 -0
  222. package/lib/ocaml/ProductDemand_Behavior-CatalogPlugin.cmt +0 -0
  223. package/lib/ocaml/ProductDemand_Behavior.ast +0 -0
  224. package/lib/ocaml/ProductDemand_Behavior.res +39 -0
  225. package/lib/ocaml/ProductDemand_GWT-CatalogPlugin.cmi +0 -0
  226. package/lib/ocaml/ProductDemand_GWT-CatalogPlugin.cmj +0 -0
  227. package/lib/ocaml/ProductDemand_GWT-CatalogPlugin.cmt +0 -0
  228. package/lib/ocaml/ProductDemand_GWT.ast +0 -0
  229. package/lib/ocaml/ProductDemand_GWT.res +39 -0
  230. package/lib/ocaml/ProductDemands-CatalogPlugin.cmi +0 -0
  231. package/lib/ocaml/ProductDemands-CatalogPlugin.cmj +0 -0
  232. package/lib/ocaml/ProductDemands-CatalogPlugin.cmt +0 -0
  233. package/lib/ocaml/ProductDemands.ast +0 -0
  234. package/lib/ocaml/ProductDemands.res +8 -0
  235. package/lib/ocaml/ProductDemands_GWT-CatalogPlugin.cmi +0 -0
  236. package/lib/ocaml/ProductDemands_GWT-CatalogPlugin.cmj +0 -0
  237. package/lib/ocaml/ProductDemands_GWT-CatalogPlugin.cmt +0 -0
  238. package/lib/ocaml/ProductDemands_GWT.ast +0 -0
  239. package/lib/ocaml/ProductDemands_GWT.res +56 -0
  240. package/lib/ocaml/ProductDemands_Projections-CatalogPlugin.cmi +0 -0
  241. package/lib/ocaml/ProductDemands_Projections-CatalogPlugin.cmj +0 -0
  242. package/lib/ocaml/ProductDemands_Projections-CatalogPlugin.cmt +0 -0
  243. package/lib/ocaml/ProductDemands_Projections.ast +0 -0
  244. package/lib/ocaml/ProductDemands_Projections.res +36 -0
  245. package/lib/ocaml/Product_Behavior-CatalogPlugin.cmi +0 -0
  246. package/lib/ocaml/Product_Behavior-CatalogPlugin.cmj +0 -0
  247. package/lib/ocaml/Product_Behavior-CatalogPlugin.cmt +0 -0
  248. package/lib/ocaml/Product_Behavior.ast +0 -0
  249. package/lib/ocaml/Product_Behavior.res +38 -0
  250. package/lib/ocaml/Product_GWT-CatalogPlugin.cmi +0 -0
  251. package/lib/ocaml/Product_GWT-CatalogPlugin.cmj +0 -0
  252. package/lib/ocaml/Product_GWT-CatalogPlugin.cmt +0 -0
  253. package/lib/ocaml/Product_GWT.ast +0 -0
  254. package/lib/ocaml/Product_GWT.res +69 -0
  255. package/lib/ocaml/Products-CatalogPlugin.cmi +0 -0
  256. package/lib/ocaml/Products-CatalogPlugin.cmj +0 -0
  257. package/lib/ocaml/Products-CatalogPlugin.cmt +0 -0
  258. package/lib/ocaml/Products.ast +0 -0
  259. package/lib/ocaml/Products.res +12 -0
  260. package/lib/ocaml/Products_ExtensionPointMapping-CatalogPlugin.cmi +0 -0
  261. package/lib/ocaml/Products_ExtensionPointMapping-CatalogPlugin.cmj +0 -0
  262. package/lib/ocaml/Products_ExtensionPointMapping-CatalogPlugin.cmt +0 -0
  263. package/lib/ocaml/Products_ExtensionPointMapping.ast +0 -0
  264. package/lib/ocaml/Products_ExtensionPointMapping.res +19 -0
  265. package/lib/ocaml/Products_ExtensionPointMapping_GWT-CatalogPlugin.cmi +0 -0
  266. package/lib/ocaml/Products_ExtensionPointMapping_GWT-CatalogPlugin.cmj +0 -0
  267. package/lib/ocaml/Products_ExtensionPointMapping_GWT-CatalogPlugin.cmt +0 -0
  268. package/lib/ocaml/Products_ExtensionPointMapping_GWT.ast +0 -0
  269. package/lib/ocaml/Products_ExtensionPointMapping_GWT.res +31 -0
  270. package/lib/ocaml/Products_GWT-CatalogPlugin.cmi +0 -0
  271. package/lib/ocaml/Products_GWT-CatalogPlugin.cmj +0 -0
  272. package/lib/ocaml/Products_GWT-CatalogPlugin.cmt +0 -0
  273. package/lib/ocaml/Products_GWT.ast +0 -0
  274. package/lib/ocaml/Products_GWT.res +27 -0
  275. package/lib/ocaml/Products_Projections-CatalogPlugin.cmi +0 -0
  276. package/lib/ocaml/Products_Projections-CatalogPlugin.cmj +0 -0
  277. package/lib/ocaml/Products_Projections-CatalogPlugin.cmt +0 -0
  278. package/lib/ocaml/Products_Projections.ast +0 -0
  279. package/lib/ocaml/Products_Projections.res +22 -0
  280. package/package.json +52 -0
  281. package/rescript.json +39 -0
  282. package/src/Category/Aggregate/Category.res +22 -0
  283. package/src/Category/Aggregate/Category.res.mjs +61 -0
  284. package/src/Category/Aggregate/Category_Behavior.res +36 -0
  285. package/src/Category/Aggregate/Category_Behavior.res.mjs +106 -0
  286. package/src/Category/ReadModel/Categories.res +11 -0
  287. package/src/Category/ReadModel/Categories.res.mjs +35 -0
  288. package/src/Category/ReadModel/Categories_Projections.res +19 -0
  289. package/src/Category/ReadModel/Categories_Projections.res.mjs +75 -0
  290. package/src/Extension/Orders_Extension.res +23 -0
  291. package/src/Extension/Orders_Extension.res.mjs +42 -0
  292. package/src/ExtensionPoint/Products_ExtensionPointMapping.res +19 -0
  293. package/src/ExtensionPoint/Products_ExtensionPointMapping.res.mjs +56 -0
  294. package/src/Plugin.res +65 -0
  295. package/src/Plugin.res.mjs +222 -0
  296. package/src/Product/Aggregate/Product.res +23 -0
  297. package/src/Product/Aggregate/Product.res.mjs +71 -0
  298. package/src/Product/Aggregate/Product_Behavior.res +38 -0
  299. package/src/Product/Aggregate/Product_Behavior.res.mjs +150 -0
  300. package/src/Product/ReadModel/Products.res +12 -0
  301. package/src/Product/ReadModel/Products.res.mjs +36 -0
  302. package/src/Product/ReadModel/Products_Projections.res +22 -0
  303. package/src/Product/ReadModel/Products_Projections.res.mjs +91 -0
  304. package/src/ProductDemand/Aggregate/ProductDemand.res +20 -0
  305. package/src/ProductDemand/Aggregate/ProductDemand.res.mjs +51 -0
  306. package/src/ProductDemand/Aggregate/ProductDemand_Behavior.res +39 -0
  307. package/src/ProductDemand/Aggregate/ProductDemand_Behavior.res.mjs +102 -0
  308. package/src/ProductDemand/ReadModel/ProductDemands.res +8 -0
  309. package/src/ProductDemand/ReadModel/ProductDemands.res.mjs +35 -0
  310. package/src/ProductDemand/ReadModel/ProductDemands_Projections.res +36 -0
  311. package/src/ProductDemand/ReadModel/ProductDemands_Projections.res.mjs +99 -0
  312. package/src/Task/ImportProducts.res +48 -0
  313. package/src/Task/ImportProducts.res.mjs +58 -0
  314. package/src/plugin.json +1 -0
  315. package/tests/Category/Aggregate/Category_GWT.res +51 -0
  316. package/tests/Category/Aggregate/Category_GWT.res.mjs +125 -0
  317. package/tests/Category/ReadModel/Categories_GWT.res +21 -0
  318. package/tests/Category/ReadModel/Categories_GWT.res.mjs +88 -0
  319. package/tests/Extension/Orders_Extension_GWT.res +21 -0
  320. package/tests/Extension/Orders_Extension_GWT.res.mjs +105 -0
  321. package/tests/ExtensionPoint/Products_ExtensionPointMapping_GWT.res +31 -0
  322. package/tests/ExtensionPoint/Products_ExtensionPointMapping_GWT.res.mjs +114 -0
  323. package/tests/Product/Aggregate/Product_GWT.res +69 -0
  324. package/tests/Product/Aggregate/Product_GWT.res.mjs +166 -0
  325. package/tests/Product/ReadModel/Products_GWT.res +27 -0
  326. package/tests/Product/ReadModel/Products_GWT.res.mjs +113 -0
  327. package/tests/ProductDemand/Aggregate/ProductDemand_GWT.res +39 -0
  328. package/tests/ProductDemand/Aggregate/ProductDemand_GWT.res.mjs +114 -0
  329. package/tests/ProductDemand/ReadModel/ProductDemands_GWT.res +56 -0
  330. package/tests/ProductDemand/ReadModel/ProductDemands_GWT.res.mjs +73 -0
@@ -0,0 +1,31 @@
1
+ // Boundary GWT for the Products extension point: internal Product aggregate
2
+ // events become the stable public events Ordering subscribes to.
3
+ @@reventless.gwt
4
+
5
+ describe("Products ExtensionPoint mapping", () => {
6
+ test("Added publishes ProductBecameAvailable", () =>
7
+ whenDelegateEvent(
8
+ Delegate.Added({name: "Book", description: "A good book", price: 9.99}),
9
+ )->thenPublishesEvent(
10
+ "gwt-id",
11
+ ExtensionPoint.ProductBecameAvailable({productId: "gwt-id", name: "Book", price: 9.99}),
12
+ )
13
+ )
14
+
15
+ test("PriceUpdated publishes ProductPriceChanged", () =>
16
+ whenDelegateEvent(Delegate.PriceUpdated({price: 7.5}))->thenPublishesEvent(
17
+ "gwt-id",
18
+ ExtensionPoint.ProductPriceChanged({productId: "gwt-id", price: 7.5}),
19
+ )
20
+ )
21
+
22
+ test("NameUpdated publishes nothing", () =>
23
+ whenDelegateEvent(Delegate.NameUpdated({name: "Better Book"}))->thenPublishesNothing
24
+ )
25
+
26
+ test("DescriptionUpdated publishes nothing", () =>
27
+ whenDelegateEvent(
28
+ Delegate.DescriptionUpdated({description: "A really good book"}),
29
+ )->thenPublishesNothing
30
+ )
31
+ })
@@ -0,0 +1,114 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Id$Reventless from "@reventlessdev/reventless-spec/src/types/Id.res.mjs";
4
+ import * as Product$CatalogPlugin from "../../src/Product/Aggregate/Product.res.mjs";
5
+ import * as Delegate_GWT$ReventlessGwt from "@reventlessdev/reventless-gwt/src/Delegate_GWT.res.mjs";
6
+ import * as Products_ExtensionPoint$CatalogSpec from "@reventlessdev/online-shop-aggregates-catalog-spec/src/Products_ExtensionPoint.res.mjs";
7
+ import * as Products_ExtensionPointMapping$CatalogPlugin from "../../src/ExtensionPoint/Products_ExtensionPointMapping.res.mjs";
8
+
9
+ let include = Delegate_GWT$ReventlessGwt.FromExtensionPoint({
10
+ ExtensionPoint: {
11
+ name: Products_ExtensionPoint$CatalogSpec.name,
12
+ moduleUrl: Products_ExtensionPoint$CatalogSpec.moduleUrl,
13
+ commandSchema: Products_ExtensionPoint$CatalogSpec.commandSchema,
14
+ eventSchema: Products_ExtensionPoint$CatalogSpec.eventSchema,
15
+ directiveSchema: Products_ExtensionPoint$CatalogSpec.directiveSchema
16
+ },
17
+ Delegate: {
18
+ Id: Id$Reventless.$$String,
19
+ name: Product$CatalogPlugin.name,
20
+ eventSchema: Product$CatalogPlugin.eventSchema,
21
+ errorSchema: Product$CatalogPlugin.errorSchema,
22
+ commandSchema: Product$CatalogPlugin.commandSchema,
23
+ moduleUrl: Product$CatalogPlugin.moduleUrl,
24
+ commandAuthorization: Product$CatalogPlugin.commandAuthorization
25
+ },
26
+ moduleUrl: Products_ExtensionPointMapping$CatalogPlugin.moduleUrl,
27
+ mapIncomingCommand: Products_ExtensionPointMapping$CatalogPlugin.mapIncomingCommand,
28
+ mapOutgoingEvent: Products_ExtensionPointMapping$CatalogPlugin.mapOutgoingEvent
29
+ });
30
+
31
+ let describe = include.describe;
32
+
33
+ let test = include.test;
34
+
35
+ let thenPublishesNothing = include.thenPublishesNothing;
36
+
37
+ let whenDelegateEvent = include.whenDelegateEvent;
38
+
39
+ let thenPublishesEvent = include.thenPublishesEvent;
40
+
41
+ describe("Products ExtensionPoint mapping", () => {
42
+ test("Added publishes ProductBecameAvailable", undefined, () => thenPublishesEvent(whenDelegateEvent({
43
+ TAG: "Added",
44
+ name: "Book",
45
+ description: "A good book",
46
+ price: 9.99
47
+ }), "gwt-id", {
48
+ TAG: "ProductBecameAvailable",
49
+ productId: "gwt-id",
50
+ name: "Book",
51
+ price: 9.99
52
+ }));
53
+ test("PriceUpdated publishes ProductPriceChanged", undefined, () => thenPublishesEvent(whenDelegateEvent({
54
+ TAG: "PriceUpdated",
55
+ price: 7.5
56
+ }), "gwt-id", {
57
+ TAG: "ProductPriceChanged",
58
+ productId: "gwt-id",
59
+ price: 7.5
60
+ }));
61
+ test("NameUpdated publishes nothing", undefined, () => thenPublishesNothing(whenDelegateEvent({
62
+ TAG: "NameUpdated",
63
+ name: "Better Book"
64
+ })));
65
+ test("DescriptionUpdated publishes nothing", undefined, () => thenPublishesNothing(whenDelegateEvent({
66
+ TAG: "DescriptionUpdated",
67
+ description: "A really good book"
68
+ })));
69
+ });
70
+
71
+ let encEvent = include.encEvent;
72
+
73
+ let encCommand = include.encCommand;
74
+
75
+ let encDirective = include.encDirective;
76
+
77
+ let EvCore = include.EvCore;
78
+
79
+ let CmdCore = include.CmdCore;
80
+
81
+ let thenPublishesEvents = include.thenPublishesEvents;
82
+
83
+ let whenIncomingCommand = include.whenIncomingCommand;
84
+
85
+ let thenPublishesCommand = include.thenPublishesCommand;
86
+
87
+ let thenPublishesCommands = include.thenPublishesCommands;
88
+
89
+ let thenHandlesDirective = include.thenHandlesDirective;
90
+
91
+ let thenHandlesDirectives = include.thenHandlesDirectives;
92
+
93
+ let thenHandlesNoDirective = include.thenHandlesNoDirective;
94
+
95
+ export {
96
+ encEvent,
97
+ encCommand,
98
+ encDirective,
99
+ EvCore,
100
+ CmdCore,
101
+ describe,
102
+ test,
103
+ thenPublishesNothing,
104
+ whenDelegateEvent,
105
+ thenPublishesEvent,
106
+ thenPublishesEvents,
107
+ whenIncomingCommand,
108
+ thenPublishesCommand,
109
+ thenPublishesCommands,
110
+ thenHandlesDirective,
111
+ thenHandlesDirectives,
112
+ thenHandlesNoDirective,
113
+ }
114
+ /* include Not a pure module */
@@ -0,0 +1,69 @@
1
+ @@reventless.gwt
2
+
3
+ describe("Product Behavior", () => {
4
+ test("Add on new aggregate produces Added", () =>
5
+ givenEvents([])
6
+ ->whenCmd(Add({name: "Laptop", description: "A laptop", price: 999.99}))
7
+ ->thenEvent(Added({name: "Laptop", description: "A laptop", price: 999.99}))
8
+ )
9
+
10
+ test("Add on existing aggregate returns ProductAlreadyExists", () =>
11
+ givenEvents([Added({name: "Laptop", description: "A laptop", price: 999.99})])
12
+ ->whenCmd(Add({name: "Laptop 2", description: "Another", price: 1.0}))
13
+ ->thenError(ProductAlreadyExists)
14
+ )
15
+
16
+ test("UpdateName on non-existent aggregate returns ProductNotFound", () =>
17
+ givenEvents([])
18
+ ->whenCmd(UpdateName({name: "New Name"}))
19
+ ->thenError(ProductNotFound)
20
+ )
21
+
22
+ test("UpdateName on existing product produces NameUpdated", () =>
23
+ givenEvents([Added({name: "Laptop", description: "A laptop", price: 999.99})])
24
+ ->whenCmd(UpdateName({name: "Gaming Laptop"}))
25
+ ->thenEvent(NameUpdated({name: "Gaming Laptop"}))
26
+ )
27
+
28
+ test("UpdateName to same name produces no events (idempotent)", () =>
29
+ givenEvents([Added({name: "Laptop", description: "A laptop", price: 999.99})])
30
+ ->whenCmd(UpdateName({name: "Laptop"}))
31
+ ->thenNoEvent
32
+ )
33
+
34
+ test("UpdateDescription on non-existent aggregate returns ProductNotFound", () =>
35
+ givenEvents([])
36
+ ->whenCmd(UpdateDescription({description: "x"}))
37
+ ->thenError(ProductNotFound)
38
+ )
39
+
40
+ test("UpdateDescription on existing product produces DescriptionUpdated", () =>
41
+ givenEvents([Added({name: "Laptop", description: "A laptop", price: 999.99})])
42
+ ->whenCmd(UpdateDescription({description: "A high-end laptop"}))
43
+ ->thenEvent(DescriptionUpdated({description: "A high-end laptop"}))
44
+ )
45
+
46
+ test("UpdateDescription to same description produces no events (idempotent)", () =>
47
+ givenEvents([Added({name: "Laptop", description: "A laptop", price: 999.99})])
48
+ ->whenCmd(UpdateDescription({description: "A laptop"}))
49
+ ->thenNoEvent
50
+ )
51
+
52
+ test("UpdatePrice on non-existent aggregate returns ProductNotFound", () =>
53
+ givenEvents([])
54
+ ->whenCmd(UpdatePrice({price: 1.0}))
55
+ ->thenError(ProductNotFound)
56
+ )
57
+
58
+ test("UpdatePrice on existing product produces PriceUpdated", () =>
59
+ givenEvents([Added({name: "Laptop", description: "A laptop", price: 999.99})])
60
+ ->whenCmd(UpdatePrice({price: 899.99}))
61
+ ->thenEvent(PriceUpdated({price: 899.99}))
62
+ )
63
+
64
+ test("UpdatePrice to same price produces no events (idempotent)", () =>
65
+ givenEvents([Added({name: "Laptop", description: "A laptop", price: 999.99})])
66
+ ->whenCmd(UpdatePrice({price: 999.99}))
67
+ ->thenNoEvent
68
+ )
69
+ })
@@ -0,0 +1,166 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Product$CatalogPlugin from "../../../src/Product/Aggregate/Product.res.mjs";
4
+ import * as Behavior_GWT$ReventlessGwt from "@reventlessdev/reventless-gwt/src/Behavior_GWT.res.mjs";
5
+ import * as Product_Behavior$CatalogPlugin from "../../../src/Product/Aggregate/Product_Behavior.res.mjs";
6
+
7
+ let include = Behavior_GWT$ReventlessGwt.MakeFromAggregate({
8
+ name: Product$CatalogPlugin.name,
9
+ commandSchema: Product$CatalogPlugin.commandSchema,
10
+ eventSchema: Product$CatalogPlugin.eventSchema,
11
+ errorSchema: Product$CatalogPlugin.errorSchema
12
+ })({
13
+ Spec: {
14
+ name: Product$CatalogPlugin.name,
15
+ commandSchema: Product$CatalogPlugin.commandSchema,
16
+ eventSchema: Product$CatalogPlugin.eventSchema,
17
+ errorSchema: Product$CatalogPlugin.errorSchema
18
+ },
19
+ initialState: Product_Behavior$CatalogPlugin.initialState,
20
+ evolve: Product_Behavior$CatalogPlugin.evolve,
21
+ decide: Product_Behavior$CatalogPlugin.decide,
22
+ moduleUrl: Product_Behavior$CatalogPlugin.moduleUrl
23
+ });
24
+
25
+ let describe = include.describe;
26
+
27
+ let test = include.test;
28
+
29
+ let givenEvents = include.givenEvents;
30
+
31
+ let whenCmd = include.whenCmd;
32
+
33
+ let thenEvent = include.thenEvent;
34
+
35
+ let thenNoEvent = include.thenNoEvent;
36
+
37
+ let thenError = include.thenError;
38
+
39
+ describe("Product Behavior", () => {
40
+ test("Add on new aggregate produces Added", () => thenEvent(whenCmd(givenEvents([]), {
41
+ TAG: "Add",
42
+ name: "Laptop",
43
+ description: "A laptop",
44
+ price: 999.99
45
+ }), {
46
+ TAG: "Added",
47
+ name: "Laptop",
48
+ description: "A laptop",
49
+ price: 999.99
50
+ }));
51
+ test("Add on existing aggregate returns ProductAlreadyExists", () => thenError(whenCmd(givenEvents([{
52
+ TAG: "Added",
53
+ name: "Laptop",
54
+ description: "A laptop",
55
+ price: 999.99
56
+ }]), {
57
+ TAG: "Add",
58
+ name: "Laptop 2",
59
+ description: "Another",
60
+ price: 1.0
61
+ }), "ProductAlreadyExists"));
62
+ test("UpdateName on non-existent aggregate returns ProductNotFound", () => thenError(whenCmd(givenEvents([]), {
63
+ TAG: "UpdateName",
64
+ name: "New Name"
65
+ }), "ProductNotFound"));
66
+ test("UpdateName on existing product produces NameUpdated", () => thenEvent(whenCmd(givenEvents([{
67
+ TAG: "Added",
68
+ name: "Laptop",
69
+ description: "A laptop",
70
+ price: 999.99
71
+ }]), {
72
+ TAG: "UpdateName",
73
+ name: "Gaming Laptop"
74
+ }), {
75
+ TAG: "NameUpdated",
76
+ name: "Gaming Laptop"
77
+ }));
78
+ test("UpdateName to same name produces no events (idempotent)", () => thenNoEvent(whenCmd(givenEvents([{
79
+ TAG: "Added",
80
+ name: "Laptop",
81
+ description: "A laptop",
82
+ price: 999.99
83
+ }]), {
84
+ TAG: "UpdateName",
85
+ name: "Laptop"
86
+ })));
87
+ test("UpdateDescription on non-existent aggregate returns ProductNotFound", () => thenError(whenCmd(givenEvents([]), {
88
+ TAG: "UpdateDescription",
89
+ description: "x"
90
+ }), "ProductNotFound"));
91
+ test("UpdateDescription on existing product produces DescriptionUpdated", () => thenEvent(whenCmd(givenEvents([{
92
+ TAG: "Added",
93
+ name: "Laptop",
94
+ description: "A laptop",
95
+ price: 999.99
96
+ }]), {
97
+ TAG: "UpdateDescription",
98
+ description: "A high-end laptop"
99
+ }), {
100
+ TAG: "DescriptionUpdated",
101
+ description: "A high-end laptop"
102
+ }));
103
+ test("UpdateDescription to same description produces no events (idempotent)", () => thenNoEvent(whenCmd(givenEvents([{
104
+ TAG: "Added",
105
+ name: "Laptop",
106
+ description: "A laptop",
107
+ price: 999.99
108
+ }]), {
109
+ TAG: "UpdateDescription",
110
+ description: "A laptop"
111
+ })));
112
+ test("UpdatePrice on non-existent aggregate returns ProductNotFound", () => thenError(whenCmd(givenEvents([]), {
113
+ TAG: "UpdatePrice",
114
+ price: 1.0
115
+ }), "ProductNotFound"));
116
+ test("UpdatePrice on existing product produces PriceUpdated", () => thenEvent(whenCmd(givenEvents([{
117
+ TAG: "Added",
118
+ name: "Laptop",
119
+ description: "A laptop",
120
+ price: 999.99
121
+ }]), {
122
+ TAG: "UpdatePrice",
123
+ price: 899.99
124
+ }), {
125
+ TAG: "PriceUpdated",
126
+ price: 899.99
127
+ }));
128
+ test("UpdatePrice to same price produces no events (idempotent)", () => thenNoEvent(whenCmd(givenEvents([{
129
+ TAG: "Added",
130
+ name: "Laptop",
131
+ description: "A laptop",
132
+ price: 999.99
133
+ }]), {
134
+ TAG: "UpdatePrice",
135
+ price: 999.99
136
+ })));
137
+ });
138
+
139
+ let Spec = include.Spec;
140
+
141
+ let thenCompareEvent = include.thenCompareEvent;
142
+
143
+ let thenEventWithError = include.thenEventWithError;
144
+
145
+ let thenEvents = include.thenEvents;
146
+
147
+ let thenCompareEvents = include.thenCompareEvents;
148
+
149
+ let thenEventsWithError = include.thenEventsWithError;
150
+
151
+ export {
152
+ Spec,
153
+ describe,
154
+ test,
155
+ givenEvents,
156
+ whenCmd,
157
+ thenEvent,
158
+ thenCompareEvent,
159
+ thenNoEvent,
160
+ thenEventWithError,
161
+ thenEvents,
162
+ thenCompareEvents,
163
+ thenEventsWithError,
164
+ thenError,
165
+ }
166
+ /* include Not a pure module */
@@ -0,0 +1,27 @@
1
+ @@reventless.gwt(Products_Projections.ProductMapping)
2
+
3
+ describe("Products ReadModel ← Product", () => {
4
+ test("Added sets initial read model state", () =>
5
+ givenEvents([])
6
+ ->whenEvent(Product.Added({name: "Laptop", description: "A laptop", price: 999.99}))
7
+ ->thenState({Products.name: "Laptop", description: "A laptop", price: 999.99})
8
+ )
9
+
10
+ test("NameUpdated updates the name", () =>
11
+ givenEvents([Product.Added({name: "Laptop", description: "A laptop", price: 999.99})])
12
+ ->whenEvent(Product.NameUpdated({name: "Gaming Laptop"}))
13
+ ->thenState({Products.name: "Gaming Laptop", description: "A laptop", price: 999.99})
14
+ )
15
+
16
+ test("DescriptionUpdated updates the description", () =>
17
+ givenEvents([Product.Added({name: "Laptop", description: "A laptop", price: 999.99})])
18
+ ->whenEvent(Product.DescriptionUpdated({description: "A high-end laptop"}))
19
+ ->thenState({Products.name: "Laptop", description: "A high-end laptop", price: 999.99})
20
+ )
21
+
22
+ test("PriceUpdated updates the price", () =>
23
+ givenEvents([Product.Added({name: "Laptop", description: "A laptop", price: 999.99})])
24
+ ->whenEvent(Product.PriceUpdated({price: 899.99}))
25
+ ->thenState({Products.name: "Laptop", description: "A laptop", price: 899.99})
26
+ )
27
+ })
@@ -0,0 +1,113 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Products_Projections$CatalogPlugin from "../../../src/Product/ReadModel/Products_Projections.res.mjs";
4
+ import * as MultiSourceProjection_GWT$ReventlessGwt from "@reventlessdev/reventless-gwt/src/MultiSourceProjection_GWT.res.mjs";
5
+
6
+ let include = MultiSourceProjection_GWT$ReventlessGwt.Make(Products_Projections$CatalogPlugin.ProductMapping);
7
+
8
+ let describe = include.describe;
9
+
10
+ let test = include.test;
11
+
12
+ let givenEvents = include.givenEvents;
13
+
14
+ let whenEvent = include.whenEvent;
15
+
16
+ let thenState = include.thenState;
17
+
18
+ describe("Products ReadModel ← Product", () => {
19
+ test("Added sets initial read model state", undefined, () => thenState(whenEvent(givenEvents([]), {
20
+ TAG: "Added",
21
+ name: "Laptop",
22
+ description: "A laptop",
23
+ price: 999.99
24
+ }), {
25
+ name: "Laptop",
26
+ description: "A laptop",
27
+ price: 999.99
28
+ }));
29
+ test("NameUpdated updates the name", undefined, () => thenState(whenEvent(givenEvents([{
30
+ TAG: "Added",
31
+ name: "Laptop",
32
+ description: "A laptop",
33
+ price: 999.99
34
+ }]), {
35
+ TAG: "NameUpdated",
36
+ name: "Gaming Laptop"
37
+ }), {
38
+ name: "Gaming Laptop",
39
+ description: "A laptop",
40
+ price: 999.99
41
+ }));
42
+ test("DescriptionUpdated updates the description", undefined, () => thenState(whenEvent(givenEvents([{
43
+ TAG: "Added",
44
+ name: "Laptop",
45
+ description: "A laptop",
46
+ price: 999.99
47
+ }]), {
48
+ TAG: "DescriptionUpdated",
49
+ description: "A high-end laptop"
50
+ }), {
51
+ name: "Laptop",
52
+ description: "A high-end laptop",
53
+ price: 999.99
54
+ }));
55
+ test("PriceUpdated updates the price", undefined, () => thenState(whenEvent(givenEvents([{
56
+ TAG: "Added",
57
+ name: "Laptop",
58
+ description: "A laptop",
59
+ price: 999.99
60
+ }]), {
61
+ TAG: "PriceUpdated",
62
+ price: 899.99
63
+ }), {
64
+ name: "Laptop",
65
+ description: "A laptop",
66
+ price: 899.99
67
+ }));
68
+ });
69
+
70
+ let describeWithId = include.describeWithId;
71
+
72
+ let givenEventsWithTime = include.givenEventsWithTime;
73
+
74
+ let whenEvents = include.whenEvents;
75
+
76
+ let whenEventWithTime = include.whenEventWithTime;
77
+
78
+ let whenEventsWithTime = include.whenEventsWithTime;
79
+
80
+ let thenStates = include.thenStates;
81
+
82
+ let thenStatesWithId = include.thenStatesWithId;
83
+
84
+ let thenAllStates = include.thenAllStates;
85
+
86
+ let thenStateWithId = include.thenStateWithId;
87
+
88
+ let thenNoState = include.thenNoState;
89
+
90
+ let thenThrow = include.thenThrow;
91
+
92
+ let thenFail = include.thenFail;
93
+
94
+ export {
95
+ describe,
96
+ describeWithId,
97
+ test,
98
+ givenEvents,
99
+ givenEventsWithTime,
100
+ whenEvent,
101
+ whenEvents,
102
+ whenEventWithTime,
103
+ whenEventsWithTime,
104
+ thenStates,
105
+ thenStatesWithId,
106
+ thenAllStates,
107
+ thenState,
108
+ thenStateWithId,
109
+ thenNoState,
110
+ thenThrow,
111
+ thenFail,
112
+ }
113
+ /* include Not a pure module */
@@ -0,0 +1,39 @@
1
+ @@reventless.gwt
2
+
3
+ describe("ProductDemand Behavior", () => {
4
+ test("Record on new aggregate produces Recorded", () =>
5
+ givenEvents([])
6
+ ->whenCmd(Record({orderId: "order-1"}))
7
+ ->thenEvent(Recorded({orderId: "order-1"}))
8
+ )
9
+
10
+ test("Record with new orderId on existing aggregate produces Recorded", () =>
11
+ givenEvents([Recorded({orderId: "order-1"})])
12
+ ->whenCmd(Record({orderId: "order-2"}))
13
+ ->thenEvent(Recorded({orderId: "order-2"}))
14
+ )
15
+
16
+ test("Record with already-recorded orderId produces no events (idempotent)", () =>
17
+ givenEvents([Recorded({orderId: "order-1"})])
18
+ ->whenCmd(Record({orderId: "order-1"}))
19
+ ->thenNoEvent
20
+ )
21
+
22
+ test("Revoke on never-recorded aggregate produces no events (idempotent)", () =>
23
+ givenEvents([])
24
+ ->whenCmd(Revoke({orderId: "order-1"}))
25
+ ->thenNoEvent
26
+ )
27
+
28
+ test("Revoke of unrecorded orderId on existing aggregate produces no events (idempotent)", () =>
29
+ givenEvents([Recorded({orderId: "order-1"})])
30
+ ->whenCmd(Revoke({orderId: "order-2"}))
31
+ ->thenNoEvent
32
+ )
33
+
34
+ test("Revoke of recorded orderId produces Revoked", () =>
35
+ givenEvents([Recorded({orderId: "order-1"})])
36
+ ->whenCmd(Revoke({orderId: "order-1"}))
37
+ ->thenEvent(Revoked({orderId: "order-1"}))
38
+ )
39
+ })