@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,89 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
- import { createCompanyFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';
3
- import { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';
4
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';
5
-
6
- /**
7
- * TC-CRM-015: Customer Search and Filter
8
- * Source: .ai/qa/scenarios/TC-CRM-015-customer-search-filter.md
9
- */
10
- test.describe('TC-CRM-015: Customer Search and Filter', () => {
11
- test('should search companies by name/email and filter by status, lifecycle and tag', async ({ page, request }) => {
12
- let token: string | null = null;
13
- let companyId: string | null = null;
14
-
15
- const companyName = `QA TC-CRM-015 Co ${Date.now()}`;
16
- const companyEmail = `qa.crm015.${Date.now()}@example.com`;
17
- const companyTag = `qa-filter-${Date.now()}`;
18
-
19
- try {
20
- token = await getAuthToken(request);
21
- companyId = await createCompanyFixture(request, token, companyName);
22
-
23
- await login(page, 'admin');
24
- await page.goto(`/backend/customers/companies/${companyId}`);
25
-
26
- await page.getByRole('button', { name: /Primary email/i }).click();
27
- await page.getByRole('textbox', { name: /Add email|name@example.com/i }).fill(companyEmail);
28
- await page.getByRole('button', { name: /Save .*Ctrl\+Enter/i }).first().click();
29
- await expect(page.getByText(companyEmail, { exact: true })).toBeVisible();
30
-
31
- await page.getByRole('button', { name: /^Status/i }).click();
32
- await page
33
- .locator('select')
34
- .filter({ has: page.locator('option', { hasText: 'Active' }) })
35
- .first()
36
- .selectOption({ label: 'Active' });
37
- await page.getByRole('button', { name: /Save .*Ctrl\+Enter/i }).first().click();
38
- await expect(page.getByRole('button', { name: /Status\s+Active/i })).toBeVisible();
39
-
40
- await page.getByRole('button', { name: /Lifecycle stage/i }).click();
41
- await page
42
- .locator('select')
43
- .filter({ has: page.locator('option', { hasText: 'Prospect' }) })
44
- .first()
45
- .selectOption({ label: 'Prospect' });
46
- await page.getByRole('button', { name: /Save .*Ctrl\+Enter/i }).first().click();
47
- await expect(page.getByRole('button', { name: /Lifecycle stage\s+Prospect/i })).toBeVisible();
48
-
49
- await page.getByRole('heading', { name: 'Tags' }).locator('xpath=ancestor::div[1]').getByRole('button').click();
50
- const tagInput = page.getByRole('textbox', { name: 'Type to add tags' });
51
- await tagInput.fill(companyTag);
52
- await tagInput.press('Enter');
53
- await page.getByRole('button', { name: /Save .*Ctrl\+Enter/i }).click();
54
- await expect(page.getByText(companyTag)).toBeVisible();
55
-
56
- await page.goto('/backend/customers/companies');
57
-
58
- const search = page.getByRole('textbox', { name: /Search companies/i });
59
- await search.fill(companyName);
60
- await expect(page.getByRole('link', { name: companyName, exact: true })).toBeVisible();
61
-
62
- await search.fill(companyEmail);
63
- await expect(page.getByRole('link', { name: companyName, exact: true })).toBeVisible();
64
-
65
- await search.fill('');
66
- await page.getByRole('button', { name: 'Filters' }).click();
67
- const filtersDialog = page.getByRole('heading', { name: 'Filters' }).locator('xpath=ancestor::div[2]');
68
- await expect(filtersDialog.getByRole('combobox').nth(2)).toBeVisible();
69
- await filtersDialog.getByRole('combobox').nth(0).selectOption({ label: 'Active' });
70
- await filtersDialog.getByRole('combobox').nth(2).selectOption({ label: 'Prospect' });
71
- const filterTagInput = filtersDialog.getByRole('textbox', { name: 'Add tag and press Enter' });
72
- await filterTagInput.fill(companyTag);
73
- await filterTagInput.press('Enter');
74
- await filtersDialog.getByRole('button', { name: 'Apply' }).first().click();
75
-
76
- await expect(page.getByRole('button', { name: /Status:\s*Active/i })).toBeVisible();
77
- await expect(page.getByRole('button', { name: /Lifecycle stage:\s*Prospect/i })).toBeVisible();
78
-
79
- await expect(page.getByRole('link', { name: companyName, exact: true })).toBeVisible();
80
-
81
- await page.getByRole('button', { name: 'Filters' }).click();
82
- await filtersDialog.getByRole('button', { name: 'Clear' }).first().click();
83
- await filtersDialog.getByRole('button', { name: 'Apply' }).first().click();
84
- await expect(page.getByRole('link', { name: companyName, exact: true })).toBeVisible();
85
- } finally {
86
- await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);
87
- }
88
- });
89
- });
@@ -1,55 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';
3
- import { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';
4
- import { createCompanyFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';
5
-
6
- /**
7
- * TC-CRM-016: Company Note And Activity CRUD
8
- */
9
- test.describe('TC-CRM-016: Company Note And Activity CRUD', () => {
10
- test('should add a company note and log an activity', async ({ page, request }) => {
11
- let token: string | null = null;
12
- let companyId: string | null = null;
13
-
14
- try {
15
- token = await getAuthToken(request);
16
- companyId = await createCompanyFixture(request, token, `QA TC-CRM-016 Company ${Date.now()}`);
17
-
18
- await login(page, 'admin');
19
- await page.goto(`/backend/customers/companies/${companyId}`);
20
-
21
- const noteText = `QA company note ${Date.now()}`;
22
- await page.getByRole('button', { name: /Create( a)? note|Add( a)? note/i }).first().click();
23
- await page.getByRole('textbox', { name: /Write a note about this company/i }).fill(noteText);
24
- await page.getByRole('button', { name: /Add note.*Ctrl\+Enter|Save note.*Ctrl\+Enter/i }).first().click();
25
- await expect(page.getByText(noteText)).toBeVisible();
26
-
27
- const activitySubject = `QA company activity ${Date.now()}`;
28
- const activitiesTab = page.getByRole('tab', { name: 'Activities' });
29
- if ((await activitiesTab.count()) > 0) {
30
- await activitiesTab.click();
31
- } else {
32
- await page.getByRole('button', { name: /^Activities$/i }).click();
33
- }
34
- await page.getByRole('button', { name: /Log activity|Add an activity/i }).first().click();
35
-
36
- const dialog = page.getByRole('dialog', { name: 'Add activity' });
37
- await expect(dialog).toBeVisible();
38
- const activityType = dialog.getByRole('combobox').first();
39
- await expect(activityType).toBeVisible();
40
- await activityType.selectOption({ label: 'Call' }).catch(async () => {
41
- await activityType.click();
42
- await dialog.getByRole('option', { name: /^Call$/i }).click();
43
- });
44
- await dialog.getByRole('textbox', { name: 'Add a subject (optional)' }).fill(activitySubject);
45
- await dialog.getByRole('textbox', { name: 'Describe the interaction' }).fill('QA activity description');
46
- await dialog.getByRole('button', { name: /Save activity/ }).click();
47
- await expect(dialog).toBeHidden();
48
-
49
- await expect(page.getByText('No activities yet')).toHaveCount(0);
50
- await expect(page.getByText(activitySubject).first()).toBeVisible();
51
- } finally {
52
- await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);
53
- }
54
- });
55
- });
@@ -1,37 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';
3
- import { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';
4
- import { createCompanyFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';
5
-
6
- /**
7
- * TC-CRM-017: Company Delete And Undo
8
- */
9
- test.describe('TC-CRM-017: Company Delete And Undo', () => {
10
- test('should delete a company and restore it via undo', async ({ page, request }) => {
11
- let token: string | null = null;
12
- let companyId: string | null = null;
13
- const companyName = `QA TC-CRM-017 ${Date.now()}`;
14
-
15
- try {
16
- token = await getAuthToken(request);
17
- companyId = await createCompanyFixture(request, token, companyName);
18
-
19
- await login(page, 'admin');
20
- await page.goto('/backend/customers/companies');
21
- await page.getByRole('textbox', { name: 'Search companies' }).fill(companyName);
22
- await page.getByRole('link', { name: companyName, exact: true }).click();
23
-
24
- await page.getByRole('button', { name: 'Delete company' }).click();
25
- await page.getByRole('button', { name: 'Confirm' }).click();
26
-
27
- await expect(page).toHaveURL(/\/backend\/customers\/companies$/);
28
- await expect(page.getByRole('button', { name: /^Undo(?: last action)?$/ })).toBeVisible();
29
- await page.getByRole('button', { name: /^Undo(?: last action)?$/ }).click();
30
-
31
- await page.getByRole('textbox', { name: 'Search companies' }).fill(companyName);
32
- await expect(page.getByRole('link', { name: companyName, exact: true })).toBeVisible();
33
- } finally {
34
- await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);
35
- }
36
- });
37
- });
@@ -1,62 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';
3
- import { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';
4
- import { createCompanyFixture, createPersonFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';
5
-
6
- /**
7
- * TC-CRM-018: Person Display Name Edit And Undo
8
- */
9
- test.describe('TC-CRM-018: Person Display Name Edit And Undo', () => {
10
- test('should edit person display name and undo the update', async ({ page, request }) => {
11
- let token: string | null = null;
12
- let companyId: string | null = null;
13
- let personId: string | null = null;
14
-
15
- try {
16
- token = await getAuthToken(request);
17
- const originalName = `QA TC-CRM-018 Person ${Date.now()}`;
18
- companyId = await createCompanyFixture(request, token, `QA TC-CRM-018 Company ${Date.now()}`);
19
- personId = await createPersonFixture(request, token, {
20
- firstName: 'QA',
21
- lastName: 'TCCRM018',
22
- displayName: originalName,
23
- companyEntityId: companyId,
24
- });
25
-
26
- await login(page, 'admin');
27
- await page.goto(`/backend/customers/people/${personId}`);
28
-
29
- const displayNameButton = page.getByRole('button', { name: /^Display name / }).first();
30
- await expect(displayNameButton).toBeVisible();
31
- const editButton = displayNameButton.locator('xpath=..').getByRole('button').nth(1);
32
- await editButton.click();
33
-
34
- let input = page.getByPlaceholder(/Enter (display name|full name|name)/i).first();
35
- if ((await input.count()) === 0) {
36
- input = page.locator('main input[type="text"]').first();
37
- }
38
- await expect(input).toBeVisible();
39
- const updatedName = `${originalName} QA`;
40
-
41
- await input.fill(updatedName);
42
- await input.locator('xpath=ancestor::div[1]').getByRole('button', { name: /^Save/ }).click();
43
-
44
- const readDisplayName = async (): Promise<string> => {
45
- const editInput = page.getByRole('textbox', { name: /Enter display name/i }).first();
46
- if ((await editInput.count()) > 0) {
47
- return ((await editInput.inputValue()) || '').replace(/\s+/g, ' ').trim();
48
- }
49
- const summaryButton = page.getByRole('button', { name: /^Display name / }).first();
50
- const raw = ((await summaryButton.innerText()) || '').trim();
51
- return raw.replace(/^display name\s+/i, '').replace(/\s+/g, ' ').trim();
52
- };
53
-
54
- await expect.poll(readDisplayName).toContain(updatedName);
55
- await page.getByRole('button', { name: /^Undo(?: last action)?$/ }).click();
56
- await expect.poll(readDisplayName).toContain(originalName);
57
- } finally {
58
- await deleteEntityIfExists(request, token, '/api/customers/people', personId);
59
- await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);
60
- }
61
- });
62
- });
@@ -1,44 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';
3
- import { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';
4
- import { createDealFixture, createPersonFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';
5
-
6
- /**
7
- * TC-CRM-019: Deal Association Remove And Undo
8
- */
9
- test.describe('TC-CRM-019: Deal Association Remove And Undo', () => {
10
- test('should remove a linked person from deal and restore via undo', async ({ page, request }) => {
11
- let token: string | null = null;
12
- let personId: string | null = null;
13
- let dealId: string | null = null;
14
- const personDisplayName = `QA TC-CRM-019 Person ${Date.now()}`;
15
-
16
- try {
17
- token = await getAuthToken(request);
18
- personId = await createPersonFixture(request, token, {
19
- firstName: 'QA',
20
- lastName: `TCCRM019${Date.now()}`,
21
- displayName: personDisplayName,
22
- });
23
- dealId = await createDealFixture(request, token, {
24
- title: `QA TC-CRM-019 Deal ${Date.now()}`,
25
- personIds: [personId],
26
- });
27
-
28
- await login(page, 'admin');
29
- await page.goto(`/backend/customers/deals/${dealId}`);
30
-
31
- const removeButtonName = `Remove ${personDisplayName}`;
32
- await expect(page.getByRole('button', { name: removeButtonName, exact: true })).toBeVisible();
33
- await page.getByRole('button', { name: removeButtonName, exact: true }).click();
34
- await page.getByRole('button', { name: /Update deal/ }).click();
35
-
36
- await expect(page.getByRole('button', { name: removeButtonName, exact: true })).toHaveCount(0);
37
- await page.getByRole('button', { name: /^Undo(?: last action)?$/ }).click();
38
- await expect(page.getByRole('button', { name: removeButtonName, exact: true })).toBeVisible();
39
- } finally {
40
- await deleteEntityIfExists(request, token, '/api/customers/deals', dealId);
41
- await deleteEntityIfExists(request, token, '/api/customers/people', personId);
42
- }
43
- });
44
- });
@@ -1,73 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';
3
- import { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';
4
- import {
5
- createCompanyFixture,
6
- createDealFixture,
7
- createPersonFixture,
8
- deleteEntityIfExists,
9
- } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';
10
-
11
- /**
12
- * TC-CRM-020: Deal Note And Activity Creation
13
- */
14
- test.describe('TC-CRM-020: Deal Note And Activity Creation', () => {
15
- test('should add a deal note and log a deal activity', async ({ page, request }) => {
16
- let token: string | null = null;
17
- let companyId: string | null = null;
18
- let personId: string | null = null;
19
- let dealId: string | null = null;
20
-
21
- try {
22
- token = await getAuthToken(request);
23
- companyId = await createCompanyFixture(request, token, `QA TC-CRM-020 Company ${Date.now()}`);
24
- personId = await createPersonFixture(request, token, {
25
- firstName: 'QA',
26
- lastName: `TCCRM020${Date.now()}`,
27
- displayName: `QA TC-CRM-020 Person ${Date.now()}`,
28
- companyEntityId: companyId,
29
- });
30
- dealId = await createDealFixture(request, token, {
31
- title: `QA TC-CRM-020 Deal ${Date.now()}`,
32
- companyIds: [companyId],
33
- personIds: [personId],
34
- });
35
-
36
- await login(page, 'admin');
37
- await page.goto(`/backend/customers/deals/${dealId}`);
38
-
39
- const noteText = `QA deal note ${Date.now()}`;
40
- await page.getByRole('button', { name: /Add( a)? note/i }).first().click();
41
- await page.getByRole('textbox', { name: /Write a note/i }).fill(noteText);
42
- await page.getByRole('button', { name: /Add note.*Ctrl\+Enter/i }).click();
43
- await expect(page.getByText(noteText)).toBeVisible();
44
-
45
- const activitySubject = `QA deal activity ${Date.now()}`;
46
- const activitiesTab = page.getByRole('tab', { name: 'Activities' });
47
- if ((await activitiesTab.count()) > 0) {
48
- await activitiesTab.click();
49
- } else {
50
- await page.getByRole('button', { name: 'Activities' }).click();
51
- }
52
- await page.getByRole('button', { name: /Log activity|Add an activity/i }).click();
53
-
54
- const dialog = page.getByRole('dialog', { name: 'Add activity' });
55
- const linkedDealSelect = dialog.getByRole('combobox').nth(1);
56
- const linkedDealOptions = await linkedDealSelect.locator('option').count();
57
- if (linkedDealOptions > 1) {
58
- await linkedDealSelect.selectOption({ index: 1 });
59
- }
60
- const typeSelect = dialog.getByRole('combobox').nth(2);
61
- await typeSelect.selectOption({ label: 'Call' });
62
- await dialog.getByRole('textbox', { name: 'Add a subject (optional)' }).fill(activitySubject);
63
- await dialog.getByRole('textbox', { name: 'Describe the interaction' }).fill('QA deal activity description');
64
- await dialog.getByRole('button', { name: /Save activity/ }).click();
65
- await expect(dialog).toBeHidden();
66
- await expect(page.getByText('No activities yet')).toHaveCount(0);
67
- } finally {
68
- await deleteEntityIfExists(request, token, '/api/customers/deals', dealId);
69
- await deleteEntityIfExists(request, token, '/api/customers/people', personId);
70
- await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);
71
- }
72
- });
73
- });
@@ -1,61 +0,0 @@
1
- import { withScopedPayload } from '../utils'
2
- import { CrudHttpError } from '@open-mercato/shared/lib/crud/errors'
3
-
4
- const translate = (key: string, fallback?: string) => fallback ?? key
5
-
6
- describe('customers api utils - withScopedPayload', () => {
7
- it('throws when tenant context cannot be resolved', () => {
8
- const ctx = { auth: { tenantId: null, orgId: null }, selectedOrganizationId: null }
9
- expect(() => withScopedPayload(null, ctx as any, translate)).toThrow(CrudHttpError)
10
- try {
11
- withScopedPayload(null, ctx as any, translate)
12
- } catch (error) {
13
- expect(error).toBeInstanceOf(CrudHttpError)
14
- expect((error as CrudHttpError).status).toBe(400)
15
- }
16
- })
17
-
18
- it('resolves tenant and organization from context when missing in payload', () => {
19
- const ctx = {
20
- auth: { tenantId: 'tenant-1', orgId: 'auth-org' },
21
- selectedOrganizationId: 'selected-org',
22
- }
23
- const scoped = withScopedPayload({ name: 'Ada' }, ctx as any, translate)
24
- expect(scoped).toMatchObject({
25
- name: 'Ada',
26
- tenantId: 'tenant-1',
27
- organizationId: 'selected-org',
28
- })
29
- })
30
-
31
- it('prefers payload organizationId when provided', () => {
32
- const ctx = {
33
- auth: { tenantId: 'tenant-1', orgId: 'auth-org' },
34
- selectedOrganizationId: 'selected-org',
35
- }
36
- const scoped = withScopedPayload(
37
- { organizationId: 'payload-org' },
38
- ctx as any,
39
- translate
40
- )
41
- expect(scoped.organizationId).toBe('payload-org')
42
- })
43
-
44
- it('allows missing organization when explicitly disabled', () => {
45
- const ctx = {
46
- auth: { tenantId: 'tenant-1', orgId: null },
47
- selectedOrganizationId: null,
48
- }
49
- const scoped = withScopedPayload(
50
- { name: 'Grace' },
51
- ctx as any,
52
- translate,
53
- { requireOrganization: false }
54
- )
55
- expect(scoped).toMatchObject({
56
- name: 'Grace',
57
- tenantId: 'tenant-1',
58
- })
59
- expect(scoped).not.toHaveProperty('organizationId')
60
- })
61
- })
@@ -1,54 +0,0 @@
1
- import { GET } from '../route'
2
-
3
- // Minimal mocks for dependencies used by the route
4
- jest.mock('../../utils', () => ({
5
- resolveWidgetScope: jest.fn(async () => ({
6
- container: {},
7
- em: {
8
- find: jest.fn(async () => [
9
- {
10
- id: '11111111-1111-1111-1111-111111111111',
11
- title: 'Deal A',
12
- status: 'open',
13
- organizationId: '22222222-2222-2222-2222-222222222222',
14
- createdAt: new Date('2025-01-01T10:00:00.000Z'),
15
- ownerUserId: null,
16
- valueAmount: null,
17
- valueCurrency: null,
18
- },
19
- ]),
20
- },
21
- tenantId: '33333333-3333-3333-3333-333333333333',
22
- organizationIds: ['22222222-2222-2222-2222-222222222222'],
23
- })),
24
- }))
25
-
26
- jest.mock('@open-mercato/shared/lib/i18n/server', () => ({
27
- resolveTranslations: async () => ({
28
- translate: (k: string, fb?: string) => fb ?? k,
29
- }),
30
- }))
31
-
32
- describe('customers new-deals widget route', () => {
33
- it('returns 200 with items on happy path', async () => {
34
- const req = new Request('http://localhost/api?limit=5')
35
- const res = await GET(req)
36
- expect(res.status).toBe(200)
37
- const body = await res.json()
38
- expect(Array.isArray(body.items)).toBe(true)
39
- expect(body.items[0]).toMatchObject({
40
- id: '11111111-1111-1111-1111-111111111111',
41
- title: 'Deal A',
42
- status: 'open',
43
- organizationId: '22222222-2222-2222-2222-222222222222',
44
- })
45
- })
46
-
47
- it('returns 400 on invalid limit', async () => {
48
- const req = new Request('http://localhost/api?limit=0')
49
- const res = await GET(req)
50
- expect(res.status).toBe(400)
51
- const body = await res.json()
52
- expect(body).toHaveProperty('error')
53
- })
54
- })