@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,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/modules/translations/__integration__/helpers/translationFixtures.ts"],
4
- "sourcesContent": ["import { type APIRequestContext } from '@playwright/test'\nimport { apiRequest } from '@open-mercato/core/modules/core/__integration__/helpers/api'\n\nexport async function getLocales(\n request: APIRequestContext,\n token: string,\n): Promise<string[]> {\n const response = await apiRequest(request, 'GET', '/api/translations/locales', { token })\n if (!response.ok()) return []\n const body = (await response.json()) as { locales?: string[] }\n return body.locales ?? []\n}\n\nexport async function setLocales(\n request: APIRequestContext,\n token: string,\n locales: string[],\n): Promise<void> {\n await apiRequest(request, 'PUT', '/api/translations/locales', { token, data: { locales } })\n}\n\nexport async function deleteTranslationIfExists(\n request: APIRequestContext,\n token: string | null,\n entityType: string,\n entityId: string | null,\n): Promise<void> {\n if (!token || !entityId) return\n try {\n await apiRequest(request, 'DELETE', `/api/translations/${entityType}/${entityId}`, { token })\n } catch {\n return\n }\n}\n\ntype RoleAclPayload = { features: string[]; isSuperAdmin: boolean; organizations: string[] | null }\n\nasync function findRoleId(\n request: APIRequestContext,\n token: string,\n roleName: string,\n): Promise<string> {\n const response = await apiRequest(request, 'GET', `/api/auth/roles?search=${encodeURIComponent(roleName)}&pageSize=50`, { token })\n const body = (await response.json()) as { items?: Array<{ id: string; name: string }> }\n const role = (body.items ?? []).find((r) => r.name === roleName)\n if (!role) throw new Error(`Role \"${roleName}\" not found`)\n return role.id\n}\n\nasync function getRoleAcl(\n request: APIRequestContext,\n token: string,\n roleId: string,\n): Promise<RoleAclPayload> {\n const response = await apiRequest(request, 'GET', `/api/auth/roles/acl?roleId=${roleId}`, { token })\n const body = (await response.json()) as Partial<RoleAclPayload>\n return {\n features: Array.isArray(body.features) ? body.features : [],\n isSuperAdmin: !!body.isSuperAdmin,\n organizations: body.organizations ?? null,\n }\n}\n\nexport async function ensureRoleFeatures(\n request: APIRequestContext,\n token: string,\n roleName: string,\n requiredFeatures: string[],\n): Promise<string[]> {\n const roleId = await findRoleId(request, token, roleName)\n const acl = await getRoleAcl(request, token, roleId)\n const original = [...acl.features]\n const merged = Array.from(new Set([...acl.features, ...requiredFeatures]))\n if (merged.length !== acl.features.length) {\n await apiRequest(request, 'PUT', '/api/auth/roles/acl', {\n token,\n data: { roleId, features: merged, isSuperAdmin: acl.isSuperAdmin },\n })\n }\n return original\n}\n\nexport async function restoreRoleFeatures(\n request: APIRequestContext,\n token: string,\n roleName: string,\n features: string[],\n): Promise<void> {\n const roleId = await findRoleId(request, token, roleName)\n const acl = await getRoleAcl(request, token, roleId)\n await apiRequest(request, 'PUT', '/api/auth/roles/acl', {\n token,\n data: { roleId, features, isSuperAdmin: acl.isSuperAdmin },\n })\n}\n"],
5
- "mappings": "AACA,SAAS,kBAAkB;AAE3B,eAAsB,WACpB,SACA,OACmB;AACnB,QAAM,WAAW,MAAM,WAAW,SAAS,OAAO,6BAA6B,EAAE,MAAM,CAAC;AACxF,MAAI,CAAC,SAAS,GAAG,EAAG,QAAO,CAAC;AAC5B,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,SAAO,KAAK,WAAW,CAAC;AAC1B;AAEA,eAAsB,WACpB,SACA,OACA,SACe;AACf,QAAM,WAAW,SAAS,OAAO,6BAA6B,EAAE,OAAO,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC5F;AAEA,eAAsB,0BACpB,SACA,OACA,YACA,UACe;AACf,MAAI,CAAC,SAAS,CAAC,SAAU;AACzB,MAAI;AACF,UAAM,WAAW,SAAS,UAAU,qBAAqB,UAAU,IAAI,QAAQ,IAAI,EAAE,MAAM,CAAC;AAAA,EAC9F,QAAQ;AACN;AAAA,EACF;AACF;AAIA,eAAe,WACb,SACA,OACA,UACiB;AACjB,QAAM,WAAW,MAAM,WAAW,SAAS,OAAO,0BAA0B,mBAAmB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;AACjI,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,QAAM,QAAQ,KAAK,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,QAAQ;AAC/D,MAAI,CAAC,KAAM,OAAM,IAAI,MAAM,SAAS,QAAQ,aAAa;AACzD,SAAO,KAAK;AACd;AAEA,eAAe,WACb,SACA,OACA,QACyB;AACzB,QAAM,WAAW,MAAM,WAAW,SAAS,OAAO,8BAA8B,MAAM,IAAI,EAAE,MAAM,CAAC;AACnG,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,SAAO;AAAA,IACL,UAAU,MAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK,WAAW,CAAC;AAAA,IAC1D,cAAc,CAAC,CAAC,KAAK;AAAA,IACrB,eAAe,KAAK,iBAAiB;AAAA,EACvC;AACF;AAEA,eAAsB,mBACpB,SACA,OACA,UACA,kBACmB;AACnB,QAAM,SAAS,MAAM,WAAW,SAAS,OAAO,QAAQ;AACxD,QAAM,MAAM,MAAM,WAAW,SAAS,OAAO,MAAM;AACnD,QAAM,WAAW,CAAC,GAAG,IAAI,QAAQ;AACjC,QAAM,SAAS,MAAM,KAAK,oBAAI,IAAI,CAAC,GAAG,IAAI,UAAU,GAAG,gBAAgB,CAAC,CAAC;AACzE,MAAI,OAAO,WAAW,IAAI,SAAS,QAAQ;AACzC,UAAM,WAAW,SAAS,OAAO,uBAAuB;AAAA,MACtD;AAAA,MACA,MAAM,EAAE,QAAQ,UAAU,QAAQ,cAAc,IAAI,aAAa;AAAA,IACnE,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,eAAsB,oBACpB,SACA,OACA,UACA,UACe;AACf,QAAM,SAAS,MAAM,WAAW,SAAS,OAAO,QAAQ;AACxD,QAAM,MAAM,MAAM,WAAW,SAAS,OAAO,MAAM;AACnD,QAAM,WAAW,SAAS,OAAO,uBAAuB;AAAA,IACtD;AAAA,IACA,MAAM,EAAE,QAAQ,UAAU,cAAc,IAAI,aAAa;AAAA,EAC3D,CAAC;AACH;",
6
- "names": []
7
- }
@@ -1,73 +0,0 @@
1
- import { test, expect } from "@playwright/test";
2
- import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
3
- import { getAuthToken, apiRequest } from "@open-mercato/core/modules/core/__integration__/helpers/api";
4
- import { deleteEntityIfExists } from "@open-mercato/core/modules/core/__integration__/helpers/crmFixtures";
5
- test.describe("TC-WF-001: Event Pattern Autocomplete", () => {
6
- test("should suggest events, filter them, and display the label on selection", async ({
7
- page,
8
- request
9
- }) => {
10
- let token = null;
11
- let definitionId = null;
12
- const timestamp = Date.now();
13
- try {
14
- token = await getAuthToken(request);
15
- const createRes = await apiRequest(request, "POST", "/api/workflows/definitions", {
16
- token,
17
- data: {
18
- workflowId: `qa-wf-001-${timestamp}`,
19
- workflowName: `QA TC-WF-001 ${timestamp}`,
20
- version: 1,
21
- definition: {
22
- steps: [
23
- { stepId: "start", stepName: "Start", stepType: "START" },
24
- { stepId: "end", stepName: "End", stepType: "END" }
25
- ],
26
- transitions: [
27
- {
28
- transitionId: "start-to-end",
29
- fromStepId: "start",
30
- toStepId: "end",
31
- trigger: "auto"
32
- }
33
- ]
34
- }
35
- }
36
- });
37
- expect(createRes.status()).toBe(201);
38
- const createBody = await createRes.json();
39
- definitionId = createBody.data?.id;
40
- expect(definitionId, "Workflow definition ID should be present after creation").toBeTruthy();
41
- await login(page, "admin");
42
- await page.goto(`/backend/definitions/${definitionId}`);
43
- await page.getByRole("button", { name: "Add Trigger" }).click();
44
- const dialog = page.getByRole("dialog", { name: "Create Event Trigger" });
45
- await expect(dialog).toBeVisible();
46
- const patternInput = dialog.getByPlaceholder("sales.orders.updated");
47
- await patternInput.click();
48
- const firstSuggestion = dialog.getByRole("button").filter({ hasText: /Created|Updated|Deleted/i }).first();
49
- await expect(firstSuggestion).toBeVisible();
50
- await patternInput.fill("customers");
51
- const customerSuggestion = dialog.getByRole("button").filter({ hasText: /Customer/i }).first();
52
- await expect(customerSuggestion).toBeVisible();
53
- const suggestionDescription = customerSuggestion.locator("span").last();
54
- const eventId = await suggestionDescription.textContent();
55
- expect(eventId).toMatch(/^customers\..+/);
56
- await patternInput.press("ArrowDown");
57
- await patternInput.press("Enter");
58
- await expect(customerSuggestion).not.toBeVisible();
59
- const selectedLabel = await patternInput.inputValue();
60
- expect(selectedLabel).not.toBe("");
61
- expect(selectedLabel).not.toBe("customers");
62
- expect(selectedLabel).not.toBe(eventId);
63
- await patternInput.fill("sales.orders.*");
64
- await patternInput.press("Escape");
65
- await expect(patternInput).toHaveValue("sales.orders.*");
66
- await dialog.getByRole("button", { name: "Cancel" }).click();
67
- await expect(dialog).toBeHidden();
68
- } finally {
69
- await deleteEntityIfExists(request, token, "/api/workflows/definitions", definitionId);
70
- }
71
- });
72
- });
73
- //# sourceMappingURL=TC-WF-001.spec.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/modules/workflows/__integration__/TC-WF-001.spec.ts"],
4
- "sourcesContent": ["import { test, expect } from '@playwright/test'\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth'\nimport { getAuthToken, apiRequest } from '@open-mercato/core/modules/core/__integration__/helpers/api'\nimport { deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures'\n\n/**\n * TC-WF-001: Event Pattern Autocomplete in Trigger Editor\n *\n * Verifies that the EventPatternInput component in the \"Create Event Trigger\"\n * dialog shows autocomplete suggestions for declared events, that filtering by\n * partial text works, that selecting a suggestion displays the human-readable\n * label (not the raw event ID), and that custom wildcard patterns are also\n * accepted without being reset.\n *\n * Note: trigger creation (POST /api/workflows/triggers) is not tested here \u2014\n * that API route is a separate concern outside the scope of issue #544, which\n * added the EventPatternInput autocomplete UI component.\n */\ntest.describe('TC-WF-001: Event Pattern Autocomplete', () => {\n test('should suggest events, filter them, and display the label on selection', async ({\n page,\n request,\n }) => {\n let token: string | null = null\n let definitionId: string | null = null\n const timestamp = Date.now()\n\n try {\n token = await getAuthToken(request)\n\n // --- Fixture: create a minimal workflow definition ---\n const createRes = await apiRequest(request, 'POST', '/api/workflows/definitions', {\n token,\n data: {\n workflowId: `qa-wf-001-${timestamp}`,\n workflowName: `QA TC-WF-001 ${timestamp}`,\n version: 1,\n definition: {\n steps: [\n { stepId: 'start', stepName: 'Start', stepType: 'START' },\n { stepId: 'end', stepName: 'End', stepType: 'END' },\n ],\n transitions: [\n {\n transitionId: 'start-to-end',\n fromStepId: 'start',\n toStepId: 'end',\n trigger: 'auto',\n },\n ],\n },\n },\n })\n expect(createRes.status()).toBe(201)\n const createBody = await createRes.json()\n definitionId = createBody.data?.id\n expect(definitionId, 'Workflow definition ID should be present after creation').toBeTruthy()\n\n // --- Navigate to the workflow definition edit page ---\n await login(page, 'admin')\n await page.goto(`/backend/definitions/${definitionId}`)\n\n // --- Open the Create Event Trigger dialog ---\n await page.getByRole('button', { name: 'Add Trigger' }).click()\n const dialog = page.getByRole('dialog', { name: 'Create Event Trigger' })\n await expect(dialog).toBeVisible()\n\n // --- Event Pattern autocomplete: suggestions appear on focus ---\n const patternInput = dialog.getByPlaceholder('sales.orders.updated')\n await patternInput.click()\n\n // At least one event suggestion should appear in the dropdown\n const firstSuggestion = dialog.getByRole('button').filter({ hasText: /Created|Updated|Deleted/i }).first()\n await expect(firstSuggestion).toBeVisible()\n\n // --- Filtering: typing narrows suggestions ---\n await patternInput.fill('customers')\n const customerSuggestion = dialog.getByRole('button').filter({ hasText: /Customer/i }).first()\n await expect(customerSuggestion).toBeVisible()\n\n // The description span shows the raw event ID beneath the human-readable label\n const suggestionDescription = customerSuggestion.locator('span').last()\n const eventId = await suggestionDescription.textContent()\n expect(eventId).toMatch(/^customers\\..+/)\n\n // --- Selection: use keyboard navigation to avoid the onBlur 200ms race condition.\n // Mouse click can trigger onBlur before React re-renders from the click handler,\n // causing confirmSelection() to fire with the stale typed value 'customers'.\n // ArrowDown + Enter selects directly from the keydown handler with no blur involved. ---\n await patternInput.press('ArrowDown')\n await patternInput.press('Enter')\n\n // Dropdown should close and input should show the human-readable label\n await expect(customerSuggestion).not.toBeVisible()\n const selectedLabel = await patternInput.inputValue()\n // The label is displayed in the input, not the typed query or the raw event ID\n expect(selectedLabel).not.toBe('')\n expect(selectedLabel).not.toBe('customers')\n expect(selectedLabel).not.toBe(eventId)\n\n // --- Custom wildcard: free-text pattern is committed without being reset ---\n await patternInput.fill('sales.orders.*')\n // Escape closes the dropdown and commits the typed value\n await patternInput.press('Escape')\n await expect(patternInput).toHaveValue('sales.orders.*')\n\n // Cancel without saving \u2014 trigger creation API is out of scope for this test\n await dialog.getByRole('button', { name: 'Cancel' }).click()\n await expect(dialog).toBeHidden()\n } finally {\n await deleteEntityIfExists(request, token, '/api/workflows/definitions', definitionId)\n }\n })\n})\n"],
5
- "mappings": "AAAA,SAAS,MAAM,cAAc;AAC7B,SAAS,aAAa;AACtB,SAAS,cAAc,kBAAkB;AACzC,SAAS,4BAA4B;AAerC,KAAK,SAAS,yCAAyC,MAAM;AAC3D,OAAK,0EAA0E,OAAO;AAAA,IACpF;AAAA,IACA;AAAA,EACF,MAAM;AACJ,QAAI,QAAuB;AAC3B,QAAI,eAA8B;AAClC,UAAM,YAAY,KAAK,IAAI;AAE3B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAGlC,YAAM,YAAY,MAAM,WAAW,SAAS,QAAQ,8BAA8B;AAAA,QAChF;AAAA,QACA,MAAM;AAAA,UACJ,YAAY,aAAa,SAAS;AAAA,UAClC,cAAc,gBAAgB,SAAS;AAAA,UACvC,SAAS;AAAA,UACT,YAAY;AAAA,YACV,OAAO;AAAA,cACL,EAAE,QAAQ,SAAS,UAAU,SAAS,UAAU,QAAQ;AAAA,cACxD,EAAE,QAAQ,OAAO,UAAU,OAAO,UAAU,MAAM;AAAA,YACpD;AAAA,YACA,aAAa;AAAA,cACX;AAAA,gBACE,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,SAAS;AAAA,cACX;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO,UAAU,OAAO,CAAC,EAAE,KAAK,GAAG;AACnC,YAAM,aAAa,MAAM,UAAU,KAAK;AACxC,qBAAe,WAAW,MAAM;AAChC,aAAO,cAAc,yDAAyD,EAAE,WAAW;AAG3F,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK,KAAK,wBAAwB,YAAY,EAAE;AAGtD,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,cAAc,CAAC,EAAE,MAAM;AAC9D,YAAM,SAAS,KAAK,UAAU,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxE,YAAM,OAAO,MAAM,EAAE,YAAY;AAGjC,YAAM,eAAe,OAAO,iBAAiB,sBAAsB;AACnE,YAAM,aAAa,MAAM;AAGzB,YAAM,kBAAkB,OAAO,UAAU,QAAQ,EAAE,OAAO,EAAE,SAAS,2BAA2B,CAAC,EAAE,MAAM;AACzG,YAAM,OAAO,eAAe,EAAE,YAAY;AAG1C,YAAM,aAAa,KAAK,WAAW;AACnC,YAAM,qBAAqB,OAAO,UAAU,QAAQ,EAAE,OAAO,EAAE,SAAS,YAAY,CAAC,EAAE,MAAM;AAC7F,YAAM,OAAO,kBAAkB,EAAE,YAAY;AAG7C,YAAM,wBAAwB,mBAAmB,QAAQ,MAAM,EAAE,KAAK;AACtE,YAAM,UAAU,MAAM,sBAAsB,YAAY;AACxD,aAAO,OAAO,EAAE,QAAQ,gBAAgB;AAMxC,YAAM,aAAa,MAAM,WAAW;AACpC,YAAM,aAAa,MAAM,OAAO;AAGhC,YAAM,OAAO,kBAAkB,EAAE,IAAI,YAAY;AACjD,YAAM,gBAAgB,MAAM,aAAa,WAAW;AAEpD,aAAO,aAAa,EAAE,IAAI,KAAK,EAAE;AACjC,aAAO,aAAa,EAAE,IAAI,KAAK,WAAW;AAC1C,aAAO,aAAa,EAAE,IAAI,KAAK,OAAO;AAGtC,YAAM,aAAa,KAAK,gBAAgB;AAExC,YAAM,aAAa,MAAM,QAAQ;AACjC,YAAM,OAAO,YAAY,EAAE,YAAY,gBAAgB;AAGvD,YAAM,OAAO,UAAU,UAAU,EAAE,MAAM,SAAS,CAAC,EAAE,MAAM;AAC3D,YAAM,OAAO,MAAM,EAAE,WAAW;AAAA,IAClC,UAAE;AACA,YAAM,qBAAqB,SAAS,OAAO,8BAA8B,YAAY;AAAA,IACvF;AAAA,EACF,CAAC;AACH,CAAC;",
6
- "names": []
7
- }
@@ -1,356 +0,0 @@
1
- /**
2
- * Module Decoupling Tests
3
- *
4
- * Verifies that the application remains functional when optional modules
5
- * (catalog, sales, api_keys) are disabled — removed from the generated
6
- * module registry and entity IDs.
7
- */
8
-
9
- // Build a reduced entity IDs registry excluding catalog, sales, api_keys
10
- const reducedE = {
11
- dashboards: {
12
- dashboard_layout: 'dashboards:dashboard_layout',
13
- dashboard_role_widgets: 'dashboards:dashboard_role_widgets',
14
- dashboard_user_widgets: 'dashboards:dashboard_user_widgets',
15
- },
16
- auth: {
17
- password_reset: 'auth:password_reset',
18
- role: 'auth:role',
19
- role_acl: 'auth:role_acl',
20
- role_sidebar_preference: 'auth:role_sidebar_preference',
21
- session: 'auth:session',
22
- user: 'auth:user',
23
- user_acl: 'auth:user_acl',
24
- user_role: 'auth:user_role',
25
- user_sidebar_preference: 'auth:user_sidebar_preference',
26
- },
27
- directory: {
28
- organization: 'directory:organization',
29
- tenant: 'directory:tenant',
30
- },
31
- customers: {
32
- customer_activity: 'customers:customer_activity',
33
- customer_address: 'customers:customer_address',
34
- customer_comment: 'customers:customer_comment',
35
- customer_company_profile: 'customers:customer_company_profile',
36
- customer_deal: 'customers:customer_deal',
37
- customer_deal_company_link: 'customers:customer_deal_company_link',
38
- customer_deal_person_link: 'customers:customer_deal_person_link',
39
- customer_dictionary_entry: 'customers:customer_dictionary_entry',
40
- customer_entity: 'customers:customer_entity',
41
- customer_person_profile: 'customers:customer_person_profile',
42
- customer_settings: 'customers:customer_settings',
43
- customer_tag: 'customers:customer_tag',
44
- customer_tag_assignment: 'customers:customer_tag_assignment',
45
- customer_todo_link: 'customers:customer_todo_link',
46
- },
47
- entities: {
48
- custom_entity: 'entities:custom_entity',
49
- custom_entity_storage: 'entities:custom_entity_storage',
50
- custom_field_def: 'entities:custom_field_def',
51
- custom_field_entity_config: 'entities:custom_field_entity_config',
52
- custom_field_value: 'entities:custom_field_value',
53
- encryption_map: 'entities:encryption_map',
54
- },
55
- attachments: {
56
- attachment: 'attachments:attachment',
57
- attachment_partition: 'attachments:attachment_partition',
58
- },
59
- } as const
60
-
61
- const reducedM = {
62
- dashboards: 'dashboards',
63
- auth: 'auth',
64
- directory: 'directory',
65
- customers: 'customers',
66
- entities: 'entities',
67
- attachments: 'attachments',
68
- } as const
69
-
70
- // Mock generated entity IDs to exclude catalog, sales, api_keys
71
- jest.mock('#generated/entities.ids.generated', () => ({
72
- E: reducedE,
73
- M: reducedM,
74
- }))
75
-
76
- // Mock cache dependency used by upgrade-actions
77
- jest.mock('@open-mercato/cache', () => ({
78
- runWithCacheTenant: jest.fn((_: unknown, fn: () => unknown) => fn()),
79
- }))
80
- jest.mock('@open-mercato/shared/lib/crud/cache-stats', () => ({
81
- collectCrudCacheStats: jest.fn().mockResolvedValue({ segments: [] }),
82
- purgeCrudCacheSegment: jest.fn(),
83
- }))
84
- jest.mock('@open-mercato/shared/lib/crud/cache', () => ({
85
- isCrudCacheEnabled: jest.fn().mockReturnValue(false),
86
- resolveCrudCache: jest.fn(),
87
- }))
88
-
89
- import { registerEntityIds, getEntityIds } from '@open-mercato/shared/lib/encryption/entityIds'
90
- import { registerModules } from '@open-mercato/shared/lib/modules/registry'
91
- import type { Module } from '@open-mercato/shared/modules/registry'
92
- import type { ModuleSetupConfig } from '@open-mercato/shared/modules/setup'
93
-
94
- // Build module list that mirrors enabled modules without catalog/sales/api_keys
95
- function buildReducedModules(): Module[] {
96
- const moduleSetups: Record<string, ModuleSetupConfig> = {
97
- dashboards: {
98
- defaultRoleFeatures: {
99
- admin: ['dashboards.*', 'dashboards.admin.assign-widgets'],
100
- employee: ['dashboards.view', 'dashboards.configure'],
101
- },
102
- },
103
- auth: {
104
- defaultRoleFeatures: { admin: ['auth.*'] },
105
- },
106
- directory: {
107
- defaultRoleFeatures: {
108
- superadmin: ['directory.tenants.*'],
109
- admin: ['directory.organizations.view', 'directory.organizations.manage'],
110
- },
111
- },
112
- customers: {
113
- defaultRoleFeatures: {
114
- admin: [
115
- 'customers.*',
116
- 'customers.people.view',
117
- 'customers.people.manage',
118
- 'customers.companies.view',
119
- 'customers.companies.manage',
120
- 'customers.deals.view',
121
- 'customers.deals.manage',
122
- ],
123
- employee: [
124
- 'customers.*',
125
- 'customers.people.view',
126
- 'customers.people.manage',
127
- 'customers.companies.view',
128
- 'customers.companies.manage',
129
- ],
130
- },
131
- },
132
- entities: {
133
- defaultRoleFeatures: { admin: ['entities.*'] },
134
- },
135
- attachments: {
136
- defaultRoleFeatures: { admin: ['attachments.*', 'attachments.view', 'attachments.manage'] },
137
- },
138
- audit_logs: {
139
- defaultRoleFeatures: { admin: ['audit_logs.*'], employee: ['audit_logs.undo_self'] },
140
- },
141
- dictionaries: {
142
- defaultRoleFeatures: { admin: ['dictionaries.view', 'dictionaries.manage'], employee: ['dictionaries.view'] },
143
- },
144
- perspectives: {
145
- defaultRoleFeatures: { admin: ['perspectives.use', 'perspectives.role_defaults'], employee: ['perspectives.use'] },
146
- },
147
- configs: {
148
- defaultRoleFeatures: { admin: ['configs.system_status.view', 'configs.cache.view', 'configs.cache.manage', 'configs.manage'] },
149
- },
150
- query_index: {
151
- defaultRoleFeatures: { admin: ['query_index.*'] },
152
- },
153
- feature_toggles: {
154
- defaultRoleFeatures: { admin: ['feature_toggles.*'] },
155
- },
156
- business_rules: {
157
- defaultRoleFeatures: { admin: ['business_rules.*'] },
158
- },
159
- workflows: {
160
- defaultRoleFeatures: { admin: ['workflows.*'] },
161
- },
162
- currencies: {
163
- defaultRoleFeatures: { admin: ['currencies.*'] },
164
- },
165
- staff: {
166
- defaultRoleFeatures: {
167
- admin: ['staff.*', 'staff.leave_requests.manage'],
168
- employee: [
169
- 'staff.leave_requests.send',
170
- 'staff.my_availability.view',
171
- 'staff.my_availability.manage',
172
- 'staff.my_leave_requests.view',
173
- 'staff.my_leave_requests.send',
174
- ],
175
- },
176
- },
177
- resources: {
178
- defaultRoleFeatures: { admin: ['resources.*'] },
179
- },
180
- planner: {
181
- defaultRoleFeatures: { admin: ['planner.*'], employee: ['planner.view'] },
182
- },
183
- search: {
184
- defaultRoleFeatures: { admin: ['search.*', 'vector.*'], employee: ['vector.*'] },
185
- },
186
- }
187
-
188
- return Object.entries(moduleSetups).map(([id, setup]) => ({
189
- id,
190
- setup,
191
- }))
192
- }
193
-
194
- const reducedModules = buildReducedModules()
195
-
196
- beforeAll(() => {
197
- registerEntityIds(reducedE as any)
198
- registerModules(reducedModules)
199
- })
200
-
201
- describe('Module Decoupling', () => {
202
- describe('1. Entity IDs registry excludes disabled modules', () => {
203
- it('getEntityIds() has no catalog, sales, or api_keys keys', () => {
204
- const entityIds = getEntityIds()
205
- expect(entityIds).not.toHaveProperty('catalog')
206
- expect(entityIds).not.toHaveProperty('sales')
207
- expect(entityIds).not.toHaveProperty('api_keys')
208
- })
209
-
210
- it('still contains core modules', () => {
211
- const entityIds = getEntityIds()
212
- expect(entityIds).toHaveProperty('auth')
213
- expect(entityIds).toHaveProperty('attachments')
214
- expect(entityIds).toHaveProperty('customers')
215
- expect(entityIds).toHaveProperty('dashboards')
216
- expect(entityIds).toHaveProperty('directory')
217
- expect(entityIds).toHaveProperty('entities')
218
- })
219
- })
220
-
221
- describe('2. attachments/partitions.ts — resolveDefaultPartitionCode', () => {
222
- it('returns privateAttachments for null, undefined, arbitrary strings, and catalog entity IDs', async () => {
223
- const { resolveDefaultPartitionCode } = await import(
224
- '@open-mercato/core/modules/attachments/lib/partitions'
225
- )
226
-
227
- expect(resolveDefaultPartitionCode(null)).toBe('privateAttachments')
228
- expect(resolveDefaultPartitionCode(undefined)).toBe('privateAttachments')
229
- expect(resolveDefaultPartitionCode('some-entity')).toBe('privateAttachments')
230
- // When catalog is disabled, the literal string also falls through
231
- expect(resolveDefaultPartitionCode('catalog:catalog_product')).toBe('privateAttachments')
232
- })
233
- })
234
-
235
- describe('3. attachments/assignmentDetails.ts — resolveAssignmentEnrichments', () => {
236
- it('does not crash with empty assignments and null queryEngine', async () => {
237
- const { resolveAssignmentEnrichments } = await import(
238
- '@open-mercato/core/modules/attachments/lib/assignmentDetails'
239
- )
240
-
241
- const result = await resolveAssignmentEnrichments([], {
242
- queryEngine: null,
243
- tenantId: 'tenant-1',
244
- organizationId: 'org-1',
245
- })
246
- expect(result).toBeInstanceOf(Map)
247
- expect(result.size).toBe(0)
248
- })
249
-
250
- it('does not crash with assignments referencing catalog entity IDs', async () => {
251
- const { resolveAssignmentEnrichments } = await import(
252
- '@open-mercato/core/modules/attachments/lib/assignmentDetails'
253
- )
254
-
255
- const result = await resolveAssignmentEnrichments(
256
- [{ type: 'catalog:catalog_product', id: 'some-uuid' }],
257
- {
258
- queryEngine: null,
259
- tenantId: 'tenant-1',
260
- organizationId: 'org-1',
261
- },
262
- )
263
- expect(result).toBeInstanceOf(Map)
264
- expect(result.size).toBe(0)
265
- })
266
- })
267
-
268
- describe('4. Role feature merging', () => {
269
- it('admin features contain enabled module features', () => {
270
- const adminFeatures: string[] = []
271
- for (const mod of reducedModules) {
272
- const roleFeatures = mod.setup?.defaultRoleFeatures
273
- if (roleFeatures?.admin) adminFeatures.push(...roleFeatures.admin)
274
- }
275
-
276
- expect(adminFeatures).toContain('auth.*')
277
- expect(adminFeatures).toContain('attachments.*')
278
- expect(adminFeatures).toContain('dashboards.*')
279
- expect(adminFeatures).toContain('customers.*')
280
- expect(adminFeatures).toContain('entities.*')
281
- expect(adminFeatures).toContain('query_index.*')
282
- expect(adminFeatures).toContain('configs.manage')
283
- expect(adminFeatures).toContain('directory.organizations.manage')
284
- })
285
-
286
- it('admin features do NOT contain disabled module features', () => {
287
- const adminFeatures: string[] = []
288
- for (const mod of reducedModules) {
289
- const roleFeatures = mod.setup?.defaultRoleFeatures
290
- if (roleFeatures?.admin) adminFeatures.push(...roleFeatures.admin)
291
- }
292
-
293
- expect(adminFeatures).not.toContain('catalog.*')
294
- expect(adminFeatures).not.toContain('sales.*')
295
- expect(adminFeatures).not.toContain('api_keys.*')
296
- })
297
-
298
- it('employee features similarly exclude disabled module features', () => {
299
- const employeeFeatures: string[] = []
300
- for (const mod of reducedModules) {
301
- const roleFeatures = mod.setup?.defaultRoleFeatures
302
- if (roleFeatures?.employee) employeeFeatures.push(...roleFeatures.employee)
303
- }
304
-
305
- expect(employeeFeatures).not.toContain('catalog.*')
306
- expect(employeeFeatures).not.toContain('sales.*')
307
- expect(employeeFeatures).not.toContain('api_keys.*')
308
-
309
- // Enabled modules' employee features are present
310
- expect(employeeFeatures).toContain('customers.*')
311
- expect(employeeFeatures).toContain('dashboards.view')
312
- expect(employeeFeatures).toContain('audit_logs.undo_self')
313
- expect(employeeFeatures).toContain('vector.*')
314
- })
315
-
316
- it('superadmin features come from enabled modules only', () => {
317
- const superadminFeatures: string[] = []
318
- for (const mod of reducedModules) {
319
- const roleFeatures = mod.setup?.defaultRoleFeatures
320
- if (roleFeatures?.superadmin) superadminFeatures.push(...roleFeatures.superadmin)
321
- }
322
-
323
- expect(superadminFeatures).toContain('directory.tenants.*')
324
- expect(superadminFeatures).not.toContain('catalog.*')
325
- expect(superadminFeatures).not.toContain('sales.*')
326
- })
327
- })
328
-
329
- describe('5. configs/upgrade-actions.ts loads without crashing', () => {
330
- it('imports and exposes upgradeActions array and compareVersions function', async () => {
331
- const mod = await import(
332
- '@open-mercato/core/modules/configs/lib/upgrade-actions'
333
- )
334
-
335
- expect(Array.isArray(mod.upgradeActions)).toBe(true)
336
- expect(typeof mod.compareVersions).toBe('function')
337
- })
338
-
339
- it('upgradeActions array is defined and non-empty', async () => {
340
- const mod = await import(
341
- '@open-mercato/core/modules/configs/lib/upgrade-actions'
342
- )
343
-
344
- expect(Array.isArray(mod.upgradeActions)).toBe(true)
345
- })
346
-
347
- it('actionsUpToVersion returns actions without crashing', async () => {
348
- const mod = await import(
349
- '@open-mercato/core/modules/configs/lib/upgrade-actions'
350
- )
351
-
352
- const actions = mod.actionsUpToVersion('99.99.99')
353
- expect(Array.isArray(actions)).toBe(true)
354
- })
355
- })
356
- })