@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,728 +0,0 @@
1
- import {
2
- executeAction,
3
- executeActions,
4
- interpolateMessage,
5
- type Action,
6
- type ActionContext,
7
- type AllowTransitionResult,
8
- type BlockTransitionResult,
9
- type LogResult,
10
- type ShowErrorResult,
11
- type ShowWarningResult,
12
- type ShowInfoResult,
13
- type NotifyResult,
14
- type SetFieldResult,
15
- type CallWebhookResult,
16
- type EmitEventResult,
17
- } from '../action-executor'
18
-
19
- describe('Action Executor', () => {
20
- // Type-safe result extractors
21
- const asAllowTransition = (result: any) => result.result as AllowTransitionResult
22
- const asBlockTransition = (result: any) => result.result as BlockTransitionResult
23
- const asLog = (result: any) => result.result as LogResult
24
- const asShowError = (result: any) => result.result as ShowErrorResult
25
- const asShowWarning = (result: any) => result.result as ShowWarningResult
26
- const asShowInfo = (result: any) => result.result as ShowInfoResult
27
- const asNotify = (result: any) => result.result as NotifyResult
28
- const asSetField = (result: any) => result.result as SetFieldResult
29
- const asCallWebhook = (result: any) => result.result as CallWebhookResult
30
- const asEmitEvent = (result: any) => result.result as EmitEventResult
31
-
32
- const baseContext: ActionContext = {
33
- user: {
34
- id: 'user-123',
35
- email: 'test@example.com',
36
- role: 'admin',
37
- },
38
- tenant: {
39
- id: 'tenant-456',
40
- },
41
- organization: {
42
- id: 'org-789',
43
- },
44
- entityType: 'WorkOrder',
45
- entityId: 'wo-001',
46
- eventType: 'beforeStatusChange',
47
- data: {
48
- status: 'RELEASED',
49
- priority: 'HIGH',
50
- workOrderNumber: 'WO-12345',
51
- },
52
- ruleId: 'RULE-001',
53
- ruleName: 'Work Order Guard',
54
- }
55
-
56
- describe('executeAction', () => {
57
- describe('ALLOW_TRANSITION', () => {
58
- it('should execute ALLOW_TRANSITION action', async () => {
59
- const action: Action = {
60
- type: 'ALLOW_TRANSITION',
61
- config: {
62
- message: 'Transition allowed',
63
- },
64
- }
65
-
66
- const result = await executeAction(action, baseContext)
67
-
68
- expect(result.success).toBe(true)
69
- expect(result.result).toEqual({
70
- type: 'ALLOW_TRANSITION',
71
- allowed: true,
72
- message: 'Transition allowed',
73
- })
74
- expect(result.executionTime).toBeGreaterThanOrEqual(0)
75
- })
76
-
77
- it('should use default message if not provided', async () => {
78
- const action: Action = {
79
- type: 'ALLOW_TRANSITION',
80
- }
81
-
82
- const result = await executeAction(action, baseContext)
83
-
84
- expect(result.success).toBe(true)
85
- expect((result.result as AllowTransitionResult).message).toBe('Transition allowed')
86
- })
87
-
88
- it('should interpolate message with context', async () => {
89
- const action: Action = {
90
- type: 'ALLOW_TRANSITION',
91
- config: {
92
- message: 'Work order {{data.workOrderNumber}} can proceed',
93
- },
94
- }
95
-
96
- const result = await executeAction(action, baseContext)
97
-
98
- expect((result.result as AllowTransitionResult).message).toBe('Work order WO-12345 can proceed')
99
- })
100
- })
101
-
102
- describe('BLOCK_TRANSITION', () => {
103
- it('should execute BLOCK_TRANSITION action', async () => {
104
- const action: Action = {
105
- type: 'BLOCK_TRANSITION',
106
- config: {
107
- message: 'Transition blocked',
108
- },
109
- }
110
-
111
- const result = await executeAction(action, baseContext)
112
-
113
- expect(result.success).toBe(true)
114
- expect(result.result).toEqual({
115
- type: 'BLOCK_TRANSITION',
116
- allowed: false,
117
- message: 'Transition blocked',
118
- })
119
- })
120
-
121
- it('should use default message if not provided', async () => {
122
- const action: Action = {
123
- type: 'BLOCK_TRANSITION',
124
- }
125
-
126
- const result = await executeAction(action, baseContext)
127
-
128
- expect((result.result as BlockTransitionResult)!.message).toBe('Transition blocked')
129
- })
130
- })
131
-
132
- describe('LOG', () => {
133
- it('should execute LOG action with info level', async () => {
134
- const action: Action = {
135
- type: 'LOG',
136
- config: {
137
- level: 'info',
138
- message: 'Rule executed successfully',
139
- },
140
- }
141
-
142
- const result = await executeAction(action, baseContext)
143
-
144
- expect(result.success).toBe(true)
145
- expect(result.result!.type).toBe('LOG')
146
- expect((result.result as LogResult)!.level).toBe('info')
147
- expect((result.result as LogResult)!.message).toBe('Rule executed successfully')
148
- expect((result.result as LogResult)!.timestamp).toMatch(/^\d{4}-\d{2}-\d{2}T/)
149
- })
150
-
151
- it('should default to info level', async () => {
152
- const action: Action = {
153
- type: 'LOG',
154
- config: {
155
- message: 'Log message',
156
- },
157
- }
158
-
159
- const result = await executeAction(action, baseContext)
160
-
161
- expect((result.result as LogResult)!.level).toBe('info')
162
- })
163
-
164
- it('should support different log levels', async () => {
165
- const levels = ['debug', 'info', 'warn', 'error']
166
-
167
- for (const level of levels) {
168
- const action: Action = {
169
- type: 'LOG',
170
- config: {
171
- level,
172
- message: `Log at ${level} level`,
173
- },
174
- }
175
-
176
- const result = await executeAction(action, baseContext)
177
-
178
- expect(result.success).toBe(true)
179
- expect((result.result as LogResult)!.level).toBe(level)
180
- }
181
- })
182
- })
183
-
184
- describe('SHOW_ERROR', () => {
185
- it('should execute SHOW_ERROR action', async () => {
186
- const action: Action = {
187
- type: 'SHOW_ERROR',
188
- config: {
189
- message: 'An error occurred',
190
- },
191
- }
192
-
193
- const result = await executeAction(action, baseContext)
194
-
195
- expect(result.success).toBe(true)
196
- expect(result.result).toEqual({
197
- type: 'SHOW_ERROR',
198
- severity: 'error',
199
- message: 'An error occurred',
200
- })
201
- })
202
- })
203
-
204
- describe('SHOW_WARNING', () => {
205
- it('should execute SHOW_WARNING action', async () => {
206
- const action: Action = {
207
- type: 'SHOW_WARNING',
208
- config: {
209
- message: 'Warning message',
210
- },
211
- }
212
-
213
- const result = await executeAction(action, baseContext)
214
-
215
- expect(result.success).toBe(true)
216
- expect(result.result).toEqual({
217
- type: 'SHOW_WARNING',
218
- severity: 'warning',
219
- message: 'Warning message',
220
- })
221
- })
222
- })
223
-
224
- describe('SHOW_INFO', () => {
225
- it('should execute SHOW_INFO action', async () => {
226
- const action: Action = {
227
- type: 'SHOW_INFO',
228
- config: {
229
- message: 'Info message',
230
- },
231
- }
232
-
233
- const result = await executeAction(action, baseContext)
234
-
235
- expect(result.success).toBe(true)
236
- expect(result.result).toEqual({
237
- type: 'SHOW_INFO',
238
- severity: 'info',
239
- message: 'Info message',
240
- })
241
- })
242
- })
243
-
244
- describe('NOTIFY', () => {
245
- it('should execute NOTIFY action', async () => {
246
- const action: Action = {
247
- type: 'NOTIFY',
248
- config: {
249
- recipients: ['supervisor@example.com', 'manager@example.com'],
250
- subject: 'Work Order Update',
251
- message: 'Work order status changed',
252
- template: 'work_order_notification',
253
- },
254
- }
255
-
256
- const result = await executeAction(action, baseContext)
257
-
258
- expect(result.success).toBe(true)
259
- expect(result.result).toEqual({
260
- type: 'NOTIFY',
261
- recipients: ['supervisor@example.com', 'manager@example.com'],
262
- subject: 'Work Order Update',
263
- message: 'Work order status changed',
264
- template: 'work_order_notification',
265
- })
266
- })
267
-
268
- it('should interpolate subject and message', async () => {
269
- const action: Action = {
270
- type: 'NOTIFY',
271
- config: {
272
- recipients: ['supervisor@example.com'],
273
- subject: 'Work Order {{data.workOrderNumber}}',
274
- message: 'Status changed to {{data.status}}',
275
- },
276
- }
277
-
278
- const result = await executeAction(action, baseContext)
279
-
280
- expect((result.result as NotifyResult)!.subject).toBe('Work Order WO-12345')
281
- expect((result.result as NotifyResult)!.message).toBe('Status changed to RELEASED')
282
- })
283
-
284
- it('should throw error if recipients array is empty', async () => {
285
- const action: Action = {
286
- type: 'NOTIFY',
287
- config: {
288
- message: 'Notification',
289
- },
290
- }
291
-
292
- const result = await executeAction(action, baseContext)
293
-
294
- expect(result.success).toBe(false)
295
- expect(result.error).toContain('at least one recipient')
296
- })
297
-
298
- it('should throw error if recipients is not an array', async () => {
299
- const action: Action = {
300
- type: 'NOTIFY',
301
- config: {
302
- recipients: 'not-an-array',
303
- message: 'Notification',
304
- },
305
- }
306
-
307
- const result = await executeAction(action, baseContext)
308
-
309
- expect(result.success).toBe(false)
310
- expect(result.error).toContain('recipients to be an array')
311
- })
312
- })
313
-
314
- describe('SET_FIELD', () => {
315
- it('should execute SET_FIELD action', async () => {
316
- const action: Action = {
317
- type: 'SET_FIELD',
318
- config: {
319
- field: 'assignedTo',
320
- value: 'user-456',
321
- },
322
- }
323
-
324
- const result = await executeAction(action, baseContext)
325
-
326
- expect(result.success).toBe(true)
327
- expect(result.result).toEqual({
328
- type: 'SET_FIELD',
329
- field: 'assignedTo',
330
- value: 'user-456',
331
- })
332
- })
333
-
334
- it('should resolve special values', async () => {
335
- const action: Action = {
336
- type: 'SET_FIELD',
337
- config: {
338
- field: 'assignedAt',
339
- value: '{{now}}',
340
- },
341
- }
342
-
343
- const result = await executeAction(action, baseContext)
344
-
345
- expect((result.result as SetFieldResult)!.field).toBe('assignedAt')
346
- expect((result.result as SetFieldResult)!.value).toMatch(/^\d{4}-\d{2}-\d{2}T/)
347
- })
348
-
349
- it('should throw error if field is not provided', async () => {
350
- const action: Action = {
351
- type: 'SET_FIELD',
352
- config: {
353
- value: 'some-value',
354
- },
355
- }
356
-
357
- const result = await executeAction(action, baseContext)
358
-
359
- expect(result.success).toBe(false)
360
- expect(result.error).toContain('requires a field name')
361
- })
362
-
363
- it('should throw error if field is empty string', async () => {
364
- const action: Action = {
365
- type: 'SET_FIELD',
366
- config: {
367
- field: ' ',
368
- value: 'some-value',
369
- },
370
- }
371
-
372
- const result = await executeAction(action, baseContext)
373
-
374
- expect(result.success).toBe(false)
375
- expect(result.error).toContain('non-empty field name')
376
- })
377
- })
378
-
379
- describe('CALL_WEBHOOK', () => {
380
- it('should execute CALL_WEBHOOK action', async () => {
381
- const action: Action = {
382
- type: 'CALL_WEBHOOK',
383
- config: {
384
- url: 'https://api.example.com/webhook',
385
- method: 'POST',
386
- headers: {
387
- 'Content-Type': 'application/json',
388
- },
389
- body: {
390
- event: 'work_order_updated',
391
- },
392
- },
393
- }
394
-
395
- const result = await executeAction(action, baseContext)
396
-
397
- expect(result.success).toBe(true)
398
- expect(result.result).toEqual({
399
- type: 'CALL_WEBHOOK',
400
- url: 'https://api.example.com/webhook',
401
- method: 'POST',
402
- headers: {
403
- 'Content-Type': 'application/json',
404
- },
405
- body: {
406
- event: 'work_order_updated',
407
- },
408
- status: 'pending',
409
- })
410
- })
411
-
412
- it('should default to POST method', async () => {
413
- const action: Action = {
414
- type: 'CALL_WEBHOOK',
415
- config: {
416
- url: 'https://api.example.com/webhook',
417
- },
418
- }
419
-
420
- const result = await executeAction(action, baseContext)
421
-
422
- expect((result.result as CallWebhookResult)!.method).toBe('POST')
423
- })
424
-
425
- it('should interpolate URL', async () => {
426
- const action: Action = {
427
- type: 'CALL_WEBHOOK',
428
- config: {
429
- url: 'https://api.example.com/webhook/{{entityId}}',
430
- },
431
- }
432
-
433
- const result = await executeAction(action, baseContext)
434
-
435
- expect((result.result as CallWebhookResult)!.url).toBe('https://api.example.com/webhook/wo-001')
436
- })
437
-
438
- it('should throw error if URL is empty', async () => {
439
- const action: Action = {
440
- type: 'CALL_WEBHOOK',
441
- config: {
442
- url: '',
443
- },
444
- }
445
-
446
- const result = await executeAction(action, baseContext)
447
-
448
- expect(result.success).toBe(false)
449
- expect(result.error).toContain('non-empty URL')
450
- })
451
-
452
- it('should throw error if HTTP method is invalid', async () => {
453
- const action: Action = {
454
- type: 'CALL_WEBHOOK',
455
- config: {
456
- url: 'https://api.example.com/webhook',
457
- method: 'INVALID',
458
- },
459
- }
460
-
461
- const result = await executeAction(action, baseContext)
462
-
463
- expect(result.success).toBe(false)
464
- expect(result.error).toContain('valid HTTP method')
465
- })
466
-
467
- it('should normalize HTTP method to uppercase', async () => {
468
- const action: Action = {
469
- type: 'CALL_WEBHOOK',
470
- config: {
471
- url: 'https://api.example.com/webhook',
472
- method: 'get',
473
- },
474
- }
475
-
476
- const result = await executeAction(action, baseContext)
477
-
478
- expect(result.success).toBe(true)
479
- expect((result.result as CallWebhookResult)!.method).toBe('GET')
480
- })
481
- })
482
-
483
- describe('EMIT_EVENT', () => {
484
- it('should execute EMIT_EVENT action', async () => {
485
- const action: Action = {
486
- type: 'EMIT_EVENT',
487
- config: {
488
- event: 'work_order.status_changed',
489
- payload: {
490
- workOrderId: 'wo-001',
491
- newStatus: 'RELEASED',
492
- },
493
- },
494
- }
495
-
496
- const result = await executeAction(action, baseContext)
497
-
498
- expect(result.success).toBe(true)
499
- expect(result.result).toEqual({
500
- type: 'EMIT_EVENT',
501
- event: 'work_order.status_changed',
502
- payload: {
503
- workOrderId: 'wo-001',
504
- newStatus: 'RELEASED',
505
- },
506
- })
507
- })
508
-
509
- it('should throw error if event name is not provided', async () => {
510
- const action: Action = {
511
- type: 'EMIT_EVENT',
512
- config: {
513
- payload: {},
514
- },
515
- }
516
-
517
- const result = await executeAction(action, baseContext)
518
-
519
- expect(result.success).toBe(false)
520
- expect(result.error).toContain('requires an event name')
521
- })
522
-
523
- it('should throw error if event name is empty string', async () => {
524
- const action: Action = {
525
- type: 'EMIT_EVENT',
526
- config: {
527
- event: ' ',
528
- payload: {},
529
- },
530
- }
531
-
532
- const result = await executeAction(action, baseContext)
533
-
534
- expect(result.success).toBe(false)
535
- expect(result.error).toContain('non-empty event name')
536
- })
537
- })
538
-
539
- describe('Unknown action type', () => {
540
- it('should handle unknown action type', async () => {
541
- const action: Action = {
542
- type: 'UNKNOWN_ACTION',
543
- }
544
-
545
- const result = await executeAction(action, baseContext)
546
-
547
- expect(result.success).toBe(false)
548
- expect(result.error).toContain('Unknown action type')
549
- })
550
- })
551
- })
552
-
553
- describe('executeActions', () => {
554
- it('should execute multiple actions in sequence', async () => {
555
- const actions: Action[] = [
556
- {
557
- type: 'LOG',
558
- config: {
559
- message: 'First action',
560
- },
561
- },
562
- {
563
- type: 'ALLOW_TRANSITION',
564
- config: {
565
- message: 'Allowed',
566
- },
567
- },
568
- {
569
- type: 'NOTIFY',
570
- config: {
571
- recipients: ['user@example.com'],
572
- message: 'Notification',
573
- },
574
- },
575
- ]
576
-
577
- const outcome = await executeActions(actions, baseContext)
578
-
579
- expect(outcome.success).toBe(true)
580
- expect(outcome.results).toHaveLength(3)
581
- expect(outcome.results.every((r) => r.success)).toBe(true)
582
- expect(outcome.totalTime).toBeGreaterThanOrEqual(0)
583
- expect(outcome.errors).toBeUndefined()
584
- })
585
-
586
- it('should continue execution even if one action fails', async () => {
587
- const actions: Action[] = [
588
- {
589
- type: 'LOG',
590
- config: {
591
- message: 'First action',
592
- },
593
- },
594
- {
595
- type: 'SET_FIELD',
596
- config: {
597
- // Missing field - will fail
598
- value: 'some-value',
599
- },
600
- },
601
- {
602
- type: 'LOG',
603
- config: {
604
- message: 'Third action',
605
- },
606
- },
607
- ]
608
-
609
- const outcome = await executeActions(actions, baseContext)
610
-
611
- expect(outcome.success).toBe(false)
612
- expect(outcome.results).toHaveLength(3)
613
- expect(outcome.results[0].success).toBe(true)
614
- expect(outcome.results[1].success).toBe(false)
615
- expect(outcome.results[2].success).toBe(true)
616
- expect(outcome.errors).toBeDefined()
617
- expect(outcome.errors).toHaveLength(1)
618
- })
619
-
620
- it('should collect errors from all failed actions', async () => {
621
- const actions: Action[] = [
622
- {
623
- type: 'UNKNOWN_ACTION_1',
624
- },
625
- {
626
- type: 'UNKNOWN_ACTION_2',
627
- },
628
- ]
629
-
630
- const outcome = await executeActions(actions, baseContext)
631
-
632
- expect(outcome.success).toBe(false)
633
- expect(outcome.errors).toHaveLength(2)
634
- expect(outcome.errors?.[0]).toContain('UNKNOWN_ACTION_1')
635
- expect(outcome.errors?.[1]).toContain('UNKNOWN_ACTION_2')
636
- })
637
-
638
- it('should handle empty actions array', async () => {
639
- const outcome = await executeActions([], baseContext)
640
-
641
- expect(outcome.success).toBe(true)
642
- expect(outcome.results).toHaveLength(0)
643
- expect(outcome.totalTime).toBeGreaterThanOrEqual(0)
644
- })
645
- })
646
-
647
- describe('interpolateMessage', () => {
648
- it('should interpolate single variable', () => {
649
- const result = interpolateMessage('Hello {{user.email}}', baseContext)
650
- expect(result).toBe('Hello test@example.com')
651
- })
652
-
653
- it('should interpolate multiple variables', () => {
654
- const result = interpolateMessage(
655
- 'User {{user.email}} updated {{data.workOrderNumber}}',
656
- baseContext
657
- )
658
- expect(result).toBe('User test@example.com updated WO-12345')
659
- })
660
-
661
- it('should interpolate nested paths', () => {
662
- const result = interpolateMessage('Work order status: {{data.status}}', baseContext)
663
- expect(result).toBe('Work order status: RELEASED')
664
- })
665
-
666
- it('should handle special values', () => {
667
- const result = interpolateMessage('Today is {{today}}', baseContext)
668
- expect(result).toMatch(/^Today is \d{4}-\d{2}-\d{2}$/)
669
- })
670
-
671
- it('should preserve template if value not found', () => {
672
- const result = interpolateMessage('Value: {{nonexistent.field}}', baseContext)
673
- expect(result).toBe('Value: {{nonexistent.field}}')
674
- })
675
-
676
- it('should handle multiple occurrences of same variable', () => {
677
- const result = interpolateMessage(
678
- '{{user.email}} - {{user.email}}',
679
- baseContext
680
- )
681
- expect(result).toBe('test@example.com - test@example.com')
682
- })
683
-
684
- it('should handle empty template', () => {
685
- const result = interpolateMessage('', baseContext)
686
- expect(result).toBe('')
687
- })
688
-
689
- it('should handle template with no variables', () => {
690
- const result = interpolateMessage('Static message', baseContext)
691
- expect(result).toBe('Static message')
692
- })
693
-
694
- it('should handle whitespace in variable names', () => {
695
- const result = interpolateMessage('User: {{ user.email }}', baseContext)
696
- expect(result).toBe('User: test@example.com')
697
- })
698
-
699
- it('should convert non-string values to strings', () => {
700
- const contextWithNumbers = {
701
- ...baseContext,
702
- data: {
703
- ...baseContext.data,
704
- quantity: 42,
705
- },
706
- }
707
-
708
- const result = interpolateMessage('Quantity: {{data.quantity}}', contextWithNumbers)
709
- expect(result).toBe('Quantity: 42')
710
- })
711
-
712
- it('should handle null and undefined gracefully', () => {
713
- const contextWithNulls = {
714
- ...baseContext,
715
- data: {
716
- nullValue: null,
717
- undefinedValue: undefined,
718
- },
719
- }
720
-
721
- const result1 = interpolateMessage('Value: {{data.nullValue}}', contextWithNulls)
722
- expect(result1).toBe('Value: {{data.nullValue}}')
723
-
724
- const result2 = interpolateMessage('Value: {{data.undefinedValue}}', contextWithNulls)
725
- expect(result2).toBe('Value: {{data.undefinedValue}}')
726
- })
727
- })
728
- })