@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,107 +0,0 @@
1
- import { expect, test } 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 { createSalesOrderFixture, deleteSalesEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/salesFixtures';
5
-
6
- const WIDGET_LOAD_TIMEOUT = 10_000;
7
-
8
- /**
9
- * TC-SALES-020: Document History Widget
10
- * Verifies the History tab renders all 3 entry kinds (action, status, comment)
11
- * and that each Filters dropdown option correctly scopes visible entries.
12
- *
13
- * Fixtures created via API (no reliance on seeded demo data):
14
- * - Order creation → 'action' entry (sales.orders.create command log)
15
- * - Note creation → 'comment' entry (SalesNote, source: note)
16
- * - Status update → 'status' entry (command bus before/after snapshot diff)
17
- */
18
- test.describe('TC-SALES-020: Document History Widget', () => {
19
- test('should show action, status, and comment entries and filter each kind correctly', async ({ page }) => {
20
- test.setTimeout(60_000);
21
- const token = await getAuthToken(page.request, 'admin');
22
- let orderId: string | null = null;
23
-
24
- try {
25
- // 1. Create order → logs an 'action' entry via sales.orders.create command
26
- orderId = await createSalesOrderFixture(page.request, token);
27
-
28
- // 2. Create a note → produces a 'comment' entry (SalesNote, source: 'note')
29
- await apiRequest(page.request, 'POST', '/api/sales/notes', {
30
- token,
31
- data: { contextType: 'order', contextId: orderId, body: 'QA test history comment' },
32
- });
33
-
34
- // 3. Update order status → produces a 'status' entry via command-bus before/after snapshots
35
- const statusListRes = await apiRequest(page.request, 'GET', '/api/sales/order-statuses?pageSize=5', { token });
36
- expect(statusListRes.ok(), 'Failed to load order statuses').toBeTruthy();
37
- const statusList = (await statusListRes.json()) as { items?: Array<{ id: string }> };
38
- const statusId = statusList.items?.[0]?.id;
39
- expect(statusId, 'No order statuses are seeded — cannot produce a status history entry').toBeTruthy();
40
- await apiRequest(page.request, 'PUT', '/api/sales/orders', {
41
- token,
42
- data: { id: orderId, statusEntryId: statusId },
43
- });
44
-
45
- // --- Navigate to order detail page ---
46
- await login(page, 'admin');
47
- await page.goto(`/backend/sales/documents/${orderId}?kind=order`);
48
- await page.waitForLoadState('networkidle');
49
-
50
- // Open History tab
51
- const historyButton = page.getByRole('button', { name: 'History', exact: true });
52
- await expect(historyButton).toBeVisible({ timeout: WIDGET_LOAD_TIMEOUT });
53
- await historyButton.scrollIntoViewIfNeeded();
54
- await historyButton.click();
55
-
56
- const filterButton = page.getByRole('button', { name: /Filters/i });
57
- await expect(filterButton).toBeVisible({ timeout: WIDGET_LOAD_TIMEOUT });
58
-
59
- // Wait for at least one timeline entry to be visible
60
- await expect(page.locator('.relative.flex.gap-3').first()).toBeVisible({ timeout: WIDGET_LOAD_TIMEOUT });
61
- await expect(page.getByText(/No history entries yet/i)).toHaveCount(0);
62
-
63
- // --- Verify all 4 filter options are present ---
64
- await filterButton.click();
65
- const filterMenu = page.getByRole('listbox', { name: /Filters/i });
66
- await expect(filterMenu).toBeVisible();
67
- await expect(filterMenu.getByRole('option', { name: /^All$/i })).toBeVisible();
68
- await expect(filterMenu.getByRole('option', { name: /Status changes/i })).toBeVisible();
69
- await expect(filterMenu.getByRole('option', { name: /^Actions$/i })).toBeVisible();
70
- await expect(filterMenu.getByRole('option', { name: /^Comments$/i })).toBeVisible();
71
- await filterMenu.getByRole('option', { name: /^All$/i }).click();
72
- await expect(filterMenu).toBeHidden();
73
-
74
- // Helper: apply a filter and assert at least one entry is visible
75
- const assertKindHasEntries = async (optionName: string | RegExp, label: string) => {
76
- await page.getByRole('button', { name: /Filters/i }).click();
77
- const menu = page.getByRole('listbox', { name: /Filters/i });
78
- await expect(menu).toBeVisible();
79
- await menu.getByRole('option', { name: optionName }).click();
80
- await expect(menu).toBeHidden();
81
- await expect(
82
- page.getByText(/No history entries yet/i),
83
- `"${label}" filter shows empty state — expected at least one entry`,
84
- ).toHaveCount(0, { timeout: WIDGET_LOAD_TIMEOUT });
85
- await expect(
86
- page.locator('.relative.flex.gap-3').first(),
87
- `"${label}" filter shows no timeline items`,
88
- ).toBeVisible({ timeout: WIDGET_LOAD_TIMEOUT });
89
- };
90
-
91
- // Each of the 3 entry kinds must be present as real data
92
- await assertKindHasEntries(/^Actions$/i, 'Actions');
93
- await assertKindHasEntries(/Status changes/i, 'Status changes');
94
- await assertKindHasEntries(/^Comments$/i, 'Comments');
95
-
96
- // --- Reset to All and verify label clears ---
97
- await page.getByRole('button', { name: /Filters/i }).click();
98
- const resetMenu = page.getByRole('listbox', { name: /Filters/i });
99
- await expect(resetMenu).toBeVisible();
100
- await resetMenu.getByRole('option', { name: /^All$/i }).click();
101
- await expect(resetMenu).toBeHidden();
102
- await expect(page.getByRole('button', { name: /^Filters$/i })).toBeVisible();
103
- } finally {
104
- await deleteSalesEntityIfExists(page.request, token, '/api/sales/orders', orderId);
105
- }
106
- });
107
- });
@@ -1,50 +0,0 @@
1
- import { buildSearchFilters, decorateChannelsWithOfferCounts, parseIdList } from '../channels/route'
2
-
3
- jest.mock('@open-mercato/shared/lib/i18n/server', () => ({
4
- resolveTranslations: jest.fn().mockResolvedValue({
5
- translate: (_key: string, fallback?: string) => fallback ?? _key,
6
- }),
7
- }))
8
-
9
- describe('sales channels route helpers', () => {
10
- it('parses UUID lists and discards invalid entries', () => {
11
- expect(parseIdList('11111111-1111-4111-8111-111111111111, invalid, 22222222-2222-4222-8222-222222222222')).toEqual([
12
- '11111111-1111-4111-8111-111111111111',
13
- '22222222-2222-4222-8222-222222222222',
14
- ])
15
- expect(parseIdList(undefined)).toEqual([])
16
- })
17
-
18
- it('builds search filters with sanitized terms and flags', () => {
19
- const filters = buildSearchFilters({
20
- search: ' Flash % ',
21
- ids: '11111111-1111-4111-8111-111111111111,00000000-0000-4000-8000-000000000000',
22
- isActive: 'false',
23
- } as any)
24
-
25
- expect(filters.id).toEqual({ $in: ['11111111-1111-4111-8111-111111111111', '00000000-0000-4000-8000-000000000000'] })
26
- expect(filters.$or).toEqual([
27
- { name: { $ilike: '%Flash \\%%' } },
28
- { code: { $ilike: '%Flash \\%%' } },
29
- { description: { $ilike: '%Flash \\%%' } },
30
- ])
31
- expect(filters.is_active).toBe(false)
32
- })
33
-
34
- it('decorates listed channels with aggregated offer counts', async () => {
35
- const items: Array<{ id: string | null; offerCount?: number }> = [{ id: 'ch-1' }, { id: 'ch-2' }, { id: null }]
36
- const offers = [
37
- { id: 'offer-1', channelId: 'ch-1' },
38
- { id: 'offer-2', channelId: 'ch-1' },
39
- { id: 'offer-3', channelId: 'ch-3' },
40
- ]
41
- const em = { find: jest.fn().mockResolvedValue(offers) }
42
- const ctx = { container: { resolve: jest.fn().mockReturnValue(em) } } as any
43
-
44
- await decorateChannelsWithOfferCounts({ items }, ctx)
45
-
46
- expect(items[0].offerCount).toBe(2)
47
- expect(items[1].offerCount).toBe(0)
48
- expect(em.find).toHaveBeenCalledWith(expect.any(Function), { channelId: { $in: ['ch-1', 'ch-2'] }, deletedAt: null }, expect.any(Object))
49
- })
50
- })
@@ -1,146 +0,0 @@
1
- import { detectStatusChange, normalizeActionLogToHistoryEntry } from '../../lib/historyHelpers'
2
-
3
- function makeLog(overrides: Partial<{
4
- id: string
5
- snapshotBefore: unknown
6
- snapshotAfter: unknown
7
- actionLabel: string | null
8
- commandId: string
9
- actorUserId: string | null
10
- createdAt: Date
11
- }> = {}): any {
12
- return {
13
- id: 'log-1',
14
- commandId: 'cmd-1',
15
- actionLabel: 'Update sales order',
16
- actorUserId: null,
17
- createdAt: new Date('2024-01-01T10:00:00Z'),
18
- snapshotBefore: null,
19
- snapshotAfter: null,
20
- ...overrides,
21
- }
22
- }
23
-
24
- describe('detectStatusChange', () => {
25
- it('returns null for creations (null snapshotBefore)', () => {
26
- const log = makeLog({ snapshotBefore: null, snapshotAfter: { order: { status: 'draft' } } })
27
- expect(detectStatusChange(log)).toBeNull()
28
- })
29
-
30
- it('detects direct status change from logStatusChange entries', () => {
31
- const log = makeLog({
32
- snapshotBefore: { status: 'draft' },
33
- snapshotAfter: { status: 'confirmed' },
34
- })
35
- expect(detectStatusChange(log)).toEqual({ statusFrom: 'draft', statusTo: 'confirmed' })
36
- })
37
-
38
- it('detects null-to-value transition from dedicated logStatusChange entry', () => {
39
- const log = makeLog({
40
- snapshotBefore: { status: null },
41
- snapshotAfter: { status: 'confirmed' },
42
- })
43
- expect(detectStatusChange(log)).toEqual({ statusFrom: null, statusTo: 'confirmed' })
44
- })
45
-
46
- it('detects status change in nested order snapshot from update commands', () => {
47
- const log = makeLog({
48
- snapshotBefore: { order: { id: 'o1', status: 'draft', note: 'x' } },
49
- snapshotAfter: { order: { id: 'o1', status: 'confirmed', note: 'x' } },
50
- })
51
- expect(detectStatusChange(log)).toEqual({ statusFrom: 'draft', statusTo: 'confirmed' })
52
- })
53
-
54
- it('detects status change in nested quote snapshot from update commands', () => {
55
- const log = makeLog({
56
- snapshotBefore: { quote: { id: 'q1', status: 'pending' } },
57
- snapshotAfter: { quote: { id: 'q1', status: 'accepted' } },
58
- })
59
- expect(detectStatusChange(log)).toEqual({ statusFrom: 'pending', statusTo: 'accepted' })
60
- })
61
-
62
- it('returns null when status did not change in update', () => {
63
- const log = makeLog({
64
- snapshotBefore: { order: { status: 'confirmed', note: 'old' } },
65
- snapshotAfter: { order: { status: 'confirmed', note: 'new' } },
66
- })
67
- expect(detectStatusChange(log)).toBeNull()
68
- })
69
-
70
- it('returns null when neither snapshot has a status field', () => {
71
- const log = makeLog({
72
- snapshotBefore: { order: { note: 'old' } },
73
- snapshotAfter: { order: { note: 'new' } },
74
- })
75
- expect(detectStatusChange(log)).toBeNull()
76
- })
77
- })
78
-
79
- describe('normalizeActionLogToHistoryEntry', () => {
80
- it('classifies as status when order snapshot contains a status change', () => {
81
- const log = makeLog({
82
- snapshotBefore: { order: { status: 'draft' } },
83
- snapshotAfter: { order: { status: 'confirmed' } },
84
- actionLabel: 'Update sales order',
85
- })
86
- const entry = normalizeActionLogToHistoryEntry(log, 'order')
87
- expect(entry.kind).toBe('status')
88
- expect(entry.metadata?.statusFrom).toBe('draft')
89
- expect(entry.metadata?.statusTo).toBe('confirmed')
90
- expect(entry.action).toBe('confirmed')
91
- })
92
-
93
- it('classifies as action when status did not change', () => {
94
- const log = makeLog({
95
- snapshotBefore: { order: { status: 'draft', note: 'old' } },
96
- snapshotAfter: { order: { status: 'draft', note: 'new' } },
97
- actionLabel: 'Update sales order',
98
- })
99
- const entry = normalizeActionLogToHistoryEntry(log, 'order')
100
- expect(entry.kind).toBe('action')
101
- expect(entry.action).toBe('Update sales order')
102
- })
103
-
104
- it('classifies create as action (null snapshotBefore)', () => {
105
- const log = makeLog({
106
- snapshotBefore: null,
107
- snapshotAfter: { order: { status: 'draft' } },
108
- actionLabel: 'Create sales order',
109
- })
110
- const entry = normalizeActionLogToHistoryEntry(log, 'order')
111
- expect(entry.kind).toBe('action')
112
- expect(entry.action).toBe('Create sales order')
113
- })
114
-
115
- it('resolves actor name from displayUsers map', () => {
116
- const log = makeLog({ actorUserId: 'user-uuid-1' })
117
- const entry = normalizeActionLogToHistoryEntry(log, 'order', { 'user-uuid-1': 'Jane Doe' })
118
- expect(entry.actor.label).toBe('Jane Doe')
119
- expect(entry.actor.id).toBe('user-uuid-1')
120
- })
121
-
122
- it('falls back to userId string when not in displayUsers map', () => {
123
- const log = makeLog({ actorUserId: 'user-uuid-2' })
124
- const entry = normalizeActionLogToHistoryEntry(log, 'order', {})
125
- expect(entry.actor.label).toBe('user-uuid-2')
126
- })
127
-
128
- it('uses "system" for null actorUserId', () => {
129
- const log = makeLog({ actorUserId: null })
130
- const entry = normalizeActionLogToHistoryEntry(log, 'order')
131
- expect(entry.actor.label).toBe('system')
132
- expect(entry.actor.id).toBeNull()
133
- })
134
-
135
- it('uses commandId as action fallback when actionLabel is null', () => {
136
- const log = makeLog({ actionLabel: null, commandId: 'my-command-id' })
137
- const entry = normalizeActionLogToHistoryEntry(log, 'order')
138
- expect(entry.action).toBe('my-command-id')
139
- })
140
-
141
- it('includes documentKind in metadata', () => {
142
- const log = makeLog()
143
- expect(normalizeActionLogToHistoryEntry(log, 'order').metadata?.documentKind).toBe('order')
144
- expect(normalizeActionLogToHistoryEntry(log, 'quote').metadata?.documentKind).toBe('quote')
145
- })
146
- })
@@ -1,98 +0,0 @@
1
- /** @jest-environment node */
2
-
3
- jest.mock('@open-mercato/shared/lib/i18n/server', () => ({
4
- resolveTranslations: jest.fn().mockResolvedValue({
5
- translate: (_key: string, fallback?: string) => fallback ?? _key,
6
- }),
7
- }))
8
-
9
- jest.mock('@open-mercato/core/generated/entities.ids.generated', () => ({
10
- E: {
11
- sales: {
12
- sales_order: 'sales:sales_order',
13
- sales_quote: 'sales:sales_quote',
14
- },
15
- },
16
- }))
17
-
18
- import { buildDocumentCrudOptions } from '../documents/factory'
19
- import { SalesOrder, SalesQuote } from '../../data/entities'
20
- import { E } from '#generated/entities.ids.generated'
21
-
22
- describe('buildDocumentCrudOptions', () => {
23
- describe('buildFilters', () => {
24
- const orderBinding = {
25
- kind: 'order' as const,
26
- entity: SalesOrder,
27
- entityId: E.sales.sales_order,
28
- numberField: 'orderNumber' as const,
29
- createCommandId: 'sales.orders.create',
30
- updateCommandId: 'sales.orders.update',
31
- deleteCommandId: 'sales.orders.delete',
32
- manageFeature: 'sales.orders.manage',
33
- viewFeature: 'sales.orders.view',
34
- }
35
-
36
- const quoteBinding = {
37
- kind: 'quote' as const,
38
- entity: SalesQuote,
39
- entityId: E.sales.sales_quote,
40
- numberField: 'quoteNumber' as const,
41
- createCommandId: 'sales.quotes.create',
42
- updateCommandId: 'sales.quotes.update',
43
- deleteCommandId: 'sales.quotes.delete',
44
- manageFeature: 'sales.quotes.manage',
45
- viewFeature: 'sales.quotes.view',
46
- }
47
-
48
- it('should filter orders by order_number when search is provided', async () => {
49
- const options = buildDocumentCrudOptions(orderBinding)
50
- const filters = await options.list.buildFilters({ search: 'ORD-123' })
51
-
52
- expect(filters).toEqual({
53
- order_number: { $ilike: '%ORD-123%' },
54
- })
55
- })
56
-
57
- it('should filter quotes by quote_number when search is provided', async () => {
58
- const options = buildDocumentCrudOptions(quoteBinding)
59
- const filters = await options.list.buildFilters({ search: 'QUO-456' })
60
-
61
- expect(filters).toEqual({
62
- quote_number: { $ilike: '%QUO-456%' },
63
- })
64
- })
65
-
66
- it('should escape percent signs in search term', async () => {
67
- const options = buildDocumentCrudOptions(orderBinding)
68
- const filters = await options.list.buildFilters({ search: '50%' })
69
-
70
- expect(filters).toEqual({
71
- order_number: { $ilike: '%50\\%%' },
72
- })
73
- })
74
-
75
- it('should trim whitespace from search term', async () => {
76
- const options = buildDocumentCrudOptions(orderBinding)
77
- const filters = await options.list.buildFilters({ search: ' ORD-123 ' })
78
-
79
- expect(filters).toEqual({
80
- order_number: { $ilike: '%ORD-123%' },
81
- })
82
- })
83
-
84
- it('should not add filter when search is empty', async () => {
85
- const options = buildDocumentCrudOptions(orderBinding)
86
- const filters = await options.list.buildFilters({ search: '' })
87
-
88
- expect(filters).toEqual({})
89
- })
90
-
91
- it('should not add filter when search is whitespace only', async () => {
92
- const options = buildDocumentCrudOptions(orderBinding)
93
- const filters = await options.list.buildFilters({ search: ' ' })
94
-
95
- expect(filters).toEqual({})
96
- })
97
- })
98
- })
@@ -1,149 +0,0 @@
1
- /** @jest-environment node */
2
- import { PUT as updateOrder } from '@open-mercato/core/modules/sales/api/orders/route'
3
- import { PUT as updateQuote } from '@open-mercato/core/modules/sales/api/quotes/route'
4
-
5
- const mockCommandBus = { execute: jest.fn() }
6
- const mockDataEngine = {
7
- updateOrmEntity: jest.fn(),
8
- markOrmEntityChange: jest.fn(),
9
- flushOrmEntityChanges: jest.fn(),
10
- }
11
- const mockEm = {
12
- findOne: jest.fn(),
13
- fork: jest.fn(),
14
- }
15
-
16
- jest.mock('@open-mercato/shared/lib/auth/server', () => ({
17
- getAuthFromRequest: jest.fn(),
18
- }))
19
-
20
- jest.mock('@open-mercato/shared/lib/di/container', () => ({
21
- createRequestContainer: jest.fn(async () => ({
22
- resolve: (token: string) => {
23
- if (token === 'commandBus') return mockCommandBus
24
- if (token === 'dataEngine') return mockDataEngine
25
- if (token === 'em') return mockEm
26
- if (token === 'accessLogService') return null
27
- return null
28
- },
29
- })),
30
- }))
31
-
32
- jest.mock('@open-mercato/shared/lib/i18n/server', () => ({
33
- resolveTranslations: jest.fn().mockResolvedValue({
34
- translate: (_key: string, fallback?: string) => fallback ?? _key,
35
- }),
36
- }))
37
-
38
- jest.mock('@open-mercato/core/modules/directory/utils/organizationScope', () => ({
39
- resolveOrganizationScopeForRequest: jest.fn(),
40
- }))
41
-
42
- function makeRequest(body: unknown) {
43
- return new Request('http://localhost/api/sales/documents', {
44
- method: 'PUT',
45
- headers: { 'content-type': 'application/json' },
46
- body: JSON.stringify(body),
47
- })
48
- }
49
-
50
- function setupEntityMocks() {
51
- mockEm.fork.mockReturnValue(mockEm)
52
- mockEm.findOne.mockResolvedValue(null)
53
- mockDataEngine.updateOrmEntity.mockImplementation(async ({ apply }: any) => {
54
- const entity = {
55
- id: 'doc-1',
56
- organizationId: 'org-1',
57
- tenantId: 'tenant-1',
58
- comments: null,
59
- customerEntityId: null,
60
- customerContactId: null,
61
- customerSnapshot: null,
62
- billingAddressId: null,
63
- shippingAddressId: null,
64
- billingAddressSnapshot: null,
65
- shippingAddressSnapshot: null,
66
- shippingMethodId: null,
67
- shippingMethodCode: null,
68
- shippingMethodSnapshot: null,
69
- paymentMethodId: null,
70
- paymentMethodCode: null,
71
- paymentMethodSnapshot: null,
72
- currencyCode: 'USD',
73
- channelId: null,
74
- statusEntryId: null,
75
- status: null,
76
- placedAt: null,
77
- expectedDeliveryAt: null,
78
- metadata: null,
79
- }
80
- await apply(entity)
81
- return entity
82
- })
83
- mockDataEngine.markOrmEntityChange.mockResolvedValue(undefined)
84
- mockDataEngine.flushOrmEntityChanges.mockResolvedValue(undefined)
85
- }
86
-
87
- describe('sales document update routes', () => {
88
- beforeEach(async () => {
89
- jest.clearAllMocks()
90
- setupEntityMocks()
91
- const { getAuthFromRequest } = await import('@open-mercato/shared/lib/auth/server')
92
- const { resolveOrganizationScopeForRequest } = await import('@open-mercato/core/modules/directory/utils/organizationScope')
93
- ;(getAuthFromRequest as jest.Mock).mockResolvedValue({
94
- sub: 'user-1',
95
- tenantId: '00000000-0000-4000-8000-000000000000',
96
- orgId: '11111111-1111-4111-8111-111111111111',
97
- })
98
- ;(resolveOrganizationScopeForRequest as jest.Mock).mockResolvedValue({
99
- selectedId: '11111111-1111-4111-8111-111111111111',
100
- filterIds: ['11111111-1111-4111-8111-111111111111'],
101
- allowedIds: ['11111111-1111-4111-8111-111111111111'],
102
- })
103
- mockCommandBus.execute.mockImplementation(async (commandId: string, payload: any) => {
104
- const id =
105
- payload?.input?.id ??
106
- payload?.input?.body?.id ??
107
- payload?.input?.query?.id ??
108
- '00000000-0000-4000-8000-000000000000'
109
- const entityKey = commandId.includes('quote') ? 'quote' : 'order'
110
- return {
111
- result: { [entityKey]: { id } },
112
- logEntry: {
113
- id: 'log-1',
114
- undoToken: 'undo-1',
115
- commandId,
116
- resourceId: id,
117
- resourceKind: commandId.includes('quote') ? 'sales.quote' : 'sales.order',
118
- createdAt: new Date().toISOString(),
119
- },
120
- }
121
- })
122
- })
123
-
124
- it('uses command bus for order updates and returns operation metadata', async () => {
125
- const res = await updateOrder(makeRequest({ id: '22222222-2222-4222-8222-222222222222', comment: 'Updated order' }))
126
-
127
- expect(res.status).toBe(200)
128
- expect(mockCommandBus.execute).toHaveBeenCalledWith(
129
- 'sales.orders.update',
130
- expect.objectContaining({
131
- input: expect.objectContaining({ id: '22222222-2222-4222-8222-222222222222', comment: 'Updated order' }),
132
- })
133
- )
134
- expect(res.headers.get('x-om-operation')).toBeTruthy()
135
- })
136
-
137
- it('uses command bus for quote updates and returns operation metadata', async () => {
138
- const res = await updateQuote(makeRequest({ id: '33333333-3333-4333-8333-333333333333', comment: 'Updated quote' }))
139
-
140
- expect(res.status).toBe(200)
141
- expect(mockCommandBus.execute).toHaveBeenCalledWith(
142
- 'sales.quotes.update',
143
- expect.objectContaining({
144
- input: expect.objectContaining({ id: '33333333-3333-4333-8333-333333333333', comment: 'Updated quote' }),
145
- })
146
- )
147
- expect(res.headers.get('x-om-operation')).toBeTruthy()
148
- })
149
- })