@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,925 +0,0 @@
1
- /**
2
- * Transition Handler Unit Tests
3
- */
4
-
5
- import { EntityManager } from '@mikro-orm/core'
6
- import type { AwilixContainer } from 'awilix'
7
- import {
8
- WorkflowInstance,
9
- WorkflowDefinition,
10
- WorkflowEvent,
11
- } from '../../data/entities'
12
- import * as transitionHandler from '../transition-handler'
13
- import * as ruleEvaluator from '../../../business_rules/lib/rule-evaluator'
14
- import * as ruleEngine from '../../../business_rules/lib/rule-engine'
15
-
16
- // Mock dependencies
17
- jest.mock('../../../business_rules/lib/rule-evaluator')
18
- jest.mock('../../../business_rules/lib/rule-engine')
19
-
20
- describe('Transition Handler (Unit Tests)', () => {
21
- let mockEm: jest.Mocked<EntityManager>
22
- let mockContainer: jest.Mocked<AwilixContainer>
23
- let mockInstance: WorkflowInstance
24
- let mockDefinition: WorkflowDefinition
25
-
26
- const testInstanceId = 'test-instance-id'
27
- const testDefinitionId = 'test-definition-id'
28
- const testTenantId = 'test-tenant-id'
29
- const testOrgId = 'test-org-id'
30
-
31
- beforeEach(() => {
32
- // Create mock EntityManager
33
- mockEm = {
34
- findOne: jest.fn(),
35
- find: jest.fn(),
36
- create: jest.fn(),
37
- persistAndFlush: jest.fn(),
38
- flush: jest.fn(),
39
- } as any
40
-
41
- // Create mock DI Container
42
- mockContainer = {
43
- resolve: jest.fn(),
44
- } as any
45
-
46
- // Create mock workflow instance
47
- mockInstance = {
48
- id: testInstanceId,
49
- definitionId: testDefinitionId,
50
- workflowId: 'simple-approval',
51
- currentStepId: 'step-1',
52
- status: 'RUNNING',
53
- context: { initiatedBy: 'user@example.com' },
54
- tenantId: testTenantId,
55
- organizationId: testOrgId,
56
- version: 1,
57
- startedAt: new Date(),
58
- retryCount: 0,
59
- createdAt: new Date(),
60
- updatedAt: new Date(),
61
- } as WorkflowInstance
62
-
63
- // Create mock workflow definition
64
- mockDefinition = {
65
- id: testDefinitionId,
66
- workflowId: 'simple-approval',
67
- workflowName: 'Simple Approval',
68
- version: 1,
69
- definition: {
70
- steps: [
71
- { stepId: 'start', stepName: 'Start', stepType: 'START' },
72
- { stepId: 'step-1', stepName: 'Step 1', stepType: 'AUTOMATED' },
73
- { stepId: 'step-2', stepName: 'Step 2', stepType: 'AUTOMATED' },
74
- { stepId: 'end', stepName: 'End', stepType: 'END' },
75
- ],
76
- transitions: [
77
- { fromStepId: 'start', toStepId: 'step-1' },
78
- { fromStepId: 'step-1', toStepId: 'step-2' },
79
- {
80
- fromStepId: 'step-2',
81
- toStepId: 'end',
82
- transitionId: 'step-2-to-end',
83
- transitionName: 'Complete',
84
- },
85
- ],
86
- },
87
- enabled: true,
88
- tenantId: testTenantId,
89
- organizationId: testOrgId,
90
- createdAt: new Date(),
91
- updatedAt: new Date(),
92
- } as WorkflowDefinition
93
-
94
- // Reset mocks
95
- jest.clearAllMocks()
96
-
97
- // Set up default mock for ruleEvaluator.evaluateConditions
98
- ;(ruleEvaluator.evaluateConditions as jest.Mock).mockResolvedValue(true)
99
- })
100
-
101
- // ============================================================================
102
- // evaluateTransition Tests
103
- // ============================================================================
104
-
105
- describe('evaluateTransition', () => {
106
- test('should evaluate valid transition', async () => {
107
- mockEm.findOne.mockResolvedValue(mockDefinition)
108
-
109
- const result = await transitionHandler.evaluateTransition(
110
- mockEm,
111
- mockInstance,
112
- 'step-1',
113
- 'step-2',
114
- { workflowContext: {} }
115
- )
116
-
117
- expect(result.isValid).toBe(true)
118
- expect(result.transition).toBeDefined()
119
- expect(result.transition.fromStepId).toBe('step-1')
120
- expect(result.transition.toStepId).toBe('step-2')
121
- })
122
-
123
- test('should return false if workflow definition not found', async () => {
124
- mockEm.findOne.mockResolvedValue(null)
125
-
126
- const result = await transitionHandler.evaluateTransition(
127
- mockEm,
128
- mockInstance,
129
- 'step-1',
130
- 'step-2',
131
- { workflowContext: {} }
132
- )
133
-
134
- expect(result.isValid).toBe(false)
135
- expect(result.reason).toContain('not found')
136
- })
137
-
138
- test('should return false if no transition exists from->to', async () => {
139
- mockEm.findOne.mockResolvedValue(mockDefinition)
140
-
141
- const result = await transitionHandler.evaluateTransition(
142
- mockEm,
143
- mockInstance,
144
- 'step-1',
145
- 'end', // No direct transition from step-1 to end
146
- { workflowContext: {} }
147
- )
148
-
149
- expect(result.isValid).toBe(false)
150
- expect(result.reason).toContain('No transition found')
151
- })
152
-
153
- test('should evaluate transition with inline condition', async () => {
154
- const definitionWithCondition = {
155
- ...mockDefinition,
156
- definition: {
157
- ...mockDefinition.definition,
158
- transitions: [
159
- {
160
- fromStepId: 'step-1',
161
- toStepId: 'step-2',
162
- condition: {
163
- operator: 'equals',
164
- field: 'approved',
165
- value: true,
166
- },
167
- },
168
- ],
169
- },
170
- }
171
-
172
- mockEm.findOne.mockResolvedValue(definitionWithCondition as WorkflowDefinition)
173
- ;(ruleEvaluator.evaluateConditions as jest.Mock).mockResolvedValue(true)
174
-
175
- const result = await transitionHandler.evaluateTransition(
176
- mockEm,
177
- mockInstance,
178
- 'step-1',
179
- 'step-2',
180
- { workflowContext: { approved: true } }
181
- )
182
-
183
- expect(result.isValid).toBe(true)
184
- expect(ruleEvaluator.evaluateConditions).toHaveBeenCalled()
185
- })
186
-
187
- test('should return false when inline condition fails', async () => {
188
- const definitionWithCondition = {
189
- ...mockDefinition,
190
- definition: {
191
- ...mockDefinition.definition,
192
- transitions: [
193
- {
194
- fromStepId: 'step-1',
195
- toStepId: 'step-2',
196
- condition: {
197
- operator: 'equals',
198
- field: 'approved',
199
- value: true,
200
- },
201
- },
202
- ],
203
- },
204
- }
205
-
206
- mockEm.findOne.mockResolvedValue(definitionWithCondition as WorkflowDefinition)
207
- ;(ruleEvaluator.evaluateConditions as jest.Mock).mockResolvedValue(false)
208
-
209
- const result = await transitionHandler.evaluateTransition(
210
- mockEm,
211
- mockInstance,
212
- 'step-1',
213
- 'step-2',
214
- { workflowContext: { approved: false } }
215
- )
216
-
217
- expect(result.isValid).toBe(false)
218
- expect(result.reason).toContain('evaluated to false')
219
- })
220
-
221
- test('should auto-select first valid transition when toStepId not provided', async () => {
222
- mockEm.findOne.mockResolvedValue(mockDefinition)
223
-
224
- const result = await transitionHandler.evaluateTransition(
225
- mockEm,
226
- mockInstance,
227
- 'step-1',
228
- undefined, // No target step specified
229
- { workflowContext: {} }
230
- )
231
-
232
- expect(result.isValid).toBe(true)
233
- expect(result.transition).toBeDefined()
234
- expect(result.transition.fromStepId).toBe('step-1')
235
- expect(result.transition.toStepId).toBe('step-2')
236
- })
237
-
238
- test('should return false when no transitions available from step', async () => {
239
- mockEm.findOne.mockResolvedValue(mockDefinition)
240
-
241
- const result = await transitionHandler.evaluateTransition(
242
- mockEm,
243
- mockInstance,
244
- 'non-existent-step',
245
- undefined,
246
- { workflowContext: {} }
247
- )
248
-
249
- expect(result.isValid).toBe(false)
250
- expect(result.reason).toContain('No transitions available')
251
- })
252
-
253
- test('should return false when no valid transitions found (all conditions fail)', async () => {
254
- const definitionWithConditions = {
255
- ...mockDefinition,
256
- definition: {
257
- ...mockDefinition.definition,
258
- transitions: [
259
- {
260
- fromStepId: 'step-1',
261
- toStepId: 'step-2',
262
- condition: { operator: 'equals', field: 'approved', value: true },
263
- },
264
- {
265
- fromStepId: 'step-1',
266
- toStepId: 'end',
267
- condition: { operator: 'equals', field: 'rejected', value: true },
268
- },
269
- ],
270
- },
271
- }
272
-
273
- mockEm.findOne.mockResolvedValue(definitionWithConditions as WorkflowDefinition)
274
- ;(ruleEvaluator.evaluateConditions as jest.Mock).mockResolvedValue(false)
275
-
276
- const result = await transitionHandler.evaluateTransition(
277
- mockEm,
278
- mockInstance,
279
- 'step-1',
280
- undefined,
281
- { workflowContext: {} }
282
- )
283
-
284
- expect(result.isValid).toBe(false)
285
- expect(result.reason).toContain('No valid transitions found')
286
- })
287
-
288
- test('should handle evaluation errors gracefully', async () => {
289
- mockEm.findOne.mockRejectedValue(new Error('Database error'))
290
-
291
- const result = await transitionHandler.evaluateTransition(
292
- mockEm,
293
- mockInstance,
294
- 'step-1',
295
- 'step-2',
296
- { workflowContext: {} }
297
- )
298
-
299
- expect(result.isValid).toBe(false)
300
- expect(result.reason).toContain('evaluation error')
301
- })
302
- })
303
-
304
- // ============================================================================
305
- // findValidTransitions Tests
306
- // ============================================================================
307
-
308
- describe('findValidTransitions', () => {
309
- test('should find all valid transitions from a step', async () => {
310
- mockEm.findOne.mockResolvedValue(mockDefinition)
311
-
312
- const results = await transitionHandler.findValidTransitions(
313
- mockEm,
314
- mockInstance,
315
- 'step-1',
316
- { workflowContext: {} }
317
- )
318
-
319
- expect(results).toHaveLength(1)
320
- expect(results[0].isValid).toBe(true)
321
- expect(results[0].transition?.toStepId).toBe('step-2')
322
- })
323
-
324
- test('should return empty array if workflow definition not found', async () => {
325
- mockEm.findOne.mockResolvedValue(null)
326
-
327
- const results = await transitionHandler.findValidTransitions(
328
- mockEm,
329
- mockInstance,
330
- 'step-1',
331
- { workflowContext: {} }
332
- )
333
-
334
- expect(results).toEqual([])
335
- })
336
-
337
- test('should filter out invalid transitions (condition fails)', async () => {
338
- const definitionWithMultipleTransitions = {
339
- ...mockDefinition,
340
- definition: {
341
- ...mockDefinition.definition,
342
- transitions: [
343
- {
344
- fromStepId: 'step-1',
345
- toStepId: 'step-2',
346
- condition: { operator: 'equals', field: 'approved', value: true },
347
- },
348
- {
349
- fromStepId: 'step-1',
350
- toStepId: 'end',
351
- condition: { operator: 'equals', field: 'rejected', value: true },
352
- },
353
- ],
354
- },
355
- }
356
-
357
- mockEm.findOne.mockResolvedValue(definitionWithMultipleTransitions as WorkflowDefinition)
358
-
359
- // First call evaluates to true (approved), second call evaluates to false (rejected)
360
- ;(ruleEvaluator.evaluateConditions as jest.Mock)
361
- .mockResolvedValueOnce(true)
362
- .mockResolvedValueOnce(false)
363
-
364
- const results = await transitionHandler.findValidTransitions(
365
- mockEm,
366
- mockInstance,
367
- 'step-1',
368
- { workflowContext: { approved: true } }
369
- )
370
-
371
- expect(results).toHaveLength(2)
372
- expect(results[0].isValid).toBe(true)
373
- expect(results[1].isValid).toBe(false)
374
- })
375
-
376
- test('should return empty array if no transitions from step', async () => {
377
- mockEm.findOne.mockResolvedValue(mockDefinition)
378
-
379
- const results = await transitionHandler.findValidTransitions(
380
- mockEm,
381
- mockInstance,
382
- 'non-existent-step',
383
- { workflowContext: {} }
384
- )
385
-
386
- expect(results).toEqual([])
387
- })
388
-
389
- test('should handle errors gracefully', async () => {
390
- mockEm.findOne.mockRejectedValue(new Error('Database error'))
391
-
392
- const results = await transitionHandler.findValidTransitions(
393
- mockEm,
394
- mockInstance,
395
- 'step-1',
396
- { workflowContext: {} }
397
- )
398
-
399
- expect(results).toEqual([])
400
- })
401
- })
402
-
403
- // ============================================================================
404
- // executeTransition Tests
405
- // ============================================================================
406
-
407
- describe('executeTransition', () => {
408
- test('should execute valid transition successfully', async () => {
409
- mockEm.findOne.mockReset()
410
- mockEm.findOne
411
- .mockResolvedValueOnce(mockDefinition) // 1. evaluateTransition
412
- .mockResolvedValueOnce(mockDefinition) // 2. evaluatePreConditions
413
- .mockResolvedValueOnce(mockDefinition) // 3. evaluatePostConditions
414
- .mockResolvedValueOnce(mockDefinition) // 4. Additional call
415
- .mockResolvedValueOnce(mockDefinition) // 5. Additional call
416
- .mockResolvedValue(mockDefinition) // Fallback for any additional calls
417
-
418
- ;(ruleEngine.executeRules as jest.Mock)
419
- .mockResolvedValueOnce({
420
- allowed: true,
421
- executedRules: [],
422
- totalExecutionTime: 10,
423
- })
424
- .mockResolvedValueOnce({
425
- allowed: true,
426
- executedRules: [],
427
- totalExecutionTime: 5,
428
- })
429
-
430
- mockEm.create.mockReturnValue({} as any)
431
-
432
- const result = await transitionHandler.executeTransition(
433
- mockEm,
434
- mockContainer,
435
- mockInstance,
436
- 'step-1',
437
- 'step-2',
438
- { workflowContext: {} }
439
- )
440
-
441
- expect(result.success).toBe(true)
442
- expect(result.nextStepId).toBe('step-2')
443
- expect(result.conditionsEvaluated?.preConditions).toBe(true)
444
- expect(result.conditionsEvaluated?.postConditions).toBe(true)
445
- expect(mockEm.flush).toHaveBeenCalled()
446
- })
447
-
448
- test('should reject transition if evaluation fails', async () => {
449
- mockEm.findOne.mockResolvedValue(null) // Definition not found
450
-
451
- const result = await transitionHandler.executeTransition(
452
- mockEm,
453
- mockContainer,
454
- mockInstance,
455
- 'step-1',
456
- 'step-2',
457
- { workflowContext: {} }
458
- )
459
-
460
- expect(result.success).toBe(false)
461
- expect(result.error).toContain('not found')
462
- })
463
-
464
- test('should reject transition if pre-conditions fail', async () => {
465
- // Create a definition with preConditions
466
- const definitionWithPreConditions = {
467
- ...mockDefinition,
468
- definition: {
469
- ...mockDefinition.definition,
470
- transitions: [
471
- { fromStepId: 'start', toStepId: 'step-1' },
472
- {
473
- fromStepId: 'step-1',
474
- toStepId: 'step-2',
475
- preConditions: [{ ruleId: 'test-guard-rule', required: true }],
476
- },
477
- { fromStepId: 'step-2', toStepId: 'end' },
478
- ],
479
- },
480
- }
481
-
482
- mockEm.findOne
483
- .mockResolvedValueOnce(definitionWithPreConditions) // evaluateTransition
484
- .mockResolvedValueOnce(definitionWithPreConditions) // evaluatePreConditions
485
-
486
- ;(ruleEngine.executeRuleByRuleId as jest.Mock).mockResolvedValueOnce({
487
- success: false,
488
- ruleId: 'test-guard-rule',
489
- ruleName: 'Test Guard Rule',
490
- conditionResult: false,
491
- actionsExecuted: null,
492
- executionTime: 10,
493
- error: undefined,
494
- })
495
-
496
- mockEm.create.mockReturnValue({} as any)
497
-
498
- const result = await transitionHandler.executeTransition(
499
- mockEm,
500
- mockContainer,
501
- mockInstance,
502
- 'step-1',
503
- 'step-2',
504
- { workflowContext: {} }
505
- )
506
-
507
- expect(result.success).toBe(false)
508
- expect(result.error).toContain('Pre-conditions failed')
509
- expect(result.conditionsEvaluated?.preConditions).toBe(false)
510
- expect(mockEm.persistAndFlush).toHaveBeenCalled() // Rejection event logged
511
- })
512
-
513
- test('should log transition rejection event', async () => {
514
- // Create a definition with preConditions
515
- const definitionWithPreConditions = {
516
- ...mockDefinition,
517
- definition: {
518
- ...mockDefinition.definition,
519
- transitions: [
520
- { fromStepId: 'start', toStepId: 'step-1' },
521
- {
522
- fromStepId: 'step-1',
523
- toStepId: 'step-2',
524
- preConditions: [{ ruleId: 'test-guard-rule', required: true }],
525
- },
526
- { fromStepId: 'step-2', toStepId: 'end' },
527
- ],
528
- },
529
- }
530
-
531
- mockEm.findOne
532
- .mockResolvedValueOnce(definitionWithPreConditions)
533
- .mockResolvedValueOnce(definitionWithPreConditions)
534
-
535
- ;(ruleEngine.executeRuleByRuleId as jest.Mock).mockResolvedValueOnce({
536
- success: false,
537
- ruleId: 'test-guard-rule',
538
- ruleName: 'Test Guard Rule',
539
- conditionResult: false,
540
- actionsExecuted: null,
541
- executionTime: 10,
542
- error: undefined,
543
- })
544
-
545
- mockEm.create.mockReturnValue({} as any)
546
-
547
- await transitionHandler.executeTransition(
548
- mockEm,
549
- mockContainer,
550
- mockInstance,
551
- 'step-1',
552
- 'step-2',
553
- { workflowContext: {}, userId: 'user-123' }
554
- )
555
-
556
- expect(mockEm.create).toHaveBeenCalledWith(
557
- WorkflowEvent,
558
- expect.objectContaining({
559
- eventType: 'TRANSITION_REJECTED',
560
- eventData: expect.objectContaining({
561
- fromStepId: 'step-1',
562
- toStepId: 'step-2',
563
- reason: 'Pre-conditions failed',
564
- }),
565
- })
566
- )
567
- })
568
-
569
- test('should execute transition even if post-conditions fail (warning only)', async () => {
570
- // Create a definition with postConditions
571
- const definitionWithPostConditions = {
572
- ...mockDefinition,
573
- definition: {
574
- ...mockDefinition.definition,
575
- transitions: [
576
- { fromStepId: 'start', toStepId: 'step-1' },
577
- {
578
- fromStepId: 'step-1',
579
- toStepId: 'step-2',
580
- postConditions: [{ ruleId: 'test-post-rule', required: true }],
581
- },
582
- { fromStepId: 'step-2', toStepId: 'end' },
583
- ],
584
- },
585
- }
586
-
587
- mockEm.findOne.mockReset()
588
- mockEm.findOne.mockResolvedValue(definitionWithPostConditions)
589
-
590
- // Post-condition fails
591
- ;(ruleEngine.executeRuleByRuleId as jest.Mock).mockResolvedValueOnce({
592
- success: false,
593
- ruleId: 'test-post-rule',
594
- ruleName: 'Test Post Rule',
595
- conditionResult: false,
596
- actionsExecuted: null,
597
- executionTime: 5,
598
- error: undefined,
599
- })
600
-
601
- mockEm.create.mockReturnValue({} as any)
602
-
603
- const result = await transitionHandler.executeTransition(
604
- mockEm,
605
- mockContainer,
606
- mockInstance,
607
- 'step-1',
608
- 'step-2',
609
- { workflowContext: {} }
610
- )
611
-
612
- // Transition should succeed despite post-condition failure
613
- expect(result.success).toBe(true)
614
- expect(result.nextStepId).toBe('step-2')
615
- expect(result.conditionsEvaluated?.postConditions).toBe(false)
616
- expect(mockEm.flush).toHaveBeenCalled()
617
- })
618
-
619
- test('should log successful transition event', async () => {
620
- mockEm.findOne.mockReset()
621
- mockEm.findOne
622
- .mockResolvedValueOnce(mockDefinition)
623
- .mockResolvedValueOnce(mockDefinition)
624
- .mockResolvedValueOnce(mockDefinition)
625
- .mockResolvedValueOnce(mockDefinition)
626
- .mockResolvedValueOnce(mockDefinition)
627
- .mockResolvedValue(mockDefinition)
628
-
629
- ;(ruleEngine.executeRules as jest.Mock)
630
- .mockResolvedValueOnce({
631
- allowed: true,
632
- executedRules: [],
633
- totalExecutionTime: 10,
634
- })
635
- .mockResolvedValueOnce({
636
- allowed: true,
637
- executedRules: [],
638
- totalExecutionTime: 5,
639
- })
640
-
641
- mockEm.create.mockReturnValue({} as any)
642
-
643
- await transitionHandler.executeTransition(
644
- mockEm,
645
- mockContainer,
646
- mockInstance,
647
- 'step-2',
648
- 'end',
649
- { workflowContext: {}, userId: 'user-123' }
650
- )
651
-
652
- expect(mockEm.create).toHaveBeenCalledWith(
653
- WorkflowEvent,
654
- expect.objectContaining({
655
- eventType: 'TRANSITION_EXECUTED',
656
- eventData: expect.objectContaining({
657
- fromStepId: 'step-2',
658
- toStepId: 'end',
659
- transitionId: 'step-2-to-end',
660
- transitionName: 'Complete',
661
- preConditionsPassed: true,
662
- postConditionsPassed: true,
663
- }),
664
- })
665
- )
666
- })
667
-
668
- test('should update workflow instance currentStepId', async () => {
669
- mockEm.findOne
670
- .mockResolvedValueOnce(mockDefinition)
671
- .mockResolvedValueOnce(mockDefinition)
672
- .mockResolvedValueOnce(mockDefinition)
673
-
674
- ;(ruleEngine.executeRules as jest.Mock)
675
- .mockResolvedValueOnce({
676
- allowed: true,
677
- executedRules: [],
678
- totalExecutionTime: 10,
679
- })
680
- .mockResolvedValueOnce({
681
- allowed: true,
682
- executedRules: [],
683
- totalExecutionTime: 5,
684
- })
685
-
686
- mockEm.create.mockReturnValue({} as any)
687
-
688
- await transitionHandler.executeTransition(
689
- mockEm,
690
- mockContainer,
691
- mockInstance,
692
- 'step-1',
693
- 'step-2',
694
- { workflowContext: {} }
695
- )
696
-
697
- expect(mockInstance.currentStepId).toBe('step-2')
698
- expect(mockEm.flush).toHaveBeenCalled()
699
- })
700
-
701
- test('should update workflow context', async () => {
702
- mockEm.findOne
703
- .mockResolvedValueOnce(mockDefinition)
704
- .mockResolvedValueOnce(mockDefinition)
705
- .mockResolvedValueOnce(mockDefinition)
706
-
707
- ;(ruleEngine.executeRules as jest.Mock)
708
- .mockResolvedValueOnce({
709
- allowed: true,
710
- executedRules: [],
711
- totalExecutionTime: 10,
712
- })
713
- .mockResolvedValueOnce({
714
- allowed: true,
715
- executedRules: [],
716
- totalExecutionTime: 5,
717
- })
718
-
719
- mockEm.create.mockReturnValue({} as any)
720
-
721
- await transitionHandler.executeTransition(
722
- mockEm,
723
- mockContainer,
724
- mockInstance,
725
- 'step-1',
726
- 'step-2',
727
- { workflowContext: { newField: 'value' } }
728
- )
729
-
730
- expect(mockInstance.context).toEqual({
731
- initiatedBy: 'user@example.com',
732
- newField: 'value',
733
- })
734
- expect(mockEm.flush).toHaveBeenCalled()
735
- })
736
-
737
- test('should handle execution errors gracefully', async () => {
738
- mockEm.findOne.mockRejectedValue(new Error('Database error'))
739
-
740
- const result = await transitionHandler.executeTransition(
741
- mockEm,
742
- mockContainer,
743
- mockInstance,
744
- 'step-1',
745
- 'step-2',
746
- { workflowContext: {} }
747
- )
748
-
749
- expect(result.success).toBe(false)
750
- expect(result.error).toContain('evaluation error')
751
- // Note: No event is logged when evaluation fails early
752
- })
753
- })
754
-
755
- // ============================================================================
756
- // Business Rules Integration Tests
757
- // ============================================================================
758
-
759
- describe('Business Rules Integration', () => {
760
- test('should call rule engine for pre-conditions with correct entityType', async () => {
761
- // Create a definition with preConditions
762
- const definitionWithPreConditions = {
763
- ...mockDefinition,
764
- definition: {
765
- ...mockDefinition.definition,
766
- transitions: [
767
- { fromStepId: 'start', toStepId: 'step-1' },
768
- {
769
- fromStepId: 'step-1',
770
- toStepId: 'step-2',
771
- preConditions: [{ ruleId: 'test-guard-rule', required: true }],
772
- },
773
- { fromStepId: 'step-2', toStepId: 'end' },
774
- ],
775
- },
776
- }
777
-
778
- mockEm.findOne.mockResolvedValue(definitionWithPreConditions)
779
-
780
- ;(ruleEngine.executeRuleByRuleId as jest.Mock).mockResolvedValueOnce({
781
- success: true,
782
- ruleId: 'test-guard-rule',
783
- ruleName: 'Test Guard Rule',
784
- conditionResult: true,
785
- actionsExecuted: null,
786
- executionTime: 10,
787
- })
788
-
789
- mockEm.create.mockReturnValue({} as any)
790
-
791
- await transitionHandler.executeTransition(
792
- mockEm,
793
- mockContainer,
794
- mockInstance,
795
- 'step-1',
796
- 'step-2',
797
- { workflowContext: {} }
798
- )
799
-
800
- expect(ruleEngine.executeRuleByRuleId).toHaveBeenCalledWith(
801
- mockEm,
802
- expect.objectContaining({
803
- ruleId: 'test-guard-rule',
804
- entityType: 'workflow:simple-approval:transition',
805
- eventType: 'pre_transition',
806
- data: expect.objectContaining({
807
- fromStepId: 'step-1',
808
- toStepId: 'step-2',
809
- }),
810
- })
811
- )
812
- })
813
-
814
- test('should call rule engine for post-conditions with correct eventType', async () => {
815
- // Create a definition with postConditions
816
- const definitionWithPostConditions = {
817
- ...mockDefinition,
818
- definition: {
819
- ...mockDefinition.definition,
820
- transitions: [
821
- { fromStepId: 'start', toStepId: 'step-1' },
822
- {
823
- fromStepId: 'step-1',
824
- toStepId: 'step-2',
825
- postConditions: [{ ruleId: 'test-post-rule', required: true }],
826
- },
827
- { fromStepId: 'step-2', toStepId: 'end' },
828
- ],
829
- },
830
- }
831
-
832
- mockEm.findOne.mockReset()
833
- mockEm.findOne.mockResolvedValue(definitionWithPostConditions)
834
-
835
- ;(ruleEngine.executeRuleByRuleId as jest.Mock).mockResolvedValueOnce({
836
- success: true,
837
- ruleId: 'test-post-rule',
838
- ruleName: 'Test Post Rule',
839
- conditionResult: true,
840
- actionsExecuted: null,
841
- executionTime: 5,
842
- })
843
-
844
- mockEm.create.mockReturnValue({} as any)
845
-
846
- await transitionHandler.executeTransition(
847
- mockEm,
848
- mockContainer,
849
- mockInstance,
850
- 'step-1',
851
- 'step-2',
852
- { workflowContext: {} }
853
- )
854
-
855
- // Check call to executeRuleByRuleId for post-conditions
856
- expect(ruleEngine.executeRuleByRuleId).toHaveBeenCalledWith(
857
- mockEm,
858
- expect.objectContaining({
859
- ruleId: 'test-post-rule',
860
- entityType: 'workflow:simple-approval:transition',
861
- eventType: 'post_transition',
862
- })
863
- )
864
- })
865
-
866
- test('should pass workflow context and trigger data to rule engine', async () => {
867
- // Create a definition with preConditions
868
- const definitionWithPreConditions = {
869
- ...mockDefinition,
870
- definition: {
871
- ...mockDefinition.definition,
872
- transitions: [
873
- { fromStepId: 'start', toStepId: 'step-1' },
874
- {
875
- fromStepId: 'step-1',
876
- toStepId: 'step-2',
877
- preConditions: [{ ruleId: 'test-guard-rule', required: true }],
878
- },
879
- { fromStepId: 'step-2', toStepId: 'end' },
880
- ],
881
- },
882
- }
883
-
884
- mockEm.findOne.mockResolvedValue(definitionWithPreConditions)
885
-
886
- ;(ruleEngine.executeRuleByRuleId as jest.Mock).mockResolvedValueOnce({
887
- success: true,
888
- ruleId: 'test-guard-rule',
889
- ruleName: 'Test Guard Rule',
890
- conditionResult: true,
891
- actionsExecuted: null,
892
- executionTime: 10,
893
- })
894
-
895
- mockEm.create.mockReturnValue({} as any)
896
-
897
- const contextData = { approved: true, comment: 'Looks good' }
898
- const triggerData = { source: 'api' }
899
-
900
- await transitionHandler.executeTransition(
901
- mockEm,
902
- mockContainer,
903
- mockInstance,
904
- 'step-1',
905
- 'step-2',
906
- {
907
- workflowContext: contextData,
908
- triggerData,
909
- userId: 'user-123',
910
- }
911
- )
912
-
913
- expect(ruleEngine.executeRuleByRuleId).toHaveBeenCalledWith(
914
- mockEm,
915
- expect.objectContaining({
916
- data: expect.objectContaining({
917
- workflowContext: expect.objectContaining(contextData),
918
- triggerData,
919
- }),
920
- executedBy: 'user-123',
921
- })
922
- )
923
- })
924
- })
925
- })