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