@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,71 +0,0 @@
1
- import { expect, test } from '@playwright/test'
2
- import { apiRequest, getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api'
3
- import { createProductFixture, deleteCatalogProductIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/catalogFixtures'
4
- import { deleteTranslationIfExists } from './helpers/translationFixtures'
5
-
6
- const ENTITY_TYPE = 'catalog:catalog_product'
7
- const BASE_URL = process.env.BASE_URL || 'http://localhost:3000'
8
-
9
- /**
10
- * TC-TRANS-003: Validation & Authorization
11
- * Covers input validation (entityType, body limits) and basic access control.
12
- */
13
- test.describe('TC-TRANS-003: Validation & Authorization', () => {
14
- test('should reject invalid entityType format with 400', async ({ request }) => {
15
- const token = await getAuthToken(request, 'superadmin')
16
- const response = await apiRequest(request, 'PUT', '/api/translations/INVALID/some-id', {
17
- token,
18
- data: { en: { title: 'test' } },
19
- })
20
- expect(response.status()).toBe(400)
21
- })
22
-
23
- test('should reject field value exceeding 10000 characters with 400', async ({ request }) => {
24
- const adminToken = await getAuthToken(request, 'admin')
25
- const saToken = await getAuthToken(request, 'superadmin')
26
- const productTitle = `QA TC-TRANS-003-2 ${Date.now()}`
27
- const sku = `QA-TRANS-003-2-${Date.now()}`
28
- let productId: string | null = null
29
-
30
- try {
31
- productId = await createProductFixture(request, adminToken, { title: productTitle, sku })
32
- const longValue = 'x'.repeat(10001)
33
- const response = await apiRequest(request, 'PUT', `/api/translations/${ENTITY_TYPE}/${productId}`, {
34
- token: saToken,
35
- data: { en: { title: longValue } },
36
- })
37
- expect(response.status()).toBe(400)
38
- } finally {
39
- await deleteTranslationIfExists(request, saToken, ENTITY_TYPE, productId)
40
- await deleteCatalogProductIfExists(request, adminToken, productId)
41
- }
42
- })
43
-
44
- test('should reject locale key exceeding max length with 400', async ({ request }) => {
45
- const adminToken = await getAuthToken(request, 'admin')
46
- const saToken = await getAuthToken(request, 'superadmin')
47
- const productTitle = `QA TC-TRANS-003-3 ${Date.now()}`
48
- const sku = `QA-TRANS-003-3-${Date.now()}`
49
- let productId: string | null = null
50
-
51
- try {
52
- productId = await createProductFixture(request, adminToken, { title: productTitle, sku })
53
- const response = await apiRequest(request, 'PUT', `/api/translations/${ENTITY_TYPE}/${productId}`, {
54
- token: saToken,
55
- data: { abcdefghijk: { title: 'test' } },
56
- })
57
- expect(response.status()).toBe(400)
58
- } finally {
59
- await deleteTranslationIfExists(request, saToken, ENTITY_TYPE, productId)
60
- await deleteCatalogProductIfExists(request, adminToken, productId)
61
- }
62
- })
63
-
64
- test('should reject unauthenticated requests with 401', async ({ request }) => {
65
- const response = await request.fetch(`${BASE_URL}/api/translations/locales`, {
66
- method: 'GET',
67
- headers: { 'Content-Type': 'application/json' },
68
- })
69
- expect(response.status()).toBe(401)
70
- })
71
- })
@@ -1,66 +0,0 @@
1
- import { expect, test } from '@playwright/test'
2
- import { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api'
3
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth'
4
- import { getLocales, setLocales } from './helpers/translationFixtures'
5
-
6
- /**
7
- * TC-TRANS-004: Locale Management Page
8
- * Covers navigation to translations config, adding and removing locales via the UI.
9
- */
10
- test.describe('TC-TRANS-004: Locale Management Page', () => {
11
- test('should navigate to translations config page', async ({ page }) => {
12
- await login(page, 'superadmin')
13
- await page.goto('/backend/config/translations')
14
-
15
- await expect(page.getByText('Supported locales')).toBeVisible()
16
- await expect(page.getByRole('heading', { name: 'Translations' })).toBeVisible()
17
- })
18
-
19
- test('should add a locale via UI and verify via API', async ({ page, request }) => {
20
- const token = await getAuthToken(request, 'admin')
21
- const originalLocales = await getLocales(request, token)
22
-
23
- try {
24
- await login(page, 'superadmin')
25
- await page.goto('/backend/config/translations')
26
- await expect(page.getByText('Supported locales')).toBeVisible()
27
-
28
- const searchInput = page.getByPlaceholder('e.g. fr, it, ja...')
29
- await searchInput.fill('Japanese')
30
- await page.getByText(/JA — Japanese/i).click()
31
- await page.getByRole('button', { name: 'Add' }).click()
32
-
33
- await expect(page.locator('span').filter({ hasText: /^JA/ })).toBeVisible()
34
-
35
- const updatedLocales = await getLocales(request, token)
36
- expect(updatedLocales).toContain('ja')
37
- } finally {
38
- await setLocales(request, token, originalLocales).catch(() => {})
39
- }
40
- })
41
-
42
- test('should remove a locale via UI and verify via API', async ({ page, request }) => {
43
- const token = await getAuthToken(request, 'admin')
44
- const originalLocales = await getLocales(request, token)
45
-
46
- try {
47
- await setLocales(request, token, [...new Set([...originalLocales, 'ja'])])
48
-
49
- await login(page, 'superadmin')
50
- await page.goto('/backend/config/translations')
51
- await expect(page.getByText('Supported locales')).toBeVisible()
52
-
53
- const jaBadge = page.locator('span').filter({ hasText: /^JA/ })
54
- await expect(jaBadge).toBeVisible()
55
- const removeButton = jaBadge.getByRole('button')
56
- await removeButton.click()
57
-
58
- await expect(jaBadge).not.toBeVisible()
59
-
60
- const updatedLocales = await getLocales(request, token)
61
- expect(updatedLocales).not.toContain('ja')
62
- } finally {
63
- await setLocales(request, token, originalLocales).catch(() => {})
64
- }
65
- })
66
- })
@@ -1,135 +0,0 @@
1
- import { expect, test } from '@playwright/test'
2
- import { apiRequest, getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api'
3
- import { createProductFixture, deleteCatalogProductIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/catalogFixtures'
4
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth'
5
- import { deleteTranslationIfExists, getLocales, setLocales } from './helpers/translationFixtures'
6
-
7
- const ENTITY_TYPE = 'catalog:catalog_product'
8
-
9
- /**
10
- * Helper: set a value directly into a ComboboxInput using allowCustomValues.
11
- * Types the value and presses Enter to confirm — avoids flaky dropdown clicks
12
- * and search index lag for async suggestions.
13
- */
14
- async function fillCombobox(page: import('@playwright/test').Page, placeholder: string, value: string) {
15
- const input = page.getByPlaceholder(placeholder)
16
- await expect(input).toBeEnabled({ timeout: 10_000 })
17
- await input.click()
18
- await input.fill(value)
19
- await input.press('Enter')
20
- // Move focus away so the ComboboxInput's onBlur handler fires and settles
21
- // (onBlur has a 200ms timeout that calls confirmSelection, which may reset hasUserEdited)
22
- await input.press('Tab')
23
- await page.waitForTimeout(300)
24
- }
25
-
26
- /**
27
- * TC-TRANS-005: Translation Manager Standalone
28
- * Covers selecting entity/record, entering translations, saving, and verifying persistence.
29
- */
30
- test.describe('TC-TRANS-005: Translation Manager Standalone', () => {
31
- test('should select entity type and record, showing the field table', async ({ page, request }) => {
32
- const adminToken = await getAuthToken(request, 'admin')
33
- const saToken = await getAuthToken(request, 'superadmin')
34
- const originalLocales = await getLocales(request, adminToken)
35
- const productTitle = `QA TC-TRANS-005-1 ${Date.now()}`
36
- const sku = `QA-TRANS-005-1-${Date.now()}`
37
- let productId: string | null = null
38
-
39
- try {
40
- await setLocales(request, adminToken, [...new Set([...originalLocales, 'de'])])
41
- productId = await createProductFixture(request, adminToken, { title: productTitle, sku })
42
-
43
- await login(page, 'superadmin')
44
- await page.goto('/backend/config/translations')
45
- await expect(page.getByRole('heading', { name: 'Translations' })).toBeVisible()
46
-
47
- await fillCombobox(page, 'Select an entity', ENTITY_TYPE)
48
- await fillCombobox(page, 'Search records...', productId!)
49
-
50
- await expect(page.getByText('Base value')).toBeVisible()
51
- } finally {
52
- await deleteTranslationIfExists(request, saToken, ENTITY_TYPE, productId)
53
- await deleteCatalogProductIfExists(request, adminToken, productId)
54
- await setLocales(request, adminToken, originalLocales).catch(() => {})
55
- }
56
- })
57
-
58
- test('should enter and save a translation via standalone manager', async ({ page, request }) => {
59
- const adminToken = await getAuthToken(request, 'admin')
60
- const saToken = await getAuthToken(request, 'superadmin')
61
- const originalLocales = await getLocales(request, adminToken)
62
- const productTitle = `QA TC-TRANS-005-2 ${Date.now()}`
63
- const sku = `QA-TRANS-005-2-${Date.now()}`
64
- let productId: string | null = null
65
-
66
- try {
67
- await setLocales(request, adminToken, [...new Set([...originalLocales, 'de'])])
68
- productId = await createProductFixture(request, adminToken, { title: productTitle, sku })
69
-
70
- await login(page, 'superadmin')
71
- await page.goto('/backend/config/translations')
72
-
73
- await fillCombobox(page, 'Select an entity', ENTITY_TYPE)
74
- await fillCombobox(page, 'Search records...', productId!)
75
-
76
- const managerCard = page.locator('.bg-card').filter({
77
- has: page.getByRole('button', { name: 'Save translations' }),
78
- })
79
- const deTab = managerCard.getByRole('button', { name: 'DE' })
80
- await deTab.click()
81
-
82
- const titleInput = page.locator('table input').first()
83
- await titleInput.fill('Deutscher Titel QA')
84
-
85
- await page.getByRole('button', { name: 'Save translations' }).click()
86
- await expect(page.getByText('Translations saved').first()).toBeVisible()
87
-
88
- const getResponse = await apiRequest(request, 'GET', `/api/translations/${ENTITY_TYPE}/${productId}`, { token: saToken })
89
- expect(getResponse.ok()).toBeTruthy()
90
- const body = (await getResponse.json()) as { translations: Record<string, Record<string, string>> }
91
- expect(body.translations.de.title).toBe('Deutscher Titel QA')
92
- } finally {
93
- await deleteTranslationIfExists(request, saToken, ENTITY_TYPE, productId)
94
- await deleteCatalogProductIfExists(request, adminToken, productId)
95
- await setLocales(request, adminToken, originalLocales).catch(() => {})
96
- }
97
- })
98
-
99
- test('should persist translations after page reload', async ({ page, request }) => {
100
- const adminToken = await getAuthToken(request, 'admin')
101
- const saToken = await getAuthToken(request, 'superadmin')
102
- const originalLocales = await getLocales(request, adminToken)
103
- const productTitle = `QA TC-TRANS-005-3 ${Date.now()}`
104
- const sku = `QA-TRANS-005-3-${Date.now()}`
105
- let productId: string | null = null
106
-
107
- try {
108
- await setLocales(request, adminToken, [...new Set([...originalLocales, 'de'])])
109
- productId = await createProductFixture(request, adminToken, { title: productTitle, sku })
110
-
111
- await apiRequest(request, 'PUT', `/api/translations/${ENTITY_TYPE}/${productId}`, {
112
- token: saToken,
113
- data: { de: { title: 'Persistenter Titel' } },
114
- })
115
-
116
- await login(page, 'superadmin')
117
- await page.goto('/backend/config/translations')
118
-
119
- await fillCombobox(page, 'Select an entity', ENTITY_TYPE)
120
- await fillCombobox(page, 'Search records...', productId!)
121
-
122
- const managerCard = page.locator('.bg-card').filter({
123
- has: page.getByRole('button', { name: 'Save translations' }),
124
- })
125
- const deTab = managerCard.getByRole('button', { name: 'DE' })
126
- await deTab.click()
127
-
128
- await expect(page.locator('table input').first()).toHaveValue('Persistenter Titel')
129
- } finally {
130
- await deleteTranslationIfExists(request, saToken, ENTITY_TYPE, productId)
131
- await deleteCatalogProductIfExists(request, adminToken, productId)
132
- await setLocales(request, adminToken, originalLocales).catch(() => {})
133
- }
134
- })
135
- })
@@ -1,113 +0,0 @@
1
- import { expect, test } from '@playwright/test'
2
- import { apiRequest, getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api'
3
- import { createProductFixture, deleteCatalogProductIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/catalogFixtures'
4
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth'
5
- import { deleteTranslationIfExists, getLocales, setLocales } from './helpers/translationFixtures'
6
-
7
- const ENTITY_TYPE = 'catalog:catalog_product'
8
-
9
- /**
10
- * TC-TRANS-006: Embedded Widget on Product Detail
11
- * Covers the translation widget injected on the catalog product edit page.
12
- */
13
- test.describe('TC-TRANS-006: Embedded Widget on Product Detail', () => {
14
- test.use({ actionTimeout: 30_000 })
15
- test('should show translation widget on product edit page', async ({ page, request }) => {
16
- const adminToken = await getAuthToken(request, 'admin')
17
- const originalLocales = await getLocales(request, adminToken)
18
- const productTitle = `QA TC-TRANS-006-1 ${Date.now()}`
19
- const sku = `QA-TRANS-006-1-${Date.now()}`
20
- let productId: string | null = null
21
-
22
- try {
23
- await setLocales(request, adminToken, [...new Set([...originalLocales, 'de'])])
24
- productId = await createProductFixture(request, adminToken, { title: productTitle, sku })
25
-
26
- await login(page, 'superadmin')
27
- await page.goto(`/backend/catalog/products/${productId}`)
28
-
29
- await expect(page.getByRole('link', { name: /Translation manager/ })).toBeVisible()
30
- await expect(page.getByRole('button', { name: 'Save translations' })).toBeVisible()
31
- } finally {
32
- await deleteCatalogProductIfExists(request, adminToken, productId)
33
- await setLocales(request, adminToken, originalLocales).catch(() => {})
34
- }
35
- })
36
-
37
- test('should enter and save a translation in the embedded widget', async ({ page, request }) => {
38
- const adminToken = await getAuthToken(request, 'admin')
39
- const saToken = await getAuthToken(request, 'superadmin')
40
- const originalLocales = await getLocales(request, adminToken)
41
- const productTitle = `QA TC-TRANS-006-2 ${Date.now()}`
42
- const sku = `QA-TRANS-006-2-${Date.now()}`
43
- let productId: string | null = null
44
-
45
- try {
46
- await setLocales(request, adminToken, [...new Set([...originalLocales, 'de'])])
47
- productId = await createProductFixture(request, adminToken, { title: productTitle, sku })
48
-
49
- await login(page, 'superadmin')
50
- await page.goto(`/backend/catalog/products/${productId}`)
51
-
52
- const widgetSection = page.locator('div').filter({
53
- has: page.getByRole('link', { name: /Translation manager/ }),
54
- }).filter({
55
- has: page.getByRole('button', { name: 'Save translations' }),
56
- }).last()
57
- await expect(widgetSection).toBeVisible()
58
-
59
- const deTab = widgetSection.getByRole('button', { name: 'DE' })
60
- await deTab.click()
61
-
62
- const translationInput = widgetSection.locator('table input').first()
63
- await translationInput.fill('Widget Titel QA')
64
-
65
- await widgetSection.getByRole('button', { name: 'Save translations' }).click()
66
- await expect(page.getByText('Translations saved').first()).toBeVisible()
67
- } finally {
68
- await deleteTranslationIfExists(request, saToken, ENTITY_TYPE, productId)
69
- await deleteCatalogProductIfExists(request, adminToken, productId)
70
- await setLocales(request, adminToken, originalLocales).catch(() => {})
71
- }
72
- })
73
-
74
- test('should verify widget-saved translation via API', async ({ page, request }) => {
75
- const adminToken = await getAuthToken(request, 'admin')
76
- const saToken = await getAuthToken(request, 'superadmin')
77
- const originalLocales = await getLocales(request, adminToken)
78
- const productTitle = `QA TC-TRANS-006-3 ${Date.now()}`
79
- const sku = `QA-TRANS-006-3-${Date.now()}`
80
- let productId: string | null = null
81
-
82
- try {
83
- await setLocales(request, adminToken, [...new Set([...originalLocales, 'de'])])
84
- productId = await createProductFixture(request, adminToken, { title: productTitle, sku })
85
-
86
- await login(page, 'superadmin')
87
- await page.goto(`/backend/catalog/products/${productId}`)
88
-
89
- const widgetSection = page.locator('div').filter({
90
- has: page.getByRole('link', { name: /Translation manager/ }),
91
- }).filter({
92
- has: page.getByRole('button', { name: 'Save translations' }),
93
- }).last()
94
- const deTab = widgetSection.getByRole('button', { name: 'DE' })
95
- await deTab.click()
96
-
97
- const translationInput = widgetSection.locator('table input').first()
98
- await translationInput.fill('API Verifiziert QA')
99
-
100
- await widgetSection.getByRole('button', { name: 'Save translations' }).click()
101
- await expect(page.getByText('Translations saved').first()).toBeVisible()
102
-
103
- const getResponse = await apiRequest(request, 'GET', `/api/translations/${ENTITY_TYPE}/${productId}`, { token: saToken })
104
- expect(getResponse.ok()).toBeTruthy()
105
- const body = (await getResponse.json()) as { translations: Record<string, Record<string, string>> }
106
- expect(body.translations.de.title).toBe('API Verifiziert QA')
107
- } finally {
108
- await deleteTranslationIfExists(request, saToken, ENTITY_TYPE, productId)
109
- await deleteCatalogProductIfExists(request, adminToken, productId)
110
- await setLocales(request, adminToken, originalLocales).catch(() => {})
111
- }
112
- })
113
- })
@@ -1,80 +0,0 @@
1
- import { expect, test } from '@playwright/test'
2
- import { apiRequest, getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api'
3
- import { createCategoryFixture, deleteCatalogCategoryIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/catalogFixtures'
4
- import { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth'
5
- import { deleteTranslationIfExists, getLocales, setLocales } from './helpers/translationFixtures'
6
-
7
- const ENTITY_TYPE = 'catalog:catalog_product_category'
8
-
9
- /**
10
- * TC-TRANS-007: Dynamic Widget Injection on Category Edit
11
- * Verifies that the Translation Manager widget auto-injects on entity types
12
- * beyond catalog products. Since injection-table.ts now dynamically generates
13
- * entries for ALL translatable entity types, this test confirms the mechanism
14
- * works for product categories (a second CrudForm-based entity).
15
- */
16
- test.describe('TC-TRANS-007: Dynamic Widget Injection on Category Edit', () => {
17
- test.use({ actionTimeout: 30_000 })
18
-
19
- test('should show translation widget on category edit page', async ({ page, request }) => {
20
- const adminToken = await getAuthToken(request, 'admin')
21
- const originalLocales = await getLocales(request, adminToken)
22
- const categoryName = `QA TC-TRANS-007-1 ${Date.now()}`
23
- let categoryId: string | null = null
24
-
25
- try {
26
- await setLocales(request, adminToken, [...new Set([...originalLocales, 'de'])])
27
- categoryId = await createCategoryFixture(request, adminToken, { name: categoryName })
28
-
29
- await login(page, 'superadmin')
30
- await page.goto(`/backend/catalog/categories/${categoryId}/edit`)
31
-
32
- await expect(page.getByRole('link', { name: /Translation manager/ })).toBeVisible()
33
- await expect(page.getByRole('button', { name: 'Save translations' })).toBeVisible()
34
- } finally {
35
- await deleteCatalogCategoryIfExists(request, adminToken, categoryId)
36
- await setLocales(request, adminToken, originalLocales).catch(() => {})
37
- }
38
- })
39
-
40
- test('should save a translation via the category widget and verify via API', async ({ page, request }) => {
41
- const adminToken = await getAuthToken(request, 'admin')
42
- const saToken = await getAuthToken(request, 'superadmin')
43
- const originalLocales = await getLocales(request, adminToken)
44
- const categoryName = `QA TC-TRANS-007-2 ${Date.now()}`
45
- let categoryId: string | null = null
46
-
47
- try {
48
- await setLocales(request, adminToken, [...new Set([...originalLocales, 'de'])])
49
- categoryId = await createCategoryFixture(request, adminToken, { name: categoryName })
50
-
51
- await login(page, 'superadmin')
52
- await page.goto(`/backend/catalog/categories/${categoryId}/edit`)
53
-
54
- const widgetSection = page.locator('div').filter({
55
- has: page.getByRole('link', { name: /Translation manager/ }),
56
- }).filter({
57
- has: page.getByRole('button', { name: 'Save translations' }),
58
- }).last()
59
- await expect(widgetSection).toBeVisible()
60
-
61
- const deTab = widgetSection.getByRole('button', { name: 'DE' })
62
- await deTab.click()
63
-
64
- const translationInput = widgetSection.locator('table input').first()
65
- await translationInput.fill('Kategorie QA')
66
-
67
- await widgetSection.getByRole('button', { name: 'Save translations' }).click()
68
- await expect(page.getByText('Translations saved').first()).toBeVisible()
69
-
70
- const getResponse = await apiRequest(request, 'GET', `/api/translations/${ENTITY_TYPE}/${categoryId}`, { token: saToken })
71
- expect(getResponse.ok()).toBeTruthy()
72
- const body = (await getResponse.json()) as { translations: Record<string, Record<string, string>> }
73
- expect(body.translations.de.name).toBe('Kategorie QA')
74
- } finally {
75
- await deleteTranslationIfExists(request, saToken, ENTITY_TYPE, categoryId)
76
- await deleteCatalogCategoryIfExists(request, adminToken, categoryId)
77
- await setLocales(request, adminToken, originalLocales).catch(() => {})
78
- }
79
- })
80
- })