@open-mercato/core 0.4.5-develop-2e9903a57a → 0.4.5-develop-eeccf7adf4

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 (473) hide show
  1. package/package.json +2 -2
  2. package/dist/modules/auth/__integration__/TC-AUTH-001.spec.js +0 -9
  3. package/dist/modules/auth/__integration__/TC-AUTH-001.spec.js.map +0 -7
  4. package/dist/modules/auth/__integration__/TC-AUTH-002.spec.js +0 -22
  5. package/dist/modules/auth/__integration__/TC-AUTH-002.spec.js.map +0 -7
  6. package/dist/modules/auth/__integration__/TC-AUTH-003.spec.js +0 -21
  7. package/dist/modules/auth/__integration__/TC-AUTH-003.spec.js.map +0 -7
  8. package/dist/modules/auth/__integration__/TC-AUTH-004.spec.js +0 -15
  9. package/dist/modules/auth/__integration__/TC-AUTH-004.spec.js.map +0 -7
  10. package/dist/modules/auth/__integration__/TC-AUTH-005.spec.js +0 -11
  11. package/dist/modules/auth/__integration__/TC-AUTH-005.spec.js.map +0 -7
  12. package/dist/modules/auth/__integration__/TC-AUTH-006.spec.js +0 -11
  13. package/dist/modules/auth/__integration__/TC-AUTH-006.spec.js.map +0 -7
  14. package/dist/modules/auth/__integration__/TC-AUTH-007.spec.js +0 -14
  15. package/dist/modules/auth/__integration__/TC-AUTH-007.spec.js.map +0 -7
  16. package/dist/modules/auth/__integration__/TC-AUTH-008.spec.js +0 -26
  17. package/dist/modules/auth/__integration__/TC-AUTH-008.spec.js.map +0 -7
  18. package/dist/modules/auth/__integration__/TC-AUTH-009.spec.js +0 -16
  19. package/dist/modules/auth/__integration__/TC-AUTH-009.spec.js.map +0 -7
  20. package/dist/modules/auth/__integration__/TC-AUTH-010.spec.js +0 -32
  21. package/dist/modules/auth/__integration__/TC-AUTH-010.spec.js.map +0 -7
  22. package/dist/modules/auth/__integration__/TC-AUTH-011.spec.js +0 -26
  23. package/dist/modules/auth/__integration__/TC-AUTH-011.spec.js.map +0 -7
  24. package/dist/modules/auth/__integration__/TC-AUTH-012.spec.js +0 -30
  25. package/dist/modules/auth/__integration__/TC-AUTH-012.spec.js.map +0 -7
  26. package/dist/modules/auth/__integration__/TC-AUTH-013.spec.js +0 -41
  27. package/dist/modules/auth/__integration__/TC-AUTH-013.spec.js.map +0 -7
  28. package/dist/modules/auth/__integration__/TC-AUTH-014.spec.js +0 -25
  29. package/dist/modules/auth/__integration__/TC-AUTH-014.spec.js.map +0 -7
  30. package/dist/modules/auth/__integration__/TC-AUTH-015.spec.js +0 -20
  31. package/dist/modules/auth/__integration__/TC-AUTH-015.spec.js.map +0 -7
  32. package/dist/modules/auth/__integration__/TC-AUTH-016.spec.js +0 -76
  33. package/dist/modules/auth/__integration__/TC-AUTH-016.spec.js.map +0 -7
  34. package/dist/modules/catalog/__integration__/TC-CAT-001.spec.js +0 -20
  35. package/dist/modules/catalog/__integration__/TC-CAT-001.spec.js.map +0 -7
  36. package/dist/modules/catalog/__integration__/TC-CAT-002.spec.js +0 -12
  37. package/dist/modules/catalog/__integration__/TC-CAT-002.spec.js.map +0 -7
  38. package/dist/modules/catalog/__integration__/TC-CAT-003.spec.js +0 -28
  39. package/dist/modules/catalog/__integration__/TC-CAT-003.spec.js.map +0 -7
  40. package/dist/modules/catalog/__integration__/TC-CAT-004.spec.js +0 -33
  41. package/dist/modules/catalog/__integration__/TC-CAT-004.spec.js.map +0 -7
  42. package/dist/modules/catalog/__integration__/TC-CAT-005.spec.js +0 -30
  43. package/dist/modules/catalog/__integration__/TC-CAT-005.spec.js.map +0 -7
  44. package/dist/modules/catalog/__integration__/TC-CAT-006.spec.js +0 -31
  45. package/dist/modules/catalog/__integration__/TC-CAT-006.spec.js.map +0 -7
  46. package/dist/modules/catalog/__integration__/TC-CAT-007.spec.js +0 -31
  47. package/dist/modules/catalog/__integration__/TC-CAT-007.spec.js.map +0 -7
  48. package/dist/modules/catalog/__integration__/TC-CAT-008.spec.js +0 -65
  49. package/dist/modules/catalog/__integration__/TC-CAT-008.spec.js.map +0 -7
  50. package/dist/modules/catalog/__integration__/TC-CAT-009.spec.js +0 -31
  51. package/dist/modules/catalog/__integration__/TC-CAT-009.spec.js.map +0 -7
  52. package/dist/modules/catalog/__integration__/TC-CAT-010.spec.js +0 -28
  53. package/dist/modules/catalog/__integration__/TC-CAT-010.spec.js.map +0 -7
  54. package/dist/modules/catalog/__integration__/TC-CAT-011.spec.js +0 -34
  55. package/dist/modules/catalog/__integration__/TC-CAT-011.spec.js.map +0 -7
  56. package/dist/modules/catalog/__integration__/TC-CAT-012.spec.js +0 -27
  57. package/dist/modules/catalog/__integration__/TC-CAT-012.spec.js.map +0 -7
  58. package/dist/modules/core/__integration__/admin/TC-ADMIN-001.spec.js +0 -44
  59. package/dist/modules/core/__integration__/admin/TC-ADMIN-001.spec.js.map +0 -7
  60. package/dist/modules/core/__integration__/admin/TC-ADMIN-002.spec.js +0 -53
  61. package/dist/modules/core/__integration__/admin/TC-ADMIN-002.spec.js.map +0 -7
  62. package/dist/modules/core/__integration__/admin/TC-ADMIN-003.spec.js +0 -26
  63. package/dist/modules/core/__integration__/admin/TC-ADMIN-003.spec.js.map +0 -7
  64. package/dist/modules/core/__integration__/admin/TC-ADMIN-004.spec.js +0 -47
  65. package/dist/modules/core/__integration__/admin/TC-ADMIN-004.spec.js.map +0 -7
  66. package/dist/modules/core/__integration__/admin/TC-ADMIN-005.spec.js +0 -33
  67. package/dist/modules/core/__integration__/admin/TC-ADMIN-005.spec.js.map +0 -7
  68. package/dist/modules/core/__integration__/admin/TC-ADMIN-006.spec.js +0 -30
  69. package/dist/modules/core/__integration__/admin/TC-ADMIN-006.spec.js.map +0 -7
  70. package/dist/modules/core/__integration__/admin/TC-ADMIN-007.spec.js +0 -36
  71. package/dist/modules/core/__integration__/admin/TC-ADMIN-007.spec.js.map +0 -7
  72. package/dist/modules/core/__integration__/admin/TC-ADMIN-008.spec.js +0 -113
  73. package/dist/modules/core/__integration__/admin/TC-ADMIN-008.spec.js.map +0 -7
  74. package/dist/modules/core/__integration__/admin/TC-ADMIN-009.spec.js +0 -25
  75. package/dist/modules/core/__integration__/admin/TC-ADMIN-009.spec.js.map +0 -7
  76. package/dist/modules/core/__integration__/admin/TC-ADMIN-010.spec.js +0 -35
  77. package/dist/modules/core/__integration__/admin/TC-ADMIN-010.spec.js.map +0 -7
  78. package/dist/modules/core/__integration__/helpers/api.js +0 -64
  79. package/dist/modules/core/__integration__/helpers/api.js.map +0 -7
  80. package/dist/modules/core/__integration__/helpers/auth.js +0 -98
  81. package/dist/modules/core/__integration__/helpers/auth.js.map +0 -7
  82. package/dist/modules/core/__integration__/helpers/authUi.js +0 -31
  83. package/dist/modules/core/__integration__/helpers/authUi.js.map +0 -7
  84. package/dist/modules/core/__integration__/helpers/catalogFixtures.js +0 -49
  85. package/dist/modules/core/__integration__/helpers/catalogFixtures.js.map +0 -7
  86. package/dist/modules/core/__integration__/helpers/crmFixtures.js +0 -73
  87. package/dist/modules/core/__integration__/helpers/crmFixtures.js.map +0 -7
  88. package/dist/modules/core/__integration__/helpers/salesFixtures.js +0 -63
  89. package/dist/modules/core/__integration__/helpers/salesFixtures.js.map +0 -7
  90. package/dist/modules/core/__integration__/helpers/salesUi.js +0 -464
  91. package/dist/modules/core/__integration__/helpers/salesUi.js.map +0 -7
  92. package/dist/modules/core/__integration__/integration/TC-INT-001.spec.js +0 -26
  93. package/dist/modules/core/__integration__/integration/TC-INT-001.spec.js.map +0 -7
  94. package/dist/modules/core/__integration__/integration/TC-INT-002.spec.js +0 -60
  95. package/dist/modules/core/__integration__/integration/TC-INT-002.spec.js.map +0 -7
  96. package/dist/modules/core/__integration__/integration/TC-INT-003.spec.js +0 -36
  97. package/dist/modules/core/__integration__/integration/TC-INT-003.spec.js.map +0 -7
  98. package/dist/modules/core/__integration__/integration/TC-INT-004.spec.js +0 -74
  99. package/dist/modules/core/__integration__/integration/TC-INT-004.spec.js.map +0 -7
  100. package/dist/modules/core/__integration__/integration/TC-INT-005.spec.js +0 -21
  101. package/dist/modules/core/__integration__/integration/TC-INT-005.spec.js.map +0 -7
  102. package/dist/modules/customers/__integration__/TC-CRM-001.spec.js +0 -32
  103. package/dist/modules/customers/__integration__/TC-CRM-001.spec.js.map +0 -7
  104. package/dist/modules/customers/__integration__/TC-CRM-002.spec.js +0 -35
  105. package/dist/modules/customers/__integration__/TC-CRM-002.spec.js.map +0 -7
  106. package/dist/modules/customers/__integration__/TC-CRM-003.spec.js +0 -40
  107. package/dist/modules/customers/__integration__/TC-CRM-003.spec.js.map +0 -7
  108. package/dist/modules/customers/__integration__/TC-CRM-004.spec.js +0 -40
  109. package/dist/modules/customers/__integration__/TC-CRM-004.spec.js.map +0 -7
  110. package/dist/modules/customers/__integration__/TC-CRM-005.spec.js +0 -37
  111. package/dist/modules/customers/__integration__/TC-CRM-005.spec.js.map +0 -7
  112. package/dist/modules/customers/__integration__/TC-CRM-006.spec.js +0 -42
  113. package/dist/modules/customers/__integration__/TC-CRM-006.spec.js.map +0 -7
  114. package/dist/modules/customers/__integration__/TC-CRM-007.spec.js +0 -44
  115. package/dist/modules/customers/__integration__/TC-CRM-007.spec.js.map +0 -7
  116. package/dist/modules/customers/__integration__/TC-CRM-008.spec.js +0 -50
  117. package/dist/modules/customers/__integration__/TC-CRM-008.spec.js.map +0 -7
  118. package/dist/modules/customers/__integration__/TC-CRM-009.spec.js +0 -33
  119. package/dist/modules/customers/__integration__/TC-CRM-009.spec.js.map +0 -7
  120. package/dist/modules/customers/__integration__/TC-CRM-010.spec.js +0 -39
  121. package/dist/modules/customers/__integration__/TC-CRM-010.spec.js.map +0 -7
  122. package/dist/modules/customers/__integration__/TC-CRM-011.spec.js +0 -37
  123. package/dist/modules/customers/__integration__/TC-CRM-011.spec.js.map +0 -7
  124. package/dist/modules/customers/__integration__/TC-CRM-012.spec.js +0 -38
  125. package/dist/modules/customers/__integration__/TC-CRM-012.spec.js.map +0 -7
  126. package/dist/modules/customers/__integration__/TC-CRM-013.spec.js +0 -43
  127. package/dist/modules/customers/__integration__/TC-CRM-013.spec.js.map +0 -7
  128. package/dist/modules/customers/__integration__/TC-CRM-014.spec.js +0 -23
  129. package/dist/modules/customers/__integration__/TC-CRM-014.spec.js.map +0 -7
  130. package/dist/modules/customers/__integration__/TC-CRM-015.spec.js +0 -63
  131. package/dist/modules/customers/__integration__/TC-CRM-015.spec.js.map +0 -7
  132. package/dist/modules/customers/__integration__/TC-CRM-016.spec.js +0 -46
  133. package/dist/modules/customers/__integration__/TC-CRM-016.spec.js.map +0 -7
  134. package/dist/modules/customers/__integration__/TC-CRM-017.spec.js +0 -29
  135. package/dist/modules/customers/__integration__/TC-CRM-017.spec.js.map +0 -7
  136. package/dist/modules/customers/__integration__/TC-CRM-018.spec.js +0 -52
  137. package/dist/modules/customers/__integration__/TC-CRM-018.spec.js.map +0 -7
  138. package/dist/modules/customers/__integration__/TC-CRM-019.spec.js +0 -37
  139. package/dist/modules/customers/__integration__/TC-CRM-019.spec.js.map +0 -7
  140. package/dist/modules/customers/__integration__/TC-CRM-020.spec.js +0 -65
  141. package/dist/modules/customers/__integration__/TC-CRM-020.spec.js.map +0 -7
  142. package/dist/modules/progress/__integration__/TC-PROG-001.spec.js +0 -51
  143. package/dist/modules/progress/__integration__/TC-PROG-001.spec.js.map +0 -7
  144. package/dist/modules/resources/__integration__/TC-INT-007.spec.js +0 -88
  145. package/dist/modules/resources/__integration__/TC-INT-007.spec.js.map +0 -7
  146. package/dist/modules/resources/__integration__/helpers/resourcesFixtures.js +0 -45
  147. package/dist/modules/resources/__integration__/helpers/resourcesFixtures.js.map +0 -7
  148. package/dist/modules/sales/__integration__/TC-SALES-001.spec.js +0 -20
  149. package/dist/modules/sales/__integration__/TC-SALES-001.spec.js.map +0 -7
  150. package/dist/modules/sales/__integration__/TC-SALES-002.spec.js +0 -31
  151. package/dist/modules/sales/__integration__/TC-SALES-002.spec.js.map +0 -7
  152. package/dist/modules/sales/__integration__/TC-SALES-003.spec.js +0 -13
  153. package/dist/modules/sales/__integration__/TC-SALES-003.spec.js.map +0 -7
  154. package/dist/modules/sales/__integration__/TC-SALES-004.spec.js +0 -14
  155. package/dist/modules/sales/__integration__/TC-SALES-004.spec.js.map +0 -7
  156. package/dist/modules/sales/__integration__/TC-SALES-005.spec.js +0 -15
  157. package/dist/modules/sales/__integration__/TC-SALES-005.spec.js.map +0 -7
  158. package/dist/modules/sales/__integration__/TC-SALES-006.spec.js +0 -20
  159. package/dist/modules/sales/__integration__/TC-SALES-006.spec.js.map +0 -7
  160. package/dist/modules/sales/__integration__/TC-SALES-007.spec.js +0 -19
  161. package/dist/modules/sales/__integration__/TC-SALES-007.spec.js.map +0 -7
  162. package/dist/modules/sales/__integration__/TC-SALES-008.spec.js +0 -7
  163. package/dist/modules/sales/__integration__/TC-SALES-008.spec.js.map +0 -7
  164. package/dist/modules/sales/__integration__/TC-SALES-009.spec.js +0 -7
  165. package/dist/modules/sales/__integration__/TC-SALES-009.spec.js.map +0 -7
  166. package/dist/modules/sales/__integration__/TC-SALES-010.spec.js +0 -16
  167. package/dist/modules/sales/__integration__/TC-SALES-010.spec.js.map +0 -7
  168. package/dist/modules/sales/__integration__/TC-SALES-011.spec.js +0 -20
  169. package/dist/modules/sales/__integration__/TC-SALES-011.spec.js.map +0 -7
  170. package/dist/modules/sales/__integration__/TC-SALES-012.spec.js +0 -7
  171. package/dist/modules/sales/__integration__/TC-SALES-012.spec.js.map +0 -7
  172. package/dist/modules/sales/__integration__/TC-SALES-013.spec.js +0 -66
  173. package/dist/modules/sales/__integration__/TC-SALES-013.spec.js.map +0 -7
  174. package/dist/modules/sales/__integration__/TC-SALES-014.spec.js +0 -13
  175. package/dist/modules/sales/__integration__/TC-SALES-014.spec.js.map +0 -7
  176. package/dist/modules/sales/__integration__/TC-SALES-015.spec.js +0 -13
  177. package/dist/modules/sales/__integration__/TC-SALES-015.spec.js.map +0 -7
  178. package/dist/modules/sales/__integration__/TC-SALES-016.spec.js +0 -13
  179. package/dist/modules/sales/__integration__/TC-SALES-016.spec.js.map +0 -7
  180. package/dist/modules/sales/__integration__/TC-SALES-017.spec.js +0 -44
  181. package/dist/modules/sales/__integration__/TC-SALES-017.spec.js.map +0 -7
  182. package/dist/modules/sales/__integration__/TC-SALES-018.spec.js +0 -18
  183. package/dist/modules/sales/__integration__/TC-SALES-018.spec.js.map +0 -7
  184. package/dist/modules/sales/__integration__/TC-SALES-019.spec.js +0 -16
  185. package/dist/modules/sales/__integration__/TC-SALES-019.spec.js.map +0 -7
  186. package/dist/modules/sales/__integration__/TC-SALES-020.spec.js +0 -75
  187. package/dist/modules/sales/__integration__/TC-SALES-020.spec.js.map +0 -7
  188. package/dist/modules/staff/__integration__/TC-INT-006.spec.js +0 -64
  189. package/dist/modules/staff/__integration__/TC-INT-006.spec.js.map +0 -7
  190. package/dist/modules/translations/__integration__/TC-TRANS-001.spec.js +0 -48
  191. package/dist/modules/translations/__integration__/TC-TRANS-001.spec.js.map +0 -7
  192. package/dist/modules/translations/__integration__/TC-TRANS-002.spec.js +0 -94
  193. package/dist/modules/translations/__integration__/TC-TRANS-002.spec.js.map +0 -7
  194. package/dist/modules/translations/__integration__/TC-TRANS-003.spec.js +0 -61
  195. package/dist/modules/translations/__integration__/TC-TRANS-003.spec.js.map +0 -7
  196. package/dist/modules/translations/__integration__/TC-TRANS-004.spec.js +0 -52
  197. package/dist/modules/translations/__integration__/TC-TRANS-004.spec.js.map +0 -7
  198. package/dist/modules/translations/__integration__/TC-TRANS-005.spec.js +0 -106
  199. package/dist/modules/translations/__integration__/TC-TRANS-005.spec.js.map +0 -7
  200. package/dist/modules/translations/__integration__/TC-TRANS-006.spec.js +0 -94
  201. package/dist/modules/translations/__integration__/TC-TRANS-006.spec.js.map +0 -7
  202. package/dist/modules/translations/__integration__/TC-TRANS-007.spec.js +0 -62
  203. package/dist/modules/translations/__integration__/TC-TRANS-007.spec.js.map +0 -7
  204. package/dist/modules/translations/__integration__/TC-TRANS-008.spec.js +0 -168
  205. package/dist/modules/translations/__integration__/TC-TRANS-008.spec.js.map +0 -7
  206. package/dist/modules/translations/__integration__/helpers/translationFixtures.js +0 -63
  207. package/dist/modules/translations/__integration__/helpers/translationFixtures.js.map +0 -7
  208. package/dist/modules/workflows/__integration__/TC-WF-001.spec.js +0 -73
  209. package/dist/modules/workflows/__integration__/TC-WF-001.spec.js.map +0 -7
  210. package/src/__tests__/module-decoupling.test.ts +0 -356
  211. package/src/modules/api_keys/api/__tests__/keys.route.test.ts +0 -244
  212. package/src/modules/attachments/api/__tests__/attachments.api.test.ts +0 -240
  213. package/src/modules/attachments/components/__tests__/AttachmentContentPreview.test.tsx +0 -45
  214. package/src/modules/attachments/data/__tests__/entities-ocr.test.ts +0 -15
  215. package/src/modules/attachments/lib/__tests__/ocr-config.test.ts +0 -27
  216. package/src/modules/attachments/lib/__tests__/textExtraction.test.ts +0 -64
  217. package/src/modules/audit_logs/api/__tests__/access.route.test.ts +0 -118
  218. package/src/modules/audit_logs/api/__tests__/redo.route.test.ts +0 -131
  219. package/src/modules/audit_logs/api/__tests__/undo.route.test.ts +0 -103
  220. package/src/modules/audit_logs/services/__tests__/actionLogService.test.ts +0 -26
  221. package/src/modules/auth/__integration__/TC-AUTH-001.spec.ts +0 -13
  222. package/src/modules/auth/__integration__/TC-AUTH-002.spec.ts +0 -30
  223. package/src/modules/auth/__integration__/TC-AUTH-003.spec.ts +0 -28
  224. package/src/modules/auth/__integration__/TC-AUTH-004.spec.ts +0 -21
  225. package/src/modules/auth/__integration__/TC-AUTH-005.spec.ts +0 -17
  226. package/src/modules/auth/__integration__/TC-AUTH-006.spec.ts +0 -17
  227. package/src/modules/auth/__integration__/TC-AUTH-007.spec.ts +0 -19
  228. package/src/modules/auth/__integration__/TC-AUTH-008.spec.ts +0 -31
  229. package/src/modules/auth/__integration__/TC-AUTH-009.spec.ts +0 -22
  230. package/src/modules/auth/__integration__/TC-AUTH-010.spec.ts +0 -39
  231. package/src/modules/auth/__integration__/TC-AUTH-011.spec.ts +0 -35
  232. package/src/modules/auth/__integration__/TC-AUTH-012.spec.ts +0 -36
  233. package/src/modules/auth/__integration__/TC-AUTH-013.spec.ts +0 -48
  234. package/src/modules/auth/__integration__/TC-AUTH-014.spec.ts +0 -31
  235. package/src/modules/auth/__integration__/TC-AUTH-015.spec.ts +0 -28
  236. package/src/modules/auth/__integration__/TC-AUTH-016.spec.ts +0 -109
  237. package/src/modules/auth/__tests__/cli-rotate-encryption.test.ts +0 -97
  238. package/src/modules/auth/__tests__/cli-setup-acl.test.ts +0 -148
  239. package/src/modules/auth/api/__tests__/feature-check.test.ts +0 -65
  240. package/src/modules/auth/api/__tests__/login.test.ts +0 -47
  241. package/src/modules/auth/commands/__tests__/roles.custom-fields.test.ts +0 -126
  242. package/src/modules/auth/commands/__tests__/users.custom-fields.test.ts +0 -147
  243. package/src/modules/auth/lib/__tests__/rateLimitCheck.test.ts +0 -224
  244. package/src/modules/auth/services/__tests__/authService.test.ts +0 -32
  245. package/src/modules/auth/services/__tests__/rbacService.test.ts +0 -814
  246. package/src/modules/business_rules/api/__tests__/execute.route.test.ts +0 -311
  247. package/src/modules/business_rules/api/__tests__/logs-detail.route.test.ts +0 -181
  248. package/src/modules/business_rules/api/__tests__/logs.route.test.ts +0 -261
  249. package/src/modules/business_rules/api/__tests__/rules-detail.route.test.ts +0 -115
  250. package/src/modules/business_rules/api/__tests__/rules.route.test.ts +0 -746
  251. package/src/modules/business_rules/api/__tests__/sets-detail.route.test.ts +0 -169
  252. package/src/modules/business_rules/api/__tests__/sets-members.route.test.ts +0 -367
  253. package/src/modules/business_rules/api/__tests__/sets.route.test.ts +0 -361
  254. package/src/modules/business_rules/api/__tests__/test-helpers.ts +0 -42
  255. package/src/modules/business_rules/components/utils/__tests__/formHelpers.test.ts +0 -69
  256. package/src/modules/business_rules/data/__tests__/validators.test.ts +0 -637
  257. package/src/modules/business_rules/lib/__tests__/action-executor.test.ts +0 -728
  258. package/src/modules/business_rules/lib/__tests__/expression-evaluator.test.ts +0 -592
  259. package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +0 -805
  260. package/src/modules/business_rules/lib/__tests__/rule-evaluator.test.ts +0 -436
  261. package/src/modules/catalog/__integration__/TC-CAT-001.spec.ts +0 -32
  262. package/src/modules/catalog/__integration__/TC-CAT-002.spec.ts +0 -19
  263. package/src/modules/catalog/__integration__/TC-CAT-003.spec.ts +0 -39
  264. package/src/modules/catalog/__integration__/TC-CAT-004.spec.ts +0 -41
  265. package/src/modules/catalog/__integration__/TC-CAT-005.spec.ts +0 -37
  266. package/src/modules/catalog/__integration__/TC-CAT-006.spec.ts +0 -40
  267. package/src/modules/catalog/__integration__/TC-CAT-007.spec.ts +0 -37
  268. package/src/modules/catalog/__integration__/TC-CAT-008.spec.ts +0 -76
  269. package/src/modules/catalog/__integration__/TC-CAT-009.spec.ts +0 -39
  270. package/src/modules/catalog/__integration__/TC-CAT-010.spec.ts +0 -36
  271. package/src/modules/catalog/__integration__/TC-CAT-011.spec.ts +0 -44
  272. package/src/modules/catalog/__integration__/TC-CAT-012.spec.ts +0 -35
  273. package/src/modules/catalog/api/__tests__/offers.route.test.ts +0 -161
  274. package/src/modules/catalog/api/__tests__/prices.route.test.ts +0 -39
  275. package/src/modules/catalog/api/__tests__/products.route.test.ts +0 -91
  276. package/src/modules/catalog/api/__tests__/utils.test.ts +0 -36
  277. package/src/modules/catalog/api/__tests__/variants.route.test.ts +0 -44
  278. package/src/modules/catalog/backend/catalog/products/__tests__/ProductsDataTable.test.tsx +0 -172
  279. package/src/modules/catalog/commands/__tests__/products.delete.test.ts +0 -146
  280. package/src/modules/catalog/commands/__tests__/products.update.test.ts +0 -142
  281. package/src/modules/catalog/commands/__tests__/registration.test.ts +0 -54
  282. package/src/modules/catalog/commands/__tests__/shared.test.ts +0 -129
  283. package/src/modules/catalog/components/__tests__/catalogComponentsRender.test.tsx +0 -373
  284. package/src/modules/catalog/components/products/__tests__/ProductImageCell.test.tsx +0 -51
  285. package/src/modules/catalog/components/products/__tests__/productForm.test.ts +0 -32
  286. package/src/modules/catalog/lib/__tests__/pricing.test.ts +0 -150
  287. package/src/modules/catalog/services/__tests__/catalogPricingService.test.ts +0 -21
  288. package/src/modules/configs/components/__tests__/CachePanel.test.tsx +0 -134
  289. package/src/modules/configs/components/__tests__/SystemStatusPanel.test.tsx +0 -93
  290. package/src/modules/configs/lib/__tests__/system-status.test.ts +0 -55
  291. package/src/modules/configs/lib/__tests__/upgrade-actions.test.ts +0 -135
  292. package/src/modules/core/__integration__/admin/TC-ADMIN-001.spec.ts +0 -70
  293. package/src/modules/core/__integration__/admin/TC-ADMIN-002.spec.ts +0 -83
  294. package/src/modules/core/__integration__/admin/TC-ADMIN-003.spec.ts +0 -50
  295. package/src/modules/core/__integration__/admin/TC-ADMIN-004.spec.ts +0 -77
  296. package/src/modules/core/__integration__/admin/TC-ADMIN-005.spec.ts +0 -49
  297. package/src/modules/core/__integration__/admin/TC-ADMIN-006.spec.ts +0 -59
  298. package/src/modules/core/__integration__/admin/TC-ADMIN-007.spec.ts +0 -68
  299. package/src/modules/core/__integration__/admin/TC-ADMIN-008.spec.ts +0 -127
  300. package/src/modules/core/__integration__/admin/TC-ADMIN-009.spec.ts +0 -48
  301. package/src/modules/core/__integration__/admin/TC-ADMIN-010.spec.ts +0 -57
  302. package/src/modules/core/__integration__/helpers/api.ts +0 -84
  303. package/src/modules/core/__integration__/helpers/auth.ts +0 -110
  304. package/src/modules/core/__integration__/helpers/authUi.ts +0 -33
  305. package/src/modules/core/__integration__/helpers/catalogFixtures.ts +0 -73
  306. package/src/modules/core/__integration__/helpers/crmFixtures.ts +0 -101
  307. package/src/modules/core/__integration__/helpers/salesFixtures.ts +0 -89
  308. package/src/modules/core/__integration__/helpers/salesUi.ts +0 -528
  309. package/src/modules/core/__integration__/integration/TC-INT-001.spec.ts +0 -34
  310. package/src/modules/core/__integration__/integration/TC-INT-002.spec.ts +0 -74
  311. package/src/modules/core/__integration__/integration/TC-INT-003.spec.ts +0 -43
  312. package/src/modules/core/__integration__/integration/TC-INT-004.spec.ts +0 -82
  313. package/src/modules/core/__integration__/integration/TC-INT-005.spec.ts +0 -29
  314. package/src/modules/currencies/backend/exchange-rates/__tests__/formatDateTimeLocal.test.ts +0 -78
  315. package/src/modules/currencies/data/__tests__/validators.test.ts +0 -100
  316. package/src/modules/currencies/services/__tests__/exchangeRateService.test.ts +0 -666
  317. package/src/modules/currencies/services/__tests__/rateFetchingService.basic.test.ts +0 -398
  318. package/src/modules/currencies/services/__tests__/rateFetchingService.errors.test.ts +0 -296
  319. package/src/modules/currencies/services/__tests__/rateFetchingService.providers.test.ts +0 -350
  320. package/src/modules/currencies/services/__tests__/rateFetchingService.setup.ts +0 -188
  321. package/src/modules/customers/__integration__/TC-CRM-001.spec.ts +0 -42
  322. package/src/modules/customers/__integration__/TC-CRM-002.spec.ts +0 -47
  323. package/src/modules/customers/__integration__/TC-CRM-003.spec.ts +0 -55
  324. package/src/modules/customers/__integration__/TC-CRM-004.spec.ts +0 -57
  325. package/src/modules/customers/__integration__/TC-CRM-005.spec.ts +0 -50
  326. package/src/modules/customers/__integration__/TC-CRM-006.spec.ts +0 -60
  327. package/src/modules/customers/__integration__/TC-CRM-007.spec.ts +0 -57
  328. package/src/modules/customers/__integration__/TC-CRM-008.spec.ts +0 -62
  329. package/src/modules/customers/__integration__/TC-CRM-009.spec.ts +0 -46
  330. package/src/modules/customers/__integration__/TC-CRM-010.spec.ts +0 -49
  331. package/src/modules/customers/__integration__/TC-CRM-011.spec.ts +0 -47
  332. package/src/modules/customers/__integration__/TC-CRM-012.spec.ts +0 -49
  333. package/src/modules/customers/__integration__/TC-CRM-013.spec.ts +0 -61
  334. package/src/modules/customers/__integration__/TC-CRM-014.spec.ts +0 -31
  335. package/src/modules/customers/__integration__/TC-CRM-015.spec.ts +0 -89
  336. package/src/modules/customers/__integration__/TC-CRM-016.spec.ts +0 -55
  337. package/src/modules/customers/__integration__/TC-CRM-017.spec.ts +0 -37
  338. package/src/modules/customers/__integration__/TC-CRM-018.spec.ts +0 -62
  339. package/src/modules/customers/__integration__/TC-CRM-019.spec.ts +0 -44
  340. package/src/modules/customers/__integration__/TC-CRM-020.spec.ts +0 -73
  341. package/src/modules/customers/api/__tests__/utils.test.ts +0 -61
  342. package/src/modules/customers/api/dashboard/widgets/new-deals/__tests__/route.test.ts +0 -54
  343. package/src/modules/customers/commands/__tests__/shared.test.ts +0 -263
  344. package/src/modules/customers/commands/__tests__/undo.custom-fields.test.ts +0 -1184
  345. package/src/modules/customers/components/detail/__tests__/ActivityForm.validation.test.ts +0 -37
  346. package/src/modules/customers/components/detail/__tests__/DealForm.validation.test.ts +0 -45
  347. package/src/modules/customers/components/detail/__tests__/InlineEditors.test.tsx +0 -166
  348. package/src/modules/customers/components/detail/__tests__/TaskForm.submit.test.ts +0 -21
  349. package/src/modules/customers/components/detail/hooks/__tests__/useCustomerDictionary.test.ts +0 -97
  350. package/src/modules/customers/lib/__tests__/customFieldRouting.test.ts +0 -107
  351. package/src/modules/customers/utils/__tests__/addressFormat.test.ts +0 -105
  352. package/src/modules/customers/utils/__tests__/phoneDuplicates.test.ts +0 -98
  353. package/src/modules/dashboards/__tests__/widgets.test.ts +0 -70
  354. package/src/modules/dashboards/lib/__tests__/aggregations.test.ts +0 -328
  355. package/src/modules/dashboards/lib/__tests__/formatters.test.ts +0 -128
  356. package/src/modules/directory/backend/directory/organizations/__tests__/create-submit.test.ts +0 -46
  357. package/src/modules/directory/backend/directory/organizations/__tests__/edit-submit.test.ts +0 -49
  358. package/src/modules/directory/components/__tests__/OrganizationSelect.test.tsx +0 -71
  359. package/src/modules/directory/components/__tests__/TenantSelect.test.tsx +0 -75
  360. package/src/modules/entities/__tests__/cli-decrypt-database.test.ts +0 -534
  361. package/src/modules/entities/__tests__/cli-rotate-encryption.test.ts +0 -123
  362. package/src/modules/entities/api/__tests__/encryption.api.test.ts +0 -57
  363. package/src/modules/entities/api/__tests__/records.get.custom-entity.test.ts +0 -43
  364. package/src/modules/entities/api/__tests__/records.validation.test.ts +0 -53
  365. package/src/modules/entities/backend/entities/user/__tests__/create-entity-submit.test.ts +0 -47
  366. package/src/modules/entities/backend/entities/user/__tests__/records-submit.test.ts +0 -104
  367. package/src/modules/feature_toggles/commands/__tests__/global.test.ts +0 -325
  368. package/src/modules/feature_toggles/commands/__tests__/overrides.test.ts +0 -186
  369. package/src/modules/feature_toggles/lib/__tests__/feature-flag-check.test.ts +0 -365
  370. package/src/modules/feature_toggles/lib/__tests__/queries.test.ts +0 -130
  371. package/src/modules/inbox_ops/api/emails/[id]/reprocess/__tests__/route.test.ts +0 -194
  372. package/src/modules/inbox_ops/api/proposals/[id]/__tests__/route.test.ts +0 -124
  373. package/src/modules/inbox_ops/api/proposals/[id]/accept-all/__tests__/route.test.ts +0 -154
  374. package/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/__tests__/route.test.ts +0 -200
  375. package/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/accept/__tests__/route.test.ts +0 -261
  376. package/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/reject/__tests__/route.test.ts +0 -201
  377. package/src/modules/inbox_ops/api/proposals/[id]/reject/__tests__/route.test.ts +0 -123
  378. package/src/modules/inbox_ops/api/proposals/[id]/replies/[replyId]/send/__tests__/route.test.ts +0 -232
  379. package/src/modules/inbox_ops/api/proposals/[id]/translate/__tests__/route.test.ts +0 -173
  380. package/src/modules/inbox_ops/api/proposals/__tests__/route.test.ts +0 -185
  381. package/src/modules/inbox_ops/api/webhook/__tests__/inbound.test.ts +0 -317
  382. package/src/modules/inbox_ops/data/__tests__/validators.test.ts +0 -463
  383. package/src/modules/inbox_ops/lib/__tests__/catalogLookup.test.ts +0 -143
  384. package/src/modules/inbox_ops/lib/__tests__/contactMatcher.test.ts +0 -158
  385. package/src/modules/inbox_ops/lib/__tests__/emailParser.test.ts +0 -191
  386. package/src/modules/inbox_ops/lib/__tests__/executionEngine.test.ts +0 -1419
  387. package/src/modules/inbox_ops/lib/__tests__/extractionPrompt.test.ts +0 -151
  388. package/src/modules/inbox_ops/lib/__tests__/priceValidator.test.ts +0 -259
  389. package/src/modules/inbox_ops/lib/__tests__/translationProvider.test.ts +0 -99
  390. package/src/modules/inbox_ops/subscribers/__tests__/extractionWorker.test.ts +0 -803
  391. package/src/modules/notifications/__tests__/deliver-notification.test.ts +0 -285
  392. package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +0 -19
  393. package/src/modules/notifications/__tests__/notificationService.test.ts +0 -248
  394. package/src/modules/planner/__tests__/availabilityMerge.test.ts +0 -99
  395. package/src/modules/planner/__tests__/plannerAvailabilityService.test.ts +0 -89
  396. package/src/modules/planner/data/__tests__/validators.test.ts +0 -78
  397. package/src/modules/progress/__integration__/TC-PROG-001.spec.ts +0 -67
  398. package/src/modules/progress/__tests__/progressService.test.ts +0 -377
  399. package/src/modules/query_index/__tests__/hybrid-engine.test.ts +0 -365
  400. package/src/modules/query_index/__tests__/indexer.test.ts +0 -175
  401. package/src/modules/resources/__integration__/TC-INT-007.spec.ts +0 -110
  402. package/src/modules/resources/__integration__/helpers/resourcesFixtures.ts +0 -50
  403. package/src/modules/resources/data/__tests__/validators.test.ts +0 -65
  404. package/src/modules/sales/__integration__/TC-SALES-001.spec.ts +0 -26
  405. package/src/modules/sales/__integration__/TC-SALES-002.spec.ts +0 -38
  406. package/src/modules/sales/__integration__/TC-SALES-003.spec.ts +0 -18
  407. package/src/modules/sales/__integration__/TC-SALES-004.spec.ts +0 -19
  408. package/src/modules/sales/__integration__/TC-SALES-005.spec.ts +0 -21
  409. package/src/modules/sales/__integration__/TC-SALES-006.spec.ts +0 -26
  410. package/src/modules/sales/__integration__/TC-SALES-007.spec.ts +0 -23
  411. package/src/modules/sales/__integration__/TC-SALES-008.spec.ts +0 -11
  412. package/src/modules/sales/__integration__/TC-SALES-009.spec.ts +0 -12
  413. package/src/modules/sales/__integration__/TC-SALES-010.spec.ts +0 -20
  414. package/src/modules/sales/__integration__/TC-SALES-011.spec.ts +0 -26
  415. package/src/modules/sales/__integration__/TC-SALES-012.spec.ts +0 -12
  416. package/src/modules/sales/__integration__/TC-SALES-013.spec.ts +0 -73
  417. package/src/modules/sales/__integration__/TC-SALES-014.spec.ts +0 -17
  418. package/src/modules/sales/__integration__/TC-SALES-015.spec.ts +0 -17
  419. package/src/modules/sales/__integration__/TC-SALES-016.spec.ts +0 -17
  420. package/src/modules/sales/__integration__/TC-SALES-017.spec.ts +0 -60
  421. package/src/modules/sales/__integration__/TC-SALES-018.spec.ts +0 -25
  422. package/src/modules/sales/__integration__/TC-SALES-019.spec.ts +0 -22
  423. package/src/modules/sales/__integration__/TC-SALES-020.spec.ts +0 -107
  424. package/src/modules/sales/api/__tests__/channels.route.test.ts +0 -50
  425. package/src/modules/sales/api/__tests__/document-history.test.ts +0 -146
  426. package/src/modules/sales/api/__tests__/documents.factory.test.ts +0 -98
  427. package/src/modules/sales/api/__tests__/documents.routes.test.ts +0 -149
  428. package/src/modules/sales/api/__tests__/quotes.acceptance.test.ts +0 -209
  429. package/src/modules/sales/api/__tests__/timeline.test.tsx +0 -165
  430. package/src/modules/sales/api/dashboard/widgets/new-orders/__tests__/route.test.ts +0 -112
  431. package/src/modules/sales/api/dashboard/widgets/new-quotes/__tests__/route.test.ts +0 -116
  432. package/src/modules/sales/commands/__tests__/documents.cache.test.ts +0 -126
  433. package/src/modules/sales/commands/__tests__/documents.undo.test.ts +0 -170
  434. package/src/modules/sales/commands/__tests__/registration.test.ts +0 -141
  435. package/src/modules/sales/components/__tests__/salesComponentsRender.test.tsx +0 -456
  436. package/src/modules/sales/lib/__tests__/calculations.test.ts +0 -210
  437. package/src/modules/sales/services/__tests__/salesCalculationService.test.ts +0 -181
  438. package/src/modules/sales/services/__tests__/taxCalculationService.test.ts +0 -79
  439. package/src/modules/sales/widgets/dashboard/new-orders/__tests__/config.test.ts +0 -47
  440. package/src/modules/sales/widgets/dashboard/new-quotes/__tests__/config.test.ts +0 -47
  441. package/src/modules/staff/__integration__/TC-INT-006.spec.ts +0 -71
  442. package/src/modules/staff/data/__tests__/validators.test.ts +0 -60
  443. package/src/modules/translations/__integration__/TC-TRANS-001.spec.ts +0 -57
  444. package/src/modules/translations/__integration__/TC-TRANS-002.spec.ts +0 -114
  445. package/src/modules/translations/__integration__/TC-TRANS-003.spec.ts +0 -71
  446. package/src/modules/translations/__integration__/TC-TRANS-004.spec.ts +0 -66
  447. package/src/modules/translations/__integration__/TC-TRANS-005.spec.ts +0 -135
  448. package/src/modules/translations/__integration__/TC-TRANS-006.spec.ts +0 -113
  449. package/src/modules/translations/__integration__/TC-TRANS-007.spec.ts +0 -80
  450. package/src/modules/translations/__integration__/TC-TRANS-008.spec.ts +0 -209
  451. package/src/modules/translations/__integration__/helpers/translationFixtures.ts +0 -95
  452. package/src/modules/translations/api/__tests__/locales.test.ts +0 -67
  453. package/src/modules/translations/data/__tests__/validators.test.ts +0 -143
  454. package/src/modules/translations/lib/__tests__/extract-record-id.test.ts +0 -75
  455. package/src/modules/translations/lib/__tests__/helpers.test.ts +0 -215
  456. package/src/modules/translations/lib/__tests__/locale.test.ts +0 -115
  457. package/src/modules/translations/lib/__tests__/resolve-field-list.test.ts +0 -176
  458. package/src/modules/translations/lib/__tests__/translatable-fields.test.ts +0 -79
  459. package/src/modules/translations/widgets/__tests__/injection-table.test.ts +0 -83
  460. package/src/modules/workflows/__integration__/TC-WF-001.spec.ts +0 -114
  461. package/src/modules/workflows/api/__tests__/definitions.route.test.ts +0 -762
  462. package/src/modules/workflows/api/__tests__/instances.route.test.ts +0 -869
  463. package/src/modules/workflows/data/__tests__/validators.test.ts +0 -707
  464. package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +0 -1230
  465. package/src/modules/workflows/lib/__tests__/call-api.test.ts +0 -421
  466. package/src/modules/workflows/lib/__tests__/compensation.test.ts +0 -713
  467. package/src/modules/workflows/lib/__tests__/event-logger.test.ts +0 -615
  468. package/src/modules/workflows/lib/__tests__/integration.test.ts +0 -693
  469. package/src/modules/workflows/lib/__tests__/signals.test.ts +0 -566
  470. package/src/modules/workflows/lib/__tests__/step-handler.test.ts +0 -670
  471. package/src/modules/workflows/lib/__tests__/sub-workflow.test.ts +0 -934
  472. package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +0 -925
  473. package/src/modules/workflows/lib/__tests__/workflow-executor.test.ts +0 -684
@@ -1,713 +0,0 @@
1
- /**
2
- * Compensation (Saga Pattern) Tests - Phase 8, Step 8.2
3
- *
4
- * Tests for automatic compensation on workflow failure
5
- */
6
-
7
- import { compensateWorkflow, shouldCompensateActivity } from '../compensation-handler'
8
- import { logWorkflowEvent, getWorkflowEvents } from '../event-logger'
9
- import { executeActivity } from '../activity-executor'
10
-
11
- // Mock dependencies
12
- jest.mock('../event-logger')
13
- jest.mock('../activity-executor')
14
-
15
- const mockLogWorkflowEvent = logWorkflowEvent as jest.MockedFunction<typeof logWorkflowEvent>
16
- const mockGetWorkflowEvents = getWorkflowEvents as jest.MockedFunction<typeof getWorkflowEvents>
17
- const mockExecuteActivity = executeActivity as jest.MockedFunction<typeof executeActivity>
18
-
19
- describe('Compensation (Saga Pattern) - Phase 8', () => {
20
- // Test data
21
- const tenantId = 'tenant-123'
22
- const organizationId = 'org-123'
23
- const instanceId = 'instance-123'
24
- const userId = 'user-123'
25
-
26
- const mockEm = {
27
- find: jest.fn(),
28
- flush: jest.fn(),
29
- } as any
30
-
31
- const mockContainer = {} as any
32
-
33
- const mockInstance = {
34
- version: '1.0.0',
35
- startedAt: new Date('2024-01-01T10:00:00Z'),
36
- retryCount: 0,
37
- createdAt: new Date('2024-01-01T09:00:00Z'),
38
- updatedAt: new Date('2024-01-01T10:00:00Z'),
39
- id: instanceId,
40
- definitionId: 'def-123',
41
- status: 'FAILED',
42
- context: {
43
- orderId: 'order-123',
44
- paymentId: 'payment-123',
45
- inventoryReservationId: 'reservation-123',
46
- },
47
- errorMessage: 'Payment failed',
48
- tenantId,
49
- organizationId,
50
- }
51
-
52
- const mockDefinition = {
53
- id: 'def-123',
54
- definition: {
55
- steps: [],
56
- transitions: [
57
- {
58
- transitionId: 't1',
59
- fromStepId: 'start',
60
- toStepId: 'end',
61
- activities: [
62
- {
63
- activityId: 'charge_payment',
64
- activityName: 'Charge Payment',
65
- activityType: 'EXECUTE_FUNCTION',
66
- config: { functionName: 'chargePayment' },
67
- compensation: {
68
- activityId: 'refund_payment',
69
- automatic: true,
70
- },
71
- },
72
- {
73
- activityId: 'refund_payment',
74
- activityName: 'Refund Payment',
75
- activityType: 'EXECUTE_FUNCTION',
76
- config: { functionName: 'refundPayment' },
77
- },
78
- {
79
- activityId: 'reserve_inventory',
80
- activityName: 'Reserve Inventory',
81
- activityType: 'EXECUTE_FUNCTION',
82
- config: { functionName: 'reserveInventory' },
83
- compensation: {
84
- activityId: 'release_inventory',
85
- automatic: true,
86
- },
87
- },
88
- {
89
- activityId: 'release_inventory',
90
- activityName: 'Release Inventory',
91
- activityType: 'EXECUTE_FUNCTION',
92
- config: { functionName: 'releaseInventory' },
93
- },
94
- ],
95
- },
96
- ],
97
- },
98
- }
99
-
100
- beforeEach(() => {
101
- jest.clearAllMocks()
102
- mockLogWorkflowEvent.mockResolvedValue({} as any)
103
- mockEm.flush.mockResolvedValue(undefined)
104
- })
105
-
106
- describe('Basic Compensation', () => {
107
- test('should trigger compensation on workflow failure', async () => {
108
- // Mock completed activities (in reverse chronological order - LIFO)
109
- const completedActivities = [
110
- {
111
- eventType: 'ACTIVITY_COMPLETED',
112
- eventData: {
113
- activityId: 'reserve_inventory',
114
- activityName: 'Reserve Inventory',
115
- output: { reservationId: 'reservation-123' },
116
- },
117
- occurredAt: new Date('2024-01-01T10:02:00Z'),
118
- },
119
- {
120
- eventType: 'ACTIVITY_COMPLETED',
121
- eventData: {
122
- activityId: 'charge_payment',
123
- activityName: 'Charge Payment',
124
- output: { paymentId: 'payment-123' },
125
- },
126
- occurredAt: new Date('2024-01-01T10:01:00Z'),
127
- },
128
- ]
129
-
130
- mockEm.find.mockResolvedValue(completedActivities)
131
-
132
- // Mock successful compensation executions
133
- mockExecuteActivity.mockResolvedValue({
134
- success: true,
135
- activityId: 'test-activity',
136
- activityType: 'CALL_API',
137
- retryCount: 0,
138
- output: { refunded: true },
139
- executionTimeMs: 100,
140
- })
141
-
142
- const result = await compensateWorkflow(
143
- mockEm,
144
- mockContainer,
145
- mockInstance as any,
146
- mockDefinition as any,
147
- { userId }
148
- )
149
-
150
- // Verify workflow status updated to COMPENSATING
151
- expect(mockInstance.status).toBe('COMPENSATED')
152
- expect(mockEm.flush).toHaveBeenCalled()
153
-
154
- // Verify compensation started event
155
- expect(mockLogWorkflowEvent).toHaveBeenCalledWith(
156
- mockEm,
157
- expect.objectContaining({
158
- workflowInstanceId: instanceId,
159
- eventType: 'COMPENSATION_STARTED',
160
- eventData: expect.objectContaining({
161
- reason: 'Payment failed',
162
- }),
163
- })
164
- )
165
-
166
- // Verify result
167
- expect(result.status).toBe('COMPLETED')
168
- expect(result.totalActivities).toBe(2)
169
- expect(result.compensatedActivities).toBe(2)
170
- expect(result.failedCompensations).toEqual([])
171
- })
172
-
173
- test('should execute compensation activities in reverse order (LIFO)', async () => {
174
- const completedActivities = [
175
- {
176
- eventType: 'ACTIVITY_COMPLETED',
177
- eventData: { activityId: 'reserve_inventory', activityName: 'Reserve Inventory' },
178
- occurredAt: new Date('2024-01-01T10:02:00Z'),
179
- },
180
- {
181
- eventType: 'ACTIVITY_COMPLETED',
182
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
183
- occurredAt: new Date('2024-01-01T10:01:00Z'),
184
- },
185
- ]
186
-
187
- mockEm.find.mockResolvedValue(completedActivities)
188
- mockExecuteActivity.mockResolvedValue({ success: true, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, output: {}, executionTimeMs: 50 })
189
-
190
- await compensateWorkflow(
191
- mockEm,
192
- mockContainer,
193
- mockInstance as any,
194
- mockDefinition as any
195
- )
196
-
197
- // Verify compensation activities executed in reverse order
198
- const activityCalls = mockExecuteActivity.mock.calls
199
-
200
- // First call should compensate the most recent activity (reserve_inventory → release_inventory)
201
- // executeActivity(em, container, activityDef, context)
202
- expect(activityCalls[0][2].activityId).toBe('release_inventory')
203
-
204
- // Second call should compensate the earlier activity (charge_payment → refund_payment)
205
- expect(activityCalls[1][2].activityId).toBe('refund_payment')
206
- })
207
-
208
- test('should update workflow status to COMPENSATED on successful completion', async () => {
209
- const completedActivities = [
210
- {
211
- eventType: 'ACTIVITY_COMPLETED',
212
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
213
- occurredAt: new Date(),
214
- },
215
- ]
216
-
217
- mockEm.find.mockResolvedValue(completedActivities)
218
- mockExecuteActivity.mockResolvedValue({ success: true, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, output: {}, executionTimeMs: 50 })
219
-
220
- const result = await compensateWorkflow(
221
- mockEm,
222
- mockContainer,
223
- mockInstance as any,
224
- mockDefinition as any
225
- )
226
-
227
- expect(mockInstance.status).toBe('COMPENSATED')
228
- expect(result.status).toBe('COMPLETED')
229
-
230
- // Verify COMPENSATION_COMPLETED event logged
231
- expect(mockLogWorkflowEvent).toHaveBeenCalledWith(
232
- mockEm,
233
- expect.objectContaining({
234
- eventType: 'COMPENSATION_COMPLETED',
235
- eventData: expect.objectContaining({
236
- totalActivities: 1,
237
- compensatedActivities: 1,
238
- }),
239
- })
240
- )
241
- })
242
-
243
- test('should pass original activity context to compensation activity', async () => {
244
- const completedActivities = [
245
- {
246
- eventType: 'ACTIVITY_COMPLETED',
247
- eventData: {
248
- activityId: 'charge_payment',
249
- activityName: 'Charge Payment',
250
- output: { transactionId: 'txn-123', amount: 100 },
251
- },
252
- occurredAt: new Date(),
253
- },
254
- ]
255
-
256
- mockEm.find.mockResolvedValue(completedActivities)
257
- mockExecuteActivity.mockResolvedValue({ success: true, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, output: {}, executionTimeMs: 50 })
258
-
259
- await compensateWorkflow(
260
- mockEm,
261
- mockContainer,
262
- mockInstance as any,
263
- mockDefinition as any
264
- )
265
-
266
- // Verify executeActivity called with workflow context
267
- expect(mockExecuteActivity).toHaveBeenCalledWith(
268
- mockEm,
269
- mockContainer,
270
- expect.objectContaining({ activityId: 'refund_payment' }),
271
- expect.objectContaining({
272
- workflowInstance: mockInstance,
273
- workflowContext: mockInstance.context,
274
- })
275
- )
276
- })
277
- })
278
-
279
- describe('Partial Compensation', () => {
280
- test('should skip activities without compensation defined', async () => {
281
- const definitionWithPartialCompensation = {
282
- id: 'def-123',
283
- definition: {
284
- steps: [],
285
- transitions: [
286
- {
287
- transitionId: 't1',
288
- activities: [
289
- {
290
- activityId: 'activity1',
291
- activityName: 'Activity 1',
292
- activityType: 'EXECUTE_FUNCTION',
293
- config: {},
294
- compensation: { activityId: 'compensate1' },
295
- },
296
- {
297
- activityId: 'compensate1',
298
- activityName: 'Compensate 1',
299
- activityType: 'EXECUTE_FUNCTION',
300
- config: {},
301
- },
302
- {
303
- activityId: 'activity2',
304
- activityName: 'Activity 2 (no compensation)',
305
- activityType: 'EXECUTE_FUNCTION',
306
- config: {},
307
- // No compensation defined
308
- },
309
- ],
310
- },
311
- ],
312
- },
313
- }
314
-
315
- const completedActivities = [
316
- {
317
- eventType: 'ACTIVITY_COMPLETED',
318
- eventData: { activityId: 'activity2', activityName: 'Activity 2' },
319
- occurredAt: new Date('2024-01-01T10:02:00Z'),
320
- },
321
- {
322
- eventType: 'ACTIVITY_COMPLETED',
323
- eventData: { activityId: 'activity1', activityName: 'Activity 1' },
324
- occurredAt: new Date('2024-01-01T10:01:00Z'),
325
- },
326
- ]
327
-
328
- mockEm.find.mockResolvedValue(completedActivities)
329
- mockExecuteActivity.mockResolvedValue({ success: true, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, output: {}, executionTimeMs: 50 })
330
-
331
- const result = await compensateWorkflow(
332
- mockEm,
333
- mockContainer,
334
- mockInstance as any,
335
- definitionWithPartialCompensation as any
336
- )
337
-
338
- // Only one compensation should execute (activity2 has no compensation)
339
- expect(mockExecuteActivity).toHaveBeenCalledTimes(1)
340
- expect(result.compensatedActivities).toBe(1)
341
- expect(result.totalActivities).toBe(2)
342
- })
343
-
344
- test('should limit compensation count when maxCompensations specified', async () => {
345
- const completedActivities = [
346
- {
347
- eventType: 'ACTIVITY_COMPLETED',
348
- eventData: { activityId: 'activity3', activityName: 'Activity 3' },
349
- occurredAt: new Date('2024-01-01T10:03:00Z'),
350
- },
351
- {
352
- eventType: 'ACTIVITY_COMPLETED',
353
- eventData: { activityId: 'activity2', activityName: 'Activity 2' },
354
- occurredAt: new Date('2024-01-01T10:02:00Z'),
355
- },
356
- {
357
- eventType: 'ACTIVITY_COMPLETED',
358
- eventData: { activityId: 'activity1', activityName: 'Activity 1' },
359
- occurredAt: new Date('2024-01-01T10:01:00Z'),
360
- },
361
- ]
362
-
363
- const definitionWith3Activities = {
364
- ...mockDefinition,
365
- definition: {
366
- ...mockDefinition.definition,
367
- transitions: [
368
- {
369
- transitionId: 't1',
370
- activities: [
371
- { activityId: 'activity1', activityName: 'Activity 1', activityType: 'EXECUTE_FUNCTION', config: {}, compensation: { activityId: 'comp1' } },
372
- { activityId: 'comp1', activityName: 'Comp 1', activityType: 'EXECUTE_FUNCTION', config: {} },
373
- { activityId: 'activity2', activityName: 'Activity 2', activityType: 'EXECUTE_FUNCTION', config: {}, compensation: { activityId: 'comp2' } },
374
- { activityId: 'comp2', activityName: 'Comp 2', activityType: 'EXECUTE_FUNCTION', config: {} },
375
- { activityId: 'activity3', activityName: 'Activity 3', activityType: 'EXECUTE_FUNCTION', config: {}, compensation: { activityId: 'comp3' } },
376
- { activityId: 'comp3', activityName: 'Comp 3', activityType: 'EXECUTE_FUNCTION', config: {} },
377
- ],
378
- },
379
- ],
380
- },
381
- }
382
-
383
- mockEm.find.mockResolvedValue(completedActivities)
384
- mockExecuteActivity.mockResolvedValue({ success: true, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, output: {}, executionTimeMs: 50 })
385
-
386
- const result = await compensateWorkflow(
387
- mockEm,
388
- mockContainer,
389
- mockInstance as any,
390
- definitionWith3Activities as any,
391
- { maxCompensations: 2 } // Only compensate 2 most recent
392
- )
393
-
394
- // Only 2 compensations should execute
395
- expect(mockExecuteActivity).toHaveBeenCalledTimes(2)
396
- expect(result.compensatedActivities).toBe(2)
397
- })
398
- })
399
-
400
- describe('Error Handling', () => {
401
- test('should continue compensation when continueOnError=true (default)', async () => {
402
- const completedActivities = [
403
- {
404
- eventType: 'ACTIVITY_COMPLETED',
405
- eventData: { activityId: 'reserve_inventory', activityName: 'Reserve Inventory' },
406
- occurredAt: new Date('2024-01-01T10:02:00Z'),
407
- },
408
- {
409
- eventType: 'ACTIVITY_COMPLETED',
410
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
411
- occurredAt: new Date('2024-01-01T10:01:00Z'),
412
- },
413
- ]
414
-
415
- mockEm.find.mockResolvedValue(completedActivities)
416
-
417
- // First compensation fails, second succeeds
418
- mockExecuteActivity
419
- .mockResolvedValueOnce({ success: false, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, error: 'Inventory service unavailable', executionTimeMs: 50 })
420
- .mockResolvedValueOnce({ success: true, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, output: {}, executionTimeMs: 50 })
421
-
422
- const result = await compensateWorkflow(
423
- mockEm,
424
- mockContainer,
425
- mockInstance as any,
426
- mockDefinition as any,
427
- { continueOnError: true }
428
- )
429
-
430
- // Both compensations should be attempted
431
- expect(mockExecuteActivity).toHaveBeenCalledTimes(2)
432
-
433
- // Result should be PARTIAL (some succeeded, some failed)
434
- expect(result.status).toBe('PARTIAL')
435
- expect(result.compensatedActivities).toBe(1)
436
- expect(result.failedCompensations).toContain('reserve_inventory')
437
- expect(result.errors).toContain('Failed to compensate Reserve Inventory: Inventory service unavailable')
438
- })
439
-
440
- test('should stop compensation immediately when continueOnError=false', async () => {
441
- const completedActivities = [
442
- {
443
- eventType: 'ACTIVITY_COMPLETED',
444
- eventData: { activityId: 'reserve_inventory', activityName: 'Reserve Inventory' },
445
- occurredAt: new Date('2024-01-01T10:02:00Z'),
446
- },
447
- {
448
- eventType: 'ACTIVITY_COMPLETED',
449
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
450
- occurredAt: new Date('2024-01-01T10:01:00Z'),
451
- },
452
- ]
453
-
454
- mockEm.find.mockResolvedValue(completedActivities)
455
- mockExecuteActivity.mockResolvedValue({ success: false, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, error: 'Compensation failed', executionTimeMs: 50 })
456
-
457
- const result = await compensateWorkflow(
458
- mockEm,
459
- mockContainer,
460
- mockInstance as any,
461
- mockDefinition as any,
462
- { continueOnError: false }
463
- )
464
-
465
- // Only first compensation should be attempted
466
- expect(mockExecuteActivity).toHaveBeenCalledTimes(1)
467
- expect(result.status).toBe('FAILED')
468
- expect(result.compensatedActivities).toBe(0)
469
- })
470
-
471
- test('should handle missing compensation activity definition', async () => {
472
- const definitionMissingCompensation = {
473
- id: 'def-123',
474
- definition: {
475
- steps: [],
476
- transitions: [
477
- {
478
- transitionId: 't1',
479
- activities: [
480
- {
481
- activityId: 'charge_payment',
482
- activityName: 'Charge Payment',
483
- activityType: 'EXECUTE_FUNCTION',
484
- config: {},
485
- compensation: {
486
- activityId: 'nonexistent_compensation', // This doesn't exist
487
- },
488
- },
489
- ],
490
- },
491
- ],
492
- },
493
- }
494
-
495
- const completedActivities = [
496
- {
497
- eventType: 'ACTIVITY_COMPLETED',
498
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
499
- occurredAt: new Date(),
500
- },
501
- ]
502
-
503
- mockEm.find.mockResolvedValue(completedActivities)
504
-
505
- const result = await compensateWorkflow(
506
- mockEm,
507
- mockContainer,
508
- mockInstance as any,
509
- definitionMissingCompensation as any
510
- )
511
-
512
- // No compensation executed, but doesn't crash
513
- expect(mockExecuteActivity).not.toHaveBeenCalled()
514
- expect(result.failedCompensations).toContain('charge_payment')
515
- })
516
-
517
- test('should handle compensation activity throwing exception', async () => {
518
- const completedActivities = [
519
- {
520
- eventType: 'ACTIVITY_COMPLETED',
521
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
522
- occurredAt: new Date(),
523
- },
524
- ]
525
-
526
- mockEm.find.mockResolvedValue(completedActivities)
527
- mockExecuteActivity.mockRejectedValue(new Error('Network error'))
528
-
529
- const result = await compensateWorkflow(
530
- mockEm,
531
- mockContainer,
532
- mockInstance as any,
533
- mockDefinition as any,
534
- { continueOnError: true }
535
- )
536
-
537
- expect(result.status).toBe('FAILED')
538
- expect(result.failedCompensations).toContain('charge_payment')
539
- expect(result.errors).toContain('Exception compensating Charge Payment: Network error')
540
- })
541
-
542
- test('should mark workflow as FAILED if compensation fails critically', async () => {
543
- const completedActivities = [
544
- {
545
- eventType: 'ACTIVITY_COMPLETED',
546
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
547
- occurredAt: new Date(),
548
- },
549
- ]
550
-
551
- mockEm.find.mockResolvedValue(completedActivities)
552
- mockExecuteActivity.mockResolvedValue({ success: false, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, error: 'Critical failure', executionTimeMs: 50 })
553
-
554
- const result = await compensateWorkflow(
555
- mockEm,
556
- mockContainer,
557
- mockInstance as any,
558
- mockDefinition as any,
559
- { continueOnError: false }
560
- )
561
-
562
- expect(result.status).toBe('FAILED')
563
- expect(mockInstance.status).toBe('FAILED')
564
-
565
- // Verify COMPENSATION_FAILED event logged
566
- expect(mockLogWorkflowEvent).toHaveBeenCalledWith(
567
- mockEm,
568
- expect.objectContaining({
569
- eventType: 'COMPENSATION_FAILED',
570
- })
571
- )
572
- })
573
- })
574
-
575
- describe('Event Logging', () => {
576
- test('should log COMPENSATION_STARTED event', async () => {
577
- mockEm.find.mockResolvedValue([])
578
-
579
- await compensateWorkflow(
580
- mockEm,
581
- mockContainer,
582
- mockInstance as any,
583
- mockDefinition as any,
584
- { userId, maxCompensations: 5, continueOnError: true }
585
- )
586
-
587
- expect(mockLogWorkflowEvent).toHaveBeenCalledWith(
588
- mockEm,
589
- expect.objectContaining({
590
- workflowInstanceId: instanceId,
591
- eventType: 'COMPENSATION_STARTED',
592
- eventData: expect.objectContaining({
593
- reason: 'Payment failed',
594
- maxCompensations: 5,
595
- continueOnError: true,
596
- }),
597
- userId,
598
- tenantId,
599
- organizationId,
600
- })
601
- )
602
- })
603
-
604
- test('should log COMPENSATION_ACTIVITY_STARTED and COMPLETED events', async () => {
605
- const completedActivities = [
606
- {
607
- eventType: 'ACTIVITY_COMPLETED',
608
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
609
- occurredAt: new Date(),
610
- },
611
- ]
612
-
613
- mockEm.find.mockResolvedValue(completedActivities)
614
- mockExecuteActivity.mockResolvedValue({ success: true, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, output: { refunded: true }, executionTimeMs: 123 })
615
-
616
- await compensateWorkflow(
617
- mockEm,
618
- mockContainer,
619
- mockInstance as any,
620
- mockDefinition as any
621
- )
622
-
623
- // Verify COMPENSATION_ACTIVITY_STARTED logged
624
- expect(mockLogWorkflowEvent).toHaveBeenCalledWith(
625
- mockEm,
626
- expect.objectContaining({
627
- eventType: 'COMPENSATION_ACTIVITY_STARTED',
628
- eventData: expect.objectContaining({
629
- originalActivityId: 'charge_payment',
630
- compensationActivityId: 'refund_payment',
631
- compensationActivityName: 'Refund Payment',
632
- }),
633
- })
634
- )
635
-
636
- // Verify COMPENSATION_ACTIVITY_COMPLETED logged
637
- expect(mockLogWorkflowEvent).toHaveBeenCalledWith(
638
- mockEm,
639
- expect.objectContaining({
640
- eventType: 'COMPENSATION_ACTIVITY_COMPLETED',
641
- eventData: expect.objectContaining({
642
- originalActivityId: 'charge_payment',
643
- compensationActivityId: 'refund_payment',
644
- output: { refunded: true },
645
- executionTimeMs: 123,
646
- }),
647
- })
648
- )
649
- })
650
-
651
- test('should log COMPENSATION_COMPLETED event with summary', async () => {
652
- const completedActivities = [
653
- {
654
- eventType: 'ACTIVITY_COMPLETED',
655
- eventData: { activityId: 'reserve_inventory', activityName: 'Reserve Inventory' },
656
- occurredAt: new Date('2024-01-01T10:02:00Z'),
657
- },
658
- {
659
- eventType: 'ACTIVITY_COMPLETED',
660
- eventData: { activityId: 'charge_payment', activityName: 'Charge Payment' },
661
- occurredAt: new Date('2024-01-01T10:01:00Z'),
662
- },
663
- ]
664
-
665
- mockEm.find.mockResolvedValue(completedActivities)
666
- mockExecuteActivity.mockResolvedValue({ success: true, activityId: 'test-activity', activityType: 'CALL_API', retryCount: 0, output: {}, executionTimeMs: 50 })
667
-
668
- await compensateWorkflow(
669
- mockEm,
670
- mockContainer,
671
- mockInstance as any,
672
- mockDefinition as any
673
- )
674
-
675
- expect(mockLogWorkflowEvent).toHaveBeenCalledWith(
676
- mockEm,
677
- expect.objectContaining({
678
- eventType: 'COMPENSATION_COMPLETED',
679
- eventData: expect.objectContaining({
680
- totalActivities: 2,
681
- compensatedActivities: 2,
682
- failedCompensations: [],
683
- }),
684
- })
685
- )
686
- })
687
- })
688
-
689
- describe('Utility Functions', () => {
690
- test('shouldCompensateActivity returns true when compensation defined', () => {
691
- const activity = {
692
- activityId: 'test',
693
- activityName: 'Test',
694
- activityType: 'EXECUTE_FUNCTION',
695
- config: {},
696
- compensation: { activityId: 'compensate_test' },
697
- }
698
-
699
- expect(shouldCompensateActivity(activity)).toBe(true)
700
- })
701
-
702
- test('shouldCompensateActivity returns false when no compensation defined', () => {
703
- const activity = {
704
- activityId: 'test',
705
- activityName: 'Test',
706
- activityType: 'EXECUTE_FUNCTION',
707
- config: {},
708
- }
709
-
710
- expect(shouldCompensateActivity(activity)).toBe(false)
711
- })
712
- })
713
- })