@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,46 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
import { createCompanyFixture, deleteEntityIfExists } from "@open-mercato/core/modules/core/__integration__/helpers/crmFixtures";
|
|
5
|
-
test.describe("TC-CRM-016: Company Note And Activity CRUD", () => {
|
|
6
|
-
test("should add a company note and log an activity", async ({ page, request }) => {
|
|
7
|
-
let token = null;
|
|
8
|
-
let companyId = null;
|
|
9
|
-
try {
|
|
10
|
-
token = await getAuthToken(request);
|
|
11
|
-
companyId = await createCompanyFixture(request, token, `QA TC-CRM-016 Company ${Date.now()}`);
|
|
12
|
-
await login(page, "admin");
|
|
13
|
-
await page.goto(`/backend/customers/companies/${companyId}`);
|
|
14
|
-
const noteText = `QA company note ${Date.now()}`;
|
|
15
|
-
await page.getByRole("button", { name: /Create( a)? note|Add( a)? note/i }).first().click();
|
|
16
|
-
await page.getByRole("textbox", { name: /Write a note about this company/i }).fill(noteText);
|
|
17
|
-
await page.getByRole("button", { name: /Add note.*Ctrl\+Enter|Save note.*Ctrl\+Enter/i }).first().click();
|
|
18
|
-
await expect(page.getByText(noteText)).toBeVisible();
|
|
19
|
-
const activitySubject = `QA company activity ${Date.now()}`;
|
|
20
|
-
const activitiesTab = page.getByRole("tab", { name: "Activities" });
|
|
21
|
-
if (await activitiesTab.count() > 0) {
|
|
22
|
-
await activitiesTab.click();
|
|
23
|
-
} else {
|
|
24
|
-
await page.getByRole("button", { name: /^Activities$/i }).click();
|
|
25
|
-
}
|
|
26
|
-
await page.getByRole("button", { name: /Log activity|Add an activity/i }).first().click();
|
|
27
|
-
const dialog = page.getByRole("dialog", { name: "Add activity" });
|
|
28
|
-
await expect(dialog).toBeVisible();
|
|
29
|
-
const activityType = dialog.getByRole("combobox").first();
|
|
30
|
-
await expect(activityType).toBeVisible();
|
|
31
|
-
await activityType.selectOption({ label: "Call" }).catch(async () => {
|
|
32
|
-
await activityType.click();
|
|
33
|
-
await dialog.getByRole("option", { name: /^Call$/i }).click();
|
|
34
|
-
});
|
|
35
|
-
await dialog.getByRole("textbox", { name: "Add a subject (optional)" }).fill(activitySubject);
|
|
36
|
-
await dialog.getByRole("textbox", { name: "Describe the interaction" }).fill("QA activity description");
|
|
37
|
-
await dialog.getByRole("button", { name: /Save activity/ }).click();
|
|
38
|
-
await expect(dialog).toBeHidden();
|
|
39
|
-
await expect(page.getByText("No activities yet")).toHaveCount(0);
|
|
40
|
-
await expect(page.getByText(activitySubject).first()).toBeVisible();
|
|
41
|
-
} finally {
|
|
42
|
-
await deleteEntityIfExists(request, token, "/api/customers/companies", companyId);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=TC-CRM-016.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/customers/__integration__/TC-CRM-016.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\nimport { createCompanyFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';\n\n/**\n * TC-CRM-016: Company Note And Activity CRUD\n */\ntest.describe('TC-CRM-016: Company Note And Activity CRUD', () => {\n test('should add a company note and log an activity', async ({ page, request }) => {\n let token: string | null = null;\n let companyId: string | null = null;\n\n try {\n token = await getAuthToken(request);\n companyId = await createCompanyFixture(request, token, `QA TC-CRM-016 Company ${Date.now()}`);\n\n await login(page, 'admin');\n await page.goto(`/backend/customers/companies/${companyId}`);\n\n const noteText = `QA company note ${Date.now()}`;\n await page.getByRole('button', { name: /Create( a)? note|Add( a)? note/i }).first().click();\n await page.getByRole('textbox', { name: /Write a note about this company/i }).fill(noteText);\n await page.getByRole('button', { name: /Add note.*Ctrl\\+Enter|Save note.*Ctrl\\+Enter/i }).first().click();\n await expect(page.getByText(noteText)).toBeVisible();\n\n const activitySubject = `QA company activity ${Date.now()}`;\n const activitiesTab = page.getByRole('tab', { name: 'Activities' });\n if ((await activitiesTab.count()) > 0) {\n await activitiesTab.click();\n } else {\n await page.getByRole('button', { name: /^Activities$/i }).click();\n }\n await page.getByRole('button', { name: /Log activity|Add an activity/i }).first().click();\n\n const dialog = page.getByRole('dialog', { name: 'Add activity' });\n await expect(dialog).toBeVisible();\n const activityType = dialog.getByRole('combobox').first();\n await expect(activityType).toBeVisible();\n await activityType.selectOption({ label: 'Call' }).catch(async () => {\n await activityType.click();\n await dialog.getByRole('option', { name: /^Call$/i }).click();\n });\n await dialog.getByRole('textbox', { name: 'Add a subject (optional)' }).fill(activitySubject);\n await dialog.getByRole('textbox', { name: 'Describe the interaction' }).fill('QA activity description');\n await dialog.getByRole('button', { name: /Save activity/ }).click();\n await expect(dialog).toBeHidden();\n\n await expect(page.getByText('No activities yet')).toHaveCount(0);\n await expect(page.getByText(activitySubject).first()).toBeVisible();\n } finally {\n await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB,4BAA4B;AAK3D,KAAK,SAAS,8CAA8C,MAAM;AAChE,OAAK,iDAAiD,OAAO,EAAE,MAAM,QAAQ,MAAM;AACjF,QAAI,QAAuB;AAC3B,QAAI,YAA2B;AAE/B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,kBAAY,MAAM,qBAAqB,SAAS,OAAO,yBAAyB,KAAK,IAAI,CAAC,EAAE;AAE5F,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK,KAAK,gCAAgC,SAAS,EAAE;AAE3D,YAAM,WAAW,mBAAmB,KAAK,IAAI,CAAC;AAC9C,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,kCAAkC,CAAC,EAAE,MAAM,EAAE,MAAM;AAC1F,YAAM,KAAK,UAAU,WAAW,EAAE,MAAM,mCAAmC,CAAC,EAAE,KAAK,QAAQ;AAC3F,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,gDAAgD,CAAC,EAAE,MAAM,EAAE,MAAM;AACxG,YAAM,OAAO,KAAK,UAAU,QAAQ,CAAC,EAAE,YAAY;AAEnD,YAAM,kBAAkB,uBAAuB,KAAK,IAAI,CAAC;AACzD,YAAM,gBAAgB,KAAK,UAAU,OAAO,EAAE,MAAM,aAAa,CAAC;AAClE,UAAK,MAAM,cAAc,MAAM,IAAK,GAAG;AACrC,cAAM,cAAc,MAAM;AAAA,MAC5B,OAAO;AACL,cAAM,KAAK,UAAU,UAAU,EAAE,MAAM,gBAAgB,CAAC,EAAE,MAAM;AAAA,MAClE;AACA,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,gCAAgC,CAAC,EAAE,MAAM,EAAE,MAAM;AAExF,YAAM,SAAS,KAAK,UAAU,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,YAAM,OAAO,MAAM,EAAE,YAAY;AACjC,YAAM,eAAe,OAAO,UAAU,UAAU,EAAE,MAAM;AACxD,YAAM,OAAO,YAAY,EAAE,YAAY;AACvC,YAAM,aAAa,aAAa,EAAE,OAAO,OAAO,CAAC,EAAE,MAAM,YAAY;AACnE,cAAM,aAAa,MAAM;AACzB,cAAM,OAAO,UAAU,UAAU,EAAE,MAAM,UAAU,CAAC,EAAE,MAAM;AAAA,MAC9D,CAAC;AACD,YAAM,OAAO,UAAU,WAAW,EAAE,MAAM,2BAA2B,CAAC,EAAE,KAAK,eAAe;AAC5F,YAAM,OAAO,UAAU,WAAW,EAAE,MAAM,2BAA2B,CAAC,EAAE,KAAK,yBAAyB;AACtG,YAAM,OAAO,UAAU,UAAU,EAAE,MAAM,gBAAgB,CAAC,EAAE,MAAM;AAClE,YAAM,OAAO,MAAM,EAAE,WAAW;AAEhC,YAAM,OAAO,KAAK,UAAU,mBAAmB,CAAC,EAAE,YAAY,CAAC;AAC/D,YAAM,OAAO,KAAK,UAAU,eAAe,EAAE,MAAM,CAAC,EAAE,YAAY;AAAA,IACpE,UAAE;AACA,YAAM,qBAAqB,SAAS,OAAO,4BAA4B,SAAS;AAAA,IAClF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
import { createCompanyFixture, deleteEntityIfExists } from "@open-mercato/core/modules/core/__integration__/helpers/crmFixtures";
|
|
5
|
-
test.describe("TC-CRM-017: Company Delete And Undo", () => {
|
|
6
|
-
test("should delete a company and restore it via undo", async ({ page, request }) => {
|
|
7
|
-
let token = null;
|
|
8
|
-
let companyId = null;
|
|
9
|
-
const companyName = `QA TC-CRM-017 ${Date.now()}`;
|
|
10
|
-
try {
|
|
11
|
-
token = await getAuthToken(request);
|
|
12
|
-
companyId = await createCompanyFixture(request, token, companyName);
|
|
13
|
-
await login(page, "admin");
|
|
14
|
-
await page.goto("/backend/customers/companies");
|
|
15
|
-
await page.getByRole("textbox", { name: "Search companies" }).fill(companyName);
|
|
16
|
-
await page.getByRole("link", { name: companyName, exact: true }).click();
|
|
17
|
-
await page.getByRole("button", { name: "Delete company" }).click();
|
|
18
|
-
await page.getByRole("button", { name: "Confirm" }).click();
|
|
19
|
-
await expect(page).toHaveURL(/\/backend\/customers\/companies$/);
|
|
20
|
-
await expect(page.getByRole("button", { name: /^Undo(?: last action)?$/ })).toBeVisible();
|
|
21
|
-
await page.getByRole("button", { name: /^Undo(?: last action)?$/ }).click();
|
|
22
|
-
await page.getByRole("textbox", { name: "Search companies" }).fill(companyName);
|
|
23
|
-
await expect(page.getByRole("link", { name: companyName, exact: true })).toBeVisible();
|
|
24
|
-
} finally {
|
|
25
|
-
await deleteEntityIfExists(request, token, "/api/customers/companies", companyId);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=TC-CRM-017.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/customers/__integration__/TC-CRM-017.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\nimport { createCompanyFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';\n\n/**\n * TC-CRM-017: Company Delete And Undo\n */\ntest.describe('TC-CRM-017: Company Delete And Undo', () => {\n test('should delete a company and restore it via undo', async ({ page, request }) => {\n let token: string | null = null;\n let companyId: string | null = null;\n const companyName = `QA TC-CRM-017 ${Date.now()}`;\n\n try {\n token = await getAuthToken(request);\n companyId = await createCompanyFixture(request, token, companyName);\n\n await login(page, 'admin');\n await page.goto('/backend/customers/companies');\n await page.getByRole('textbox', { name: 'Search companies' }).fill(companyName);\n await page.getByRole('link', { name: companyName, exact: true }).click();\n\n await page.getByRole('button', { name: 'Delete company' }).click();\n await page.getByRole('button', { name: 'Confirm' }).click();\n\n await expect(page).toHaveURL(/\\/backend\\/customers\\/companies$/);\n await expect(page.getByRole('button', { name: /^Undo(?: last action)?$/ })).toBeVisible();\n await page.getByRole('button', { name: /^Undo(?: last action)?$/ }).click();\n\n await page.getByRole('textbox', { name: 'Search companies' }).fill(companyName);\n await expect(page.getByRole('link', { name: companyName, exact: true })).toBeVisible();\n } finally {\n await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB,4BAA4B;AAK3D,KAAK,SAAS,uCAAuC,MAAM;AACzD,OAAK,mDAAmD,OAAO,EAAE,MAAM,QAAQ,MAAM;AACnF,QAAI,QAAuB;AAC3B,QAAI,YAA2B;AAC/B,UAAM,cAAc,iBAAiB,KAAK,IAAI,CAAC;AAE/C,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,kBAAY,MAAM,qBAAqB,SAAS,OAAO,WAAW;AAElE,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK,KAAK,8BAA8B;AAC9C,YAAM,KAAK,UAAU,WAAW,EAAE,MAAM,mBAAmB,CAAC,EAAE,KAAK,WAAW;AAC9E,YAAM,KAAK,UAAU,QAAQ,EAAE,MAAM,aAAa,OAAO,KAAK,CAAC,EAAE,MAAM;AAEvE,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,iBAAiB,CAAC,EAAE,MAAM;AACjE,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,UAAU,CAAC,EAAE,MAAM;AAE1D,YAAM,OAAO,IAAI,EAAE,UAAU,kCAAkC;AAC/D,YAAM,OAAO,KAAK,UAAU,UAAU,EAAE,MAAM,0BAA0B,CAAC,CAAC,EAAE,YAAY;AACxF,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,0BAA0B,CAAC,EAAE,MAAM;AAE1E,YAAM,KAAK,UAAU,WAAW,EAAE,MAAM,mBAAmB,CAAC,EAAE,KAAK,WAAW;AAC9E,YAAM,OAAO,KAAK,UAAU,QAAQ,EAAE,MAAM,aAAa,OAAO,KAAK,CAAC,CAAC,EAAE,YAAY;AAAA,IACvF,UAAE;AACA,YAAM,qBAAqB,SAAS,OAAO,4BAA4B,SAAS;AAAA,IAClF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
import { createCompanyFixture, createPersonFixture, deleteEntityIfExists } from "@open-mercato/core/modules/core/__integration__/helpers/crmFixtures";
|
|
5
|
-
test.describe("TC-CRM-018: Person Display Name Edit And Undo", () => {
|
|
6
|
-
test("should edit person display name and undo the update", async ({ page, request }) => {
|
|
7
|
-
let token = null;
|
|
8
|
-
let companyId = null;
|
|
9
|
-
let personId = null;
|
|
10
|
-
try {
|
|
11
|
-
token = await getAuthToken(request);
|
|
12
|
-
const originalName = `QA TC-CRM-018 Person ${Date.now()}`;
|
|
13
|
-
companyId = await createCompanyFixture(request, token, `QA TC-CRM-018 Company ${Date.now()}`);
|
|
14
|
-
personId = await createPersonFixture(request, token, {
|
|
15
|
-
firstName: "QA",
|
|
16
|
-
lastName: "TCCRM018",
|
|
17
|
-
displayName: originalName,
|
|
18
|
-
companyEntityId: companyId
|
|
19
|
-
});
|
|
20
|
-
await login(page, "admin");
|
|
21
|
-
await page.goto(`/backend/customers/people/${personId}`);
|
|
22
|
-
const displayNameButton = page.getByRole("button", { name: /^Display name / }).first();
|
|
23
|
-
await expect(displayNameButton).toBeVisible();
|
|
24
|
-
const editButton = displayNameButton.locator("xpath=..").getByRole("button").nth(1);
|
|
25
|
-
await editButton.click();
|
|
26
|
-
let input = page.getByPlaceholder(/Enter (display name|full name|name)/i).first();
|
|
27
|
-
if (await input.count() === 0) {
|
|
28
|
-
input = page.locator('main input[type="text"]').first();
|
|
29
|
-
}
|
|
30
|
-
await expect(input).toBeVisible();
|
|
31
|
-
const updatedName = `${originalName} QA`;
|
|
32
|
-
await input.fill(updatedName);
|
|
33
|
-
await input.locator("xpath=ancestor::div[1]").getByRole("button", { name: /^Save/ }).click();
|
|
34
|
-
const readDisplayName = async () => {
|
|
35
|
-
const editInput = page.getByRole("textbox", { name: /Enter display name/i }).first();
|
|
36
|
-
if (await editInput.count() > 0) {
|
|
37
|
-
return (await editInput.inputValue() || "").replace(/\s+/g, " ").trim();
|
|
38
|
-
}
|
|
39
|
-
const summaryButton = page.getByRole("button", { name: /^Display name / }).first();
|
|
40
|
-
const raw = (await summaryButton.innerText() || "").trim();
|
|
41
|
-
return raw.replace(/^display name\s+/i, "").replace(/\s+/g, " ").trim();
|
|
42
|
-
};
|
|
43
|
-
await expect.poll(readDisplayName).toContain(updatedName);
|
|
44
|
-
await page.getByRole("button", { name: /^Undo(?: last action)?$/ }).click();
|
|
45
|
-
await expect.poll(readDisplayName).toContain(originalName);
|
|
46
|
-
} finally {
|
|
47
|
-
await deleteEntityIfExists(request, token, "/api/customers/people", personId);
|
|
48
|
-
await deleteEntityIfExists(request, token, "/api/customers/companies", companyId);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
//# sourceMappingURL=TC-CRM-018.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/customers/__integration__/TC-CRM-018.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\nimport { createCompanyFixture, createPersonFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';\n\n/**\n * TC-CRM-018: Person Display Name Edit And Undo\n */\ntest.describe('TC-CRM-018: Person Display Name Edit And Undo', () => {\n test('should edit person display name and undo the update', async ({ page, request }) => {\n let token: string | null = null;\n let companyId: string | null = null;\n let personId: string | null = null;\n\n try {\n token = await getAuthToken(request);\n const originalName = `QA TC-CRM-018 Person ${Date.now()}`;\n companyId = await createCompanyFixture(request, token, `QA TC-CRM-018 Company ${Date.now()}`);\n personId = await createPersonFixture(request, token, {\n firstName: 'QA',\n lastName: 'TCCRM018',\n displayName: originalName,\n companyEntityId: companyId,\n });\n\n await login(page, 'admin');\n await page.goto(`/backend/customers/people/${personId}`);\n\n const displayNameButton = page.getByRole('button', { name: /^Display name / }).first();\n await expect(displayNameButton).toBeVisible();\n const editButton = displayNameButton.locator('xpath=..').getByRole('button').nth(1);\n await editButton.click();\n\n let input = page.getByPlaceholder(/Enter (display name|full name|name)/i).first();\n if ((await input.count()) === 0) {\n input = page.locator('main input[type=\"text\"]').first();\n }\n await expect(input).toBeVisible();\n const updatedName = `${originalName} QA`;\n\n await input.fill(updatedName);\n await input.locator('xpath=ancestor::div[1]').getByRole('button', { name: /^Save/ }).click();\n\n const readDisplayName = async (): Promise<string> => {\n const editInput = page.getByRole('textbox', { name: /Enter display name/i }).first();\n if ((await editInput.count()) > 0) {\n return ((await editInput.inputValue()) || '').replace(/\\s+/g, ' ').trim();\n }\n const summaryButton = page.getByRole('button', { name: /^Display name / }).first();\n const raw = ((await summaryButton.innerText()) || '').trim();\n return raw.replace(/^display name\\s+/i, '').replace(/\\s+/g, ' ').trim();\n };\n\n await expect.poll(readDisplayName).toContain(updatedName);\n await page.getByRole('button', { name: /^Undo(?: last action)?$/ }).click();\n await expect.poll(readDisplayName).toContain(originalName);\n } finally {\n await deleteEntityIfExists(request, token, '/api/customers/people', personId);\n await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB,qBAAqB,4BAA4B;AAKhF,KAAK,SAAS,iDAAiD,MAAM;AACnE,OAAK,uDAAuD,OAAO,EAAE,MAAM,QAAQ,MAAM;AACvF,QAAI,QAAuB;AAC3B,QAAI,YAA2B;AAC/B,QAAI,WAA0B;AAE9B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,YAAM,eAAe,wBAAwB,KAAK,IAAI,CAAC;AACvD,kBAAY,MAAM,qBAAqB,SAAS,OAAO,yBAAyB,KAAK,IAAI,CAAC,EAAE;AAC5F,iBAAW,MAAM,oBAAoB,SAAS,OAAO;AAAA,QACnD,WAAW;AAAA,QACX,UAAU;AAAA,QACV,aAAa;AAAA,QACb,iBAAiB;AAAA,MACnB,CAAC;AAED,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK,KAAK,6BAA6B,QAAQ,EAAE;AAEvD,YAAM,oBAAoB,KAAK,UAAU,UAAU,EAAE,MAAM,iBAAiB,CAAC,EAAE,MAAM;AACrF,YAAM,OAAO,iBAAiB,EAAE,YAAY;AAC5C,YAAM,aAAa,kBAAkB,QAAQ,UAAU,EAAE,UAAU,QAAQ,EAAE,IAAI,CAAC;AAClF,YAAM,WAAW,MAAM;AAEvB,UAAI,QAAQ,KAAK,iBAAiB,sCAAsC,EAAE,MAAM;AAChF,UAAK,MAAM,MAAM,MAAM,MAAO,GAAG;AAC/B,gBAAQ,KAAK,QAAQ,yBAAyB,EAAE,MAAM;AAAA,MACxD;AACA,YAAM,OAAO,KAAK,EAAE,YAAY;AAChC,YAAM,cAAc,GAAG,YAAY;AAEnC,YAAM,MAAM,KAAK,WAAW;AAC5B,YAAM,MAAM,QAAQ,wBAAwB,EAAE,UAAU,UAAU,EAAE,MAAM,QAAQ,CAAC,EAAE,MAAM;AAE3F,YAAM,kBAAkB,YAA6B;AACnD,cAAM,YAAY,KAAK,UAAU,WAAW,EAAE,MAAM,sBAAsB,CAAC,EAAE,MAAM;AACnF,YAAK,MAAM,UAAU,MAAM,IAAK,GAAG;AACjC,kBAAS,MAAM,UAAU,WAAW,KAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,KAAK;AAAA,QAC1E;AACA,cAAM,gBAAgB,KAAK,UAAU,UAAU,EAAE,MAAM,iBAAiB,CAAC,EAAE,MAAM;AACjF,cAAM,OAAQ,MAAM,cAAc,UAAU,KAAM,IAAI,KAAK;AAC3D,eAAO,IAAI,QAAQ,qBAAqB,EAAE,EAAE,QAAQ,QAAQ,GAAG,EAAE,KAAK;AAAA,MACxE;AAEA,YAAM,OAAO,KAAK,eAAe,EAAE,UAAU,WAAW;AACxD,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,0BAA0B,CAAC,EAAE,MAAM;AAC1E,YAAM,OAAO,KAAK,eAAe,EAAE,UAAU,YAAY;AAAA,IAC3D,UAAE;AACA,YAAM,qBAAqB,SAAS,OAAO,yBAAyB,QAAQ;AAC5E,YAAM,qBAAqB,SAAS,OAAO,4BAA4B,SAAS;AAAA,IAClF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
import { createDealFixture, createPersonFixture, deleteEntityIfExists } from "@open-mercato/core/modules/core/__integration__/helpers/crmFixtures";
|
|
5
|
-
test.describe("TC-CRM-019: Deal Association Remove And Undo", () => {
|
|
6
|
-
test("should remove a linked person from deal and restore via undo", async ({ page, request }) => {
|
|
7
|
-
let token = null;
|
|
8
|
-
let personId = null;
|
|
9
|
-
let dealId = null;
|
|
10
|
-
const personDisplayName = `QA TC-CRM-019 Person ${Date.now()}`;
|
|
11
|
-
try {
|
|
12
|
-
token = await getAuthToken(request);
|
|
13
|
-
personId = await createPersonFixture(request, token, {
|
|
14
|
-
firstName: "QA",
|
|
15
|
-
lastName: `TCCRM019${Date.now()}`,
|
|
16
|
-
displayName: personDisplayName
|
|
17
|
-
});
|
|
18
|
-
dealId = await createDealFixture(request, token, {
|
|
19
|
-
title: `QA TC-CRM-019 Deal ${Date.now()}`,
|
|
20
|
-
personIds: [personId]
|
|
21
|
-
});
|
|
22
|
-
await login(page, "admin");
|
|
23
|
-
await page.goto(`/backend/customers/deals/${dealId}`);
|
|
24
|
-
const removeButtonName = `Remove ${personDisplayName}`;
|
|
25
|
-
await expect(page.getByRole("button", { name: removeButtonName, exact: true })).toBeVisible();
|
|
26
|
-
await page.getByRole("button", { name: removeButtonName, exact: true }).click();
|
|
27
|
-
await page.getByRole("button", { name: /Update deal/ }).click();
|
|
28
|
-
await expect(page.getByRole("button", { name: removeButtonName, exact: true })).toHaveCount(0);
|
|
29
|
-
await page.getByRole("button", { name: /^Undo(?: last action)?$/ }).click();
|
|
30
|
-
await expect(page.getByRole("button", { name: removeButtonName, exact: true })).toBeVisible();
|
|
31
|
-
} finally {
|
|
32
|
-
await deleteEntityIfExists(request, token, "/api/customers/deals", dealId);
|
|
33
|
-
await deleteEntityIfExists(request, token, "/api/customers/people", personId);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
//# sourceMappingURL=TC-CRM-019.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/customers/__integration__/TC-CRM-019.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\nimport { createDealFixture, createPersonFixture, deleteEntityIfExists } from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';\n\n/**\n * TC-CRM-019: Deal Association Remove And Undo\n */\ntest.describe('TC-CRM-019: Deal Association Remove And Undo', () => {\n test('should remove a linked person from deal and restore via undo', async ({ page, request }) => {\n let token: string | null = null;\n let personId: string | null = null;\n let dealId: string | null = null;\n const personDisplayName = `QA TC-CRM-019 Person ${Date.now()}`;\n\n try {\n token = await getAuthToken(request);\n personId = await createPersonFixture(request, token, {\n firstName: 'QA',\n lastName: `TCCRM019${Date.now()}`,\n displayName: personDisplayName,\n });\n dealId = await createDealFixture(request, token, {\n title: `QA TC-CRM-019 Deal ${Date.now()}`,\n personIds: [personId],\n });\n\n await login(page, 'admin');\n await page.goto(`/backend/customers/deals/${dealId}`);\n\n const removeButtonName = `Remove ${personDisplayName}`;\n await expect(page.getByRole('button', { name: removeButtonName, exact: true })).toBeVisible();\n await page.getByRole('button', { name: removeButtonName, exact: true }).click();\n await page.getByRole('button', { name: /Update deal/ }).click();\n\n await expect(page.getByRole('button', { name: removeButtonName, exact: true })).toHaveCount(0);\n await page.getByRole('button', { name: /^Undo(?: last action)?$/ }).click();\n await expect(page.getByRole('button', { name: removeButtonName, exact: true })).toBeVisible();\n } finally {\n await deleteEntityIfExists(request, token, '/api/customers/deals', dealId);\n await deleteEntityIfExists(request, token, '/api/customers/people', personId);\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB,qBAAqB,4BAA4B;AAK7E,KAAK,SAAS,gDAAgD,MAAM;AAClE,OAAK,gEAAgE,OAAO,EAAE,MAAM,QAAQ,MAAM;AAChG,QAAI,QAAuB;AAC3B,QAAI,WAA0B;AAC9B,QAAI,SAAwB;AAC5B,UAAM,oBAAoB,wBAAwB,KAAK,IAAI,CAAC;AAE5D,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,iBAAW,MAAM,oBAAoB,SAAS,OAAO;AAAA,QACnD,WAAW;AAAA,QACX,UAAU,WAAW,KAAK,IAAI,CAAC;AAAA,QAC/B,aAAa;AAAA,MACf,CAAC;AACD,eAAS,MAAM,kBAAkB,SAAS,OAAO;AAAA,QAC/C,OAAO,sBAAsB,KAAK,IAAI,CAAC;AAAA,QACvC,WAAW,CAAC,QAAQ;AAAA,MACtB,CAAC;AAED,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK,KAAK,4BAA4B,MAAM,EAAE;AAEpD,YAAM,mBAAmB,UAAU,iBAAiB;AACpD,YAAM,OAAO,KAAK,UAAU,UAAU,EAAE,MAAM,kBAAkB,OAAO,KAAK,CAAC,CAAC,EAAE,YAAY;AAC5F,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,kBAAkB,OAAO,KAAK,CAAC,EAAE,MAAM;AAC9E,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,cAAc,CAAC,EAAE,MAAM;AAE9D,YAAM,OAAO,KAAK,UAAU,UAAU,EAAE,MAAM,kBAAkB,OAAO,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;AAC7F,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,0BAA0B,CAAC,EAAE,MAAM;AAC1E,YAAM,OAAO,KAAK,UAAU,UAAU,EAAE,MAAM,kBAAkB,OAAO,KAAK,CAAC,CAAC,EAAE,YAAY;AAAA,IAC9F,UAAE;AACA,YAAM,qBAAqB,SAAS,OAAO,wBAAwB,MAAM;AACzE,YAAM,qBAAqB,SAAS,OAAO,yBAAyB,QAAQ;AAAA,IAC9E;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
import {
|
|
5
|
-
createCompanyFixture,
|
|
6
|
-
createDealFixture,
|
|
7
|
-
createPersonFixture,
|
|
8
|
-
deleteEntityIfExists
|
|
9
|
-
} from "@open-mercato/core/modules/core/__integration__/helpers/crmFixtures";
|
|
10
|
-
test.describe("TC-CRM-020: Deal Note And Activity Creation", () => {
|
|
11
|
-
test("should add a deal note and log a deal activity", async ({ page, request }) => {
|
|
12
|
-
let token = null;
|
|
13
|
-
let companyId = null;
|
|
14
|
-
let personId = null;
|
|
15
|
-
let dealId = null;
|
|
16
|
-
try {
|
|
17
|
-
token = await getAuthToken(request);
|
|
18
|
-
companyId = await createCompanyFixture(request, token, `QA TC-CRM-020 Company ${Date.now()}`);
|
|
19
|
-
personId = await createPersonFixture(request, token, {
|
|
20
|
-
firstName: "QA",
|
|
21
|
-
lastName: `TCCRM020${Date.now()}`,
|
|
22
|
-
displayName: `QA TC-CRM-020 Person ${Date.now()}`,
|
|
23
|
-
companyEntityId: companyId
|
|
24
|
-
});
|
|
25
|
-
dealId = await createDealFixture(request, token, {
|
|
26
|
-
title: `QA TC-CRM-020 Deal ${Date.now()}`,
|
|
27
|
-
companyIds: [companyId],
|
|
28
|
-
personIds: [personId]
|
|
29
|
-
});
|
|
30
|
-
await login(page, "admin");
|
|
31
|
-
await page.goto(`/backend/customers/deals/${dealId}`);
|
|
32
|
-
const noteText = `QA deal note ${Date.now()}`;
|
|
33
|
-
await page.getByRole("button", { name: /Add( a)? note/i }).first().click();
|
|
34
|
-
await page.getByRole("textbox", { name: /Write a note/i }).fill(noteText);
|
|
35
|
-
await page.getByRole("button", { name: /Add note.*Ctrl\+Enter/i }).click();
|
|
36
|
-
await expect(page.getByText(noteText)).toBeVisible();
|
|
37
|
-
const activitySubject = `QA deal activity ${Date.now()}`;
|
|
38
|
-
const activitiesTab = page.getByRole("tab", { name: "Activities" });
|
|
39
|
-
if (await activitiesTab.count() > 0) {
|
|
40
|
-
await activitiesTab.click();
|
|
41
|
-
} else {
|
|
42
|
-
await page.getByRole("button", { name: "Activities" }).click();
|
|
43
|
-
}
|
|
44
|
-
await page.getByRole("button", { name: /Log activity|Add an activity/i }).click();
|
|
45
|
-
const dialog = page.getByRole("dialog", { name: "Add activity" });
|
|
46
|
-
const linkedDealSelect = dialog.getByRole("combobox").nth(1);
|
|
47
|
-
const linkedDealOptions = await linkedDealSelect.locator("option").count();
|
|
48
|
-
if (linkedDealOptions > 1) {
|
|
49
|
-
await linkedDealSelect.selectOption({ index: 1 });
|
|
50
|
-
}
|
|
51
|
-
const typeSelect = dialog.getByRole("combobox").nth(2);
|
|
52
|
-
await typeSelect.selectOption({ label: "Call" });
|
|
53
|
-
await dialog.getByRole("textbox", { name: "Add a subject (optional)" }).fill(activitySubject);
|
|
54
|
-
await dialog.getByRole("textbox", { name: "Describe the interaction" }).fill("QA deal activity description");
|
|
55
|
-
await dialog.getByRole("button", { name: /Save activity/ }).click();
|
|
56
|
-
await expect(dialog).toBeHidden();
|
|
57
|
-
await expect(page.getByText("No activities yet")).toHaveCount(0);
|
|
58
|
-
} finally {
|
|
59
|
-
await deleteEntityIfExists(request, token, "/api/customers/deals", dealId);
|
|
60
|
-
await deleteEntityIfExists(request, token, "/api/customers/people", personId);
|
|
61
|
-
await deleteEntityIfExists(request, token, "/api/customers/companies", companyId);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
//# sourceMappingURL=TC-CRM-020.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/customers/__integration__/TC-CRM-020.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\nimport {\n createCompanyFixture,\n createDealFixture,\n createPersonFixture,\n deleteEntityIfExists,\n} from '@open-mercato/core/modules/core/__integration__/helpers/crmFixtures';\n\n/**\n * TC-CRM-020: Deal Note And Activity Creation\n */\ntest.describe('TC-CRM-020: Deal Note And Activity Creation', () => {\n test('should add a deal note and log a deal activity', async ({ page, request }) => {\n let token: string | null = null;\n let companyId: string | null = null;\n let personId: string | null = null;\n let dealId: string | null = null;\n\n try {\n token = await getAuthToken(request);\n companyId = await createCompanyFixture(request, token, `QA TC-CRM-020 Company ${Date.now()}`);\n personId = await createPersonFixture(request, token, {\n firstName: 'QA',\n lastName: `TCCRM020${Date.now()}`,\n displayName: `QA TC-CRM-020 Person ${Date.now()}`,\n companyEntityId: companyId,\n });\n dealId = await createDealFixture(request, token, {\n title: `QA TC-CRM-020 Deal ${Date.now()}`,\n companyIds: [companyId],\n personIds: [personId],\n });\n\n await login(page, 'admin');\n await page.goto(`/backend/customers/deals/${dealId}`);\n\n const noteText = `QA deal note ${Date.now()}`;\n await page.getByRole('button', { name: /Add( a)? note/i }).first().click();\n await page.getByRole('textbox', { name: /Write a note/i }).fill(noteText);\n await page.getByRole('button', { name: /Add note.*Ctrl\\+Enter/i }).click();\n await expect(page.getByText(noteText)).toBeVisible();\n\n const activitySubject = `QA deal activity ${Date.now()}`;\n const activitiesTab = page.getByRole('tab', { name: 'Activities' });\n if ((await activitiesTab.count()) > 0) {\n await activitiesTab.click();\n } else {\n await page.getByRole('button', { name: 'Activities' }).click();\n }\n await page.getByRole('button', { name: /Log activity|Add an activity/i }).click();\n\n const dialog = page.getByRole('dialog', { name: 'Add activity' });\n const linkedDealSelect = dialog.getByRole('combobox').nth(1);\n const linkedDealOptions = await linkedDealSelect.locator('option').count();\n if (linkedDealOptions > 1) {\n await linkedDealSelect.selectOption({ index: 1 });\n }\n const typeSelect = dialog.getByRole('combobox').nth(2);\n await typeSelect.selectOption({ label: 'Call' });\n await dialog.getByRole('textbox', { name: 'Add a subject (optional)' }).fill(activitySubject);\n await dialog.getByRole('textbox', { name: 'Describe the interaction' }).fill('QA deal activity description');\n await dialog.getByRole('button', { name: /Save activity/ }).click();\n await expect(dialog).toBeHidden();\n await expect(page.getByText('No activities yet')).toHaveCount(0);\n } finally {\n await deleteEntityIfExists(request, token, '/api/customers/deals', dealId);\n await deleteEntityIfExists(request, token, '/api/customers/people', personId);\n await deleteEntityIfExists(request, token, '/api/customers/companies', companyId);\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP,KAAK,SAAS,+CAA+C,MAAM;AACjE,OAAK,kDAAkD,OAAO,EAAE,MAAM,QAAQ,MAAM;AAClF,QAAI,QAAuB;AAC3B,QAAI,YAA2B;AAC/B,QAAI,WAA0B;AAC9B,QAAI,SAAwB;AAE5B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,kBAAY,MAAM,qBAAqB,SAAS,OAAO,yBAAyB,KAAK,IAAI,CAAC,EAAE;AAC5F,iBAAW,MAAM,oBAAoB,SAAS,OAAO;AAAA,QACnD,WAAW;AAAA,QACX,UAAU,WAAW,KAAK,IAAI,CAAC;AAAA,QAC/B,aAAa,wBAAwB,KAAK,IAAI,CAAC;AAAA,QAC/C,iBAAiB;AAAA,MACnB,CAAC;AACD,eAAS,MAAM,kBAAkB,SAAS,OAAO;AAAA,QAC/C,OAAO,sBAAsB,KAAK,IAAI,CAAC;AAAA,QACvC,YAAY,CAAC,SAAS;AAAA,QACtB,WAAW,CAAC,QAAQ;AAAA,MACtB,CAAC;AAED,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK,KAAK,4BAA4B,MAAM,EAAE;AAEpD,YAAM,WAAW,gBAAgB,KAAK,IAAI,CAAC;AAC3C,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM;AACzE,YAAM,KAAK,UAAU,WAAW,EAAE,MAAM,gBAAgB,CAAC,EAAE,KAAK,QAAQ;AACxE,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,yBAAyB,CAAC,EAAE,MAAM;AACzE,YAAM,OAAO,KAAK,UAAU,QAAQ,CAAC,EAAE,YAAY;AAEnD,YAAM,kBAAkB,oBAAoB,KAAK,IAAI,CAAC;AACtD,YAAM,gBAAgB,KAAK,UAAU,OAAO,EAAE,MAAM,aAAa,CAAC;AAClE,UAAK,MAAM,cAAc,MAAM,IAAK,GAAG;AACrC,cAAM,cAAc,MAAM;AAAA,MAC5B,OAAO;AACL,cAAM,KAAK,UAAU,UAAU,EAAE,MAAM,aAAa,CAAC,EAAE,MAAM;AAAA,MAC/D;AACA,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,gCAAgC,CAAC,EAAE,MAAM;AAEhF,YAAM,SAAS,KAAK,UAAU,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,YAAM,mBAAmB,OAAO,UAAU,UAAU,EAAE,IAAI,CAAC;AAC3D,YAAM,oBAAoB,MAAM,iBAAiB,QAAQ,QAAQ,EAAE,MAAM;AACzE,UAAI,oBAAoB,GAAG;AACzB,cAAM,iBAAiB,aAAa,EAAE,OAAO,EAAE,CAAC;AAAA,MAClD;AACA,YAAM,aAAa,OAAO,UAAU,UAAU,EAAE,IAAI,CAAC;AACrD,YAAM,WAAW,aAAa,EAAE,OAAO,OAAO,CAAC;AAC/C,YAAM,OAAO,UAAU,WAAW,EAAE,MAAM,2BAA2B,CAAC,EAAE,KAAK,eAAe;AAC5F,YAAM,OAAO,UAAU,WAAW,EAAE,MAAM,2BAA2B,CAAC,EAAE,KAAK,8BAA8B;AAC3G,YAAM,OAAO,UAAU,UAAU,EAAE,MAAM,gBAAgB,CAAC,EAAE,MAAM;AAClE,YAAM,OAAO,MAAM,EAAE,WAAW;AAChC,YAAM,OAAO,KAAK,UAAU,mBAAmB,CAAC,EAAE,YAAY,CAAC;AAAA,IACjE,UAAE;AACA,YAAM,qBAAqB,SAAS,OAAO,wBAAwB,MAAM;AACzE,YAAM,qBAAqB,SAAS,OAAO,yBAAyB,QAAQ;AAC5E,YAAM,qBAAqB,SAAS,OAAO,4BAA4B,SAAS;AAAA,IAClF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test";
|
|
2
|
-
import { getAuthToken, apiRequest } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
3
|
-
test.describe("TC-PROG-001: Progress Job Lifecycle", () => {
|
|
4
|
-
test("should create, list, update, and cancel a progress job", async ({ request }) => {
|
|
5
|
-
let token = null;
|
|
6
|
-
let jobId = null;
|
|
7
|
-
try {
|
|
8
|
-
token = await getAuthToken(request);
|
|
9
|
-
const createRes = await apiRequest(request, "POST", "/api/progress/jobs", {
|
|
10
|
-
token,
|
|
11
|
-
data: {
|
|
12
|
-
jobType: "integration-test",
|
|
13
|
-
name: `QA TC-PROG-001 ${Date.now()}`,
|
|
14
|
-
totalCount: 200,
|
|
15
|
-
cancellable: true
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
expect(createRes.status()).toBe(201);
|
|
19
|
-
const createBody = await createRes.json();
|
|
20
|
-
expect(createBody.id).toBeTruthy();
|
|
21
|
-
jobId = createBody.id;
|
|
22
|
-
const activeRes = await apiRequest(request, "GET", "/api/progress/active", { token });
|
|
23
|
-
expect(activeRes.ok()).toBeTruthy();
|
|
24
|
-
const activeBody = await activeRes.json();
|
|
25
|
-
const activeIds = activeBody.active.map((j) => j.id);
|
|
26
|
-
expect(activeIds).toContain(jobId);
|
|
27
|
-
const updateRes = await apiRequest(request, "PUT", `/api/progress/jobs/${jobId}`, {
|
|
28
|
-
token,
|
|
29
|
-
data: { processedCount: 80, totalCount: 200 }
|
|
30
|
-
});
|
|
31
|
-
expect(updateRes.ok()).toBeTruthy();
|
|
32
|
-
const updateBody = await updateRes.json();
|
|
33
|
-
expect(updateBody.ok).toBe(true);
|
|
34
|
-
expect(updateBody.progressPercent).toBe(40);
|
|
35
|
-
const cancelRes = await apiRequest(request, "DELETE", `/api/progress/jobs/${jobId}`, { token });
|
|
36
|
-
expect(cancelRes.ok()).toBeTruthy();
|
|
37
|
-
const cancelBody = await cancelRes.json();
|
|
38
|
-
expect(cancelBody.ok).toBe(true);
|
|
39
|
-
const detailRes = await apiRequest(request, "GET", `/api/progress/jobs/${jobId}`, { token });
|
|
40
|
-
expect(detailRes.ok()).toBeTruthy();
|
|
41
|
-
const detailBody = await detailRes.json();
|
|
42
|
-
expect(detailBody.status).toBe("cancelled");
|
|
43
|
-
} finally {
|
|
44
|
-
if (token && jobId) {
|
|
45
|
-
await apiRequest(request, "DELETE", `/api/progress/jobs/${jobId}`, { token }).catch(() => {
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=TC-PROG-001.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/progress/__integration__/TC-PROG-001.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { test, expect } from '@playwright/test';\nimport { getAuthToken, apiRequest } from '@open-mercato/core/modules/core/__integration__/helpers/api';\n\n/**\n * TC-PROG-001: Progress Job Lifecycle\n * Covers: create, list active, update progress, cancel\n */\ntest.describe('TC-PROG-001: Progress Job Lifecycle', () => {\n test('should create, list, update, and cancel a progress job', async ({ request }) => {\n let token: string | null = null;\n let jobId: string | null = null;\n\n try {\n token = await getAuthToken(request);\n\n // 1. Create a job via POST /api/progress/jobs\n const createRes = await apiRequest(request, 'POST', '/api/progress/jobs', {\n token,\n data: {\n jobType: 'integration-test',\n name: `QA TC-PROG-001 ${Date.now()}`,\n totalCount: 200,\n cancellable: true,\n },\n });\n expect(createRes.status()).toBe(201);\n const createBody = await createRes.json();\n expect(createBody.id).toBeTruthy();\n jobId = createBody.id;\n\n // 2. Verify it appears in GET /api/progress/active\n const activeRes = await apiRequest(request, 'GET', '/api/progress/active', { token });\n expect(activeRes.ok()).toBeTruthy();\n const activeBody = await activeRes.json();\n const activeIds = activeBody.active.map((j: { id: string }) => j.id);\n expect(activeIds).toContain(jobId);\n\n // 3. Update progress via PUT /api/progress/jobs/:id\n const updateRes = await apiRequest(request, 'PUT', `/api/progress/jobs/${jobId}`, {\n token,\n data: { processedCount: 80, totalCount: 200 },\n });\n expect(updateRes.ok()).toBeTruthy();\n const updateBody = await updateRes.json();\n expect(updateBody.ok).toBe(true);\n expect(updateBody.progressPercent).toBe(40);\n\n // 4. Cancel job via DELETE /api/progress/jobs/:id\n const cancelRes = await apiRequest(request, 'DELETE', `/api/progress/jobs/${jobId}`, { token });\n expect(cancelRes.ok()).toBeTruthy();\n const cancelBody = await cancelRes.json();\n expect(cancelBody.ok).toBe(true);\n\n // 5. Verify the job is now cancelled (pending jobs cancel immediately)\n const detailRes = await apiRequest(request, 'GET', `/api/progress/jobs/${jobId}`, { token });\n expect(detailRes.ok()).toBeTruthy();\n const detailBody = await detailRes.json();\n expect(detailBody.status).toBe('cancelled');\n } finally {\n // Jobs are soft state \u2014 no explicit cleanup needed.\n // If the test created a job that wasn't cancelled, cancel it to keep state clean.\n if (token && jobId) {\n await apiRequest(request, 'DELETE', `/api/progress/jobs/${jobId}`, { token }).catch(() => {});\n }\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,MAAM,cAAc;AAC7B,SAAS,cAAc,kBAAkB;AAMzC,KAAK,SAAS,uCAAuC,MAAM;AACzD,OAAK,0DAA0D,OAAO,EAAE,QAAQ,MAAM;AACpF,QAAI,QAAuB;AAC3B,QAAI,QAAuB;AAE3B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAGlC,YAAM,YAAY,MAAM,WAAW,SAAS,QAAQ,sBAAsB;AAAA,QACxE;AAAA,QACA,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,MAAM,kBAAkB,KAAK,IAAI,CAAC;AAAA,UAClC,YAAY;AAAA,UACZ,aAAa;AAAA,QACf;AAAA,MACF,CAAC;AACD,aAAO,UAAU,OAAO,CAAC,EAAE,KAAK,GAAG;AACnC,YAAM,aAAa,MAAM,UAAU,KAAK;AACxC,aAAO,WAAW,EAAE,EAAE,WAAW;AACjC,cAAQ,WAAW;AAGnB,YAAM,YAAY,MAAM,WAAW,SAAS,OAAO,wBAAwB,EAAE,MAAM,CAAC;AACpF,aAAO,UAAU,GAAG,CAAC,EAAE,WAAW;AAClC,YAAM,aAAa,MAAM,UAAU,KAAK;AACxC,YAAM,YAAY,WAAW,OAAO,IAAI,CAAC,MAAsB,EAAE,EAAE;AACnE,aAAO,SAAS,EAAE,UAAU,KAAK;AAGjC,YAAM,YAAY,MAAM,WAAW,SAAS,OAAO,sBAAsB,KAAK,IAAI;AAAA,QAChF;AAAA,QACA,MAAM,EAAE,gBAAgB,IAAI,YAAY,IAAI;AAAA,MAC9C,CAAC;AACD,aAAO,UAAU,GAAG,CAAC,EAAE,WAAW;AAClC,YAAM,aAAa,MAAM,UAAU,KAAK;AACxC,aAAO,WAAW,EAAE,EAAE,KAAK,IAAI;AAC/B,aAAO,WAAW,eAAe,EAAE,KAAK,EAAE;AAG1C,YAAM,YAAY,MAAM,WAAW,SAAS,UAAU,sBAAsB,KAAK,IAAI,EAAE,MAAM,CAAC;AAC9F,aAAO,UAAU,GAAG,CAAC,EAAE,WAAW;AAClC,YAAM,aAAa,MAAM,UAAU,KAAK;AACxC,aAAO,WAAW,EAAE,EAAE,KAAK,IAAI;AAG/B,YAAM,YAAY,MAAM,WAAW,SAAS,OAAO,sBAAsB,KAAK,IAAI,EAAE,MAAM,CAAC;AAC3F,aAAO,UAAU,GAAG,CAAC,EAAE,WAAW;AAClC,YAAM,aAAa,MAAM,UAAU,KAAK;AACxC,aAAO,WAAW,MAAM,EAAE,KAAK,WAAW;AAAA,IAC5C,UAAE;AAGA,UAAI,SAAS,OAAO;AAClB,cAAM,WAAW,SAAS,UAAU,sBAAsB,KAAK,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MAC9F;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
import {
|
|
5
|
-
createResourceFixture,
|
|
6
|
-
deleteResourceIfExists
|
|
7
|
-
} from "./helpers/resourcesFixtures.js";
|
|
8
|
-
const integrationMeta = {
|
|
9
|
-
dependsOnModules: ["resources", "audit_logs"]
|
|
10
|
-
};
|
|
11
|
-
const versionHistoryTitleRegex = /Version History/i;
|
|
12
|
-
const resourceSubtitleRegex = /Resource profile and activity/i;
|
|
13
|
-
const updateResourceActionRegex = /Update resource|resources\.resources\.update/i;
|
|
14
|
-
test.describe("TC-INT-007: Resource Detail Header Pattern", () => {
|
|
15
|
-
test("should render detail header with title, subtitle and back navigation", async ({
|
|
16
|
-
page,
|
|
17
|
-
request
|
|
18
|
-
}) => {
|
|
19
|
-
let token = null;
|
|
20
|
-
let resourceId = null;
|
|
21
|
-
const stamp = Date.now();
|
|
22
|
-
const resourceName = `QA TC-INT-007 Resource ${stamp}`;
|
|
23
|
-
try {
|
|
24
|
-
token = await getAuthToken(request, "admin");
|
|
25
|
-
resourceId = await createResourceFixture(request, token, resourceName);
|
|
26
|
-
await login(page, "admin");
|
|
27
|
-
await page.goto(
|
|
28
|
-
`/backend/resources/resources/${encodeURIComponent(resourceId)}`
|
|
29
|
-
);
|
|
30
|
-
await expect(
|
|
31
|
-
page.getByRole("heading", { name: resourceName })
|
|
32
|
-
).toBeVisible();
|
|
33
|
-
await expect(page.getByText(resourceSubtitleRegex)).toBeVisible();
|
|
34
|
-
await expect(
|
|
35
|
-
page.getByRole("link", { name: /Back to resources/i })
|
|
36
|
-
).toBeVisible();
|
|
37
|
-
const historyButton = page.getByRole("button", { name: versionHistoryTitleRegex }).first();
|
|
38
|
-
await expect(historyButton).toBeVisible();
|
|
39
|
-
} finally {
|
|
40
|
-
await deleteResourceIfExists(request, token, resourceId);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
test("should show resource update in version history after editing details", async ({
|
|
44
|
-
page,
|
|
45
|
-
request
|
|
46
|
-
}) => {
|
|
47
|
-
let token = null;
|
|
48
|
-
let resourceId = null;
|
|
49
|
-
const stamp = Date.now();
|
|
50
|
-
const resourceName = `QA TC-INT-007 Resource ${stamp}`;
|
|
51
|
-
const updatedResourceName = `${resourceName} Updated`;
|
|
52
|
-
try {
|
|
53
|
-
token = await getAuthToken(request, "admin");
|
|
54
|
-
resourceId = await createResourceFixture(request, token, resourceName);
|
|
55
|
-
await login(page, "admin");
|
|
56
|
-
await page.goto(
|
|
57
|
-
`/backend/resources/resources/${encodeURIComponent(resourceId)}`
|
|
58
|
-
);
|
|
59
|
-
await expect(
|
|
60
|
-
page.getByRole("heading", { name: resourceName })
|
|
61
|
-
).toBeVisible();
|
|
62
|
-
const nameInput = page.getByRole("textbox", { name: /Name|Nazwa|Nombre/i }).first();
|
|
63
|
-
await expect(nameInput).toBeVisible();
|
|
64
|
-
await nameInput.fill(updatedResourceName);
|
|
65
|
-
await page.getByRole("button", { name: /^Save$/i }).first().click();
|
|
66
|
-
await expect(page).toHaveURL(/\/backend\/resources\/resources$/i);
|
|
67
|
-
await page.goto(
|
|
68
|
-
`/backend/resources/resources/${encodeURIComponent(resourceId)}`
|
|
69
|
-
);
|
|
70
|
-
const historyButton = page.getByRole("button", { name: versionHistoryTitleRegex }).first();
|
|
71
|
-
await expect(historyButton).toBeVisible();
|
|
72
|
-
await historyButton.click();
|
|
73
|
-
const historyDialog = page.getByRole("dialog", {
|
|
74
|
-
name: versionHistoryTitleRegex
|
|
75
|
-
});
|
|
76
|
-
await expect(historyDialog).toBeVisible();
|
|
77
|
-
await expect(
|
|
78
|
-
historyDialog.getByText(updateResourceActionRegex).first()
|
|
79
|
-
).toBeVisible();
|
|
80
|
-
} finally {
|
|
81
|
-
await deleteResourceIfExists(request, token, resourceId);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
export {
|
|
86
|
-
integrationMeta
|
|
87
|
-
};
|
|
88
|
-
//# sourceMappingURL=TC-INT-007.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/resources/__integration__/TC-INT-007.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from \"@playwright/test\";\nimport { login } from \"@open-mercato/core/modules/core/__integration__/helpers/auth\";\nimport { getAuthToken } from \"@open-mercato/core/modules/core/__integration__/helpers/api\";\nimport {\n createResourceFixture,\n deleteResourceIfExists,\n} from \"./helpers/resourcesFixtures\";\n\nexport const integrationMeta = {\n dependsOnModules: [\"resources\", \"audit_logs\"],\n};\n\nconst versionHistoryTitleRegex = /Version History/i;\nconst resourceSubtitleRegex = /Resource profile and activity/i;\nconst updateResourceActionRegex =\n /Update resource|resources\\.resources\\.update/i;\n\n/**\n * TC-INT-007: Resource Detail Header Pattern\n */\ntest.describe(\"TC-INT-007: Resource Detail Header Pattern\", () => {\n test(\"should render detail header with title, subtitle and back navigation\", async ({\n page,\n request,\n }) => {\n let token: string | null = null;\n let resourceId: string | null = null;\n const stamp = Date.now();\n const resourceName = `QA TC-INT-007 Resource ${stamp}`;\n\n try {\n token = await getAuthToken(request, \"admin\");\n resourceId = await createResourceFixture(request, token, resourceName);\n\n await login(page, \"admin\");\n await page.goto(\n `/backend/resources/resources/${encodeURIComponent(resourceId)}`,\n );\n\n await expect(\n page.getByRole(\"heading\", { name: resourceName }),\n ).toBeVisible();\n await expect(page.getByText(resourceSubtitleRegex)).toBeVisible();\n await expect(\n page.getByRole(\"link\", { name: /Back to resources/i }),\n ).toBeVisible();\n const historyButton = page\n .getByRole(\"button\", { name: versionHistoryTitleRegex })\n .first();\n await expect(historyButton).toBeVisible();\n } finally {\n await deleteResourceIfExists(request, token, resourceId);\n }\n });\n\n test(\"should show resource update in version history after editing details\", async ({\n page,\n request,\n }) => {\n let token: string | null = null;\n let resourceId: string | null = null;\n const stamp = Date.now();\n const resourceName = `QA TC-INT-007 Resource ${stamp}`;\n const updatedResourceName = `${resourceName} Updated`;\n\n try {\n token = await getAuthToken(request, \"admin\");\n resourceId = await createResourceFixture(request, token, resourceName);\n\n await login(page, \"admin\");\n await page.goto(\n `/backend/resources/resources/${encodeURIComponent(resourceId)}`,\n );\n await expect(\n page.getByRole(\"heading\", { name: resourceName }),\n ).toBeVisible();\n\n const nameInput = page\n .getByRole(\"textbox\", { name: /Name|Nazwa|Nombre/i })\n .first();\n await expect(nameInput).toBeVisible();\n await nameInput.fill(updatedResourceName);\n await page\n .getByRole(\"button\", { name: /^Save$/i })\n .first()\n .click();\n\n await expect(page).toHaveURL(/\\/backend\\/resources\\/resources$/i);\n await page.goto(\n `/backend/resources/resources/${encodeURIComponent(resourceId)}`,\n );\n\n const historyButton = page\n .getByRole(\"button\", { name: versionHistoryTitleRegex })\n .first();\n await expect(historyButton).toBeVisible();\n await historyButton.click();\n\n const historyDialog = page.getByRole(\"dialog\", {\n name: versionHistoryTitleRegex,\n });\n await expect(historyDialog).toBeVisible();\n await expect(\n historyDialog.getByText(updateResourceActionRegex).first(),\n ).toBeVisible();\n } finally {\n await deleteResourceIfExists(request, token, resourceId);\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEA,MAAM,kBAAkB;AAAA,EAC7B,kBAAkB,CAAC,aAAa,YAAY;AAC9C;AAEA,MAAM,2BAA2B;AACjC,MAAM,wBAAwB;AAC9B,MAAM,4BACJ;AAKF,KAAK,SAAS,8CAA8C,MAAM;AAChE,OAAK,wEAAwE,OAAO;AAAA,IAClF;AAAA,IACA;AAAA,EACF,MAAM;AACJ,QAAI,QAAuB;AAC3B,QAAI,aAA4B;AAChC,UAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,eAAe,0BAA0B,KAAK;AAEpD,QAAI;AACF,cAAQ,MAAM,aAAa,SAAS,OAAO;AAC3C,mBAAa,MAAM,sBAAsB,SAAS,OAAO,YAAY;AAErE,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK;AAAA,QACT,gCAAgC,mBAAmB,UAAU,CAAC;AAAA,MAChE;AAEA,YAAM;AAAA,QACJ,KAAK,UAAU,WAAW,EAAE,MAAM,aAAa,CAAC;AAAA,MAClD,EAAE,YAAY;AACd,YAAM,OAAO,KAAK,UAAU,qBAAqB,CAAC,EAAE,YAAY;AAChE,YAAM;AAAA,QACJ,KAAK,UAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAAA,MACvD,EAAE,YAAY;AACd,YAAM,gBAAgB,KACnB,UAAU,UAAU,EAAE,MAAM,yBAAyB,CAAC,EACtD,MAAM;AACT,YAAM,OAAO,aAAa,EAAE,YAAY;AAAA,IAC1C,UAAE;AACA,YAAM,uBAAuB,SAAS,OAAO,UAAU;AAAA,IACzD;AAAA,EACF,CAAC;AAED,OAAK,wEAAwE,OAAO;AAAA,IAClF;AAAA,IACA;AAAA,EACF,MAAM;AACJ,QAAI,QAAuB;AAC3B,QAAI,aAA4B;AAChC,UAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,eAAe,0BAA0B,KAAK;AACpD,UAAM,sBAAsB,GAAG,YAAY;AAE3C,QAAI;AACF,cAAQ,MAAM,aAAa,SAAS,OAAO;AAC3C,mBAAa,MAAM,sBAAsB,SAAS,OAAO,YAAY;AAErE,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK;AAAA,QACT,gCAAgC,mBAAmB,UAAU,CAAC;AAAA,MAChE;AACA,YAAM;AAAA,QACJ,KAAK,UAAU,WAAW,EAAE,MAAM,aAAa,CAAC;AAAA,MAClD,EAAE,YAAY;AAEd,YAAM,YAAY,KACf,UAAU,WAAW,EAAE,MAAM,qBAAqB,CAAC,EACnD,MAAM;AACT,YAAM,OAAO,SAAS,EAAE,YAAY;AACpC,YAAM,UAAU,KAAK,mBAAmB;AACxC,YAAM,KACH,UAAU,UAAU,EAAE,MAAM,UAAU,CAAC,EACvC,MAAM,EACN,MAAM;AAET,YAAM,OAAO,IAAI,EAAE,UAAU,mCAAmC;AAChE,YAAM,KAAK;AAAA,QACT,gCAAgC,mBAAmB,UAAU,CAAC;AAAA,MAChE;AAEA,YAAM,gBAAgB,KACnB,UAAU,UAAU,EAAE,MAAM,yBAAyB,CAAC,EACtD,MAAM;AACT,YAAM,OAAO,aAAa,EAAE,YAAY;AACxC,YAAM,cAAc,MAAM;AAE1B,YAAM,gBAAgB,KAAK,UAAU,UAAU;AAAA,QAC7C,MAAM;AAAA,MACR,CAAC;AACD,YAAM,OAAO,aAAa,EAAE,YAAY;AACxC,YAAM;AAAA,QACJ,cAAc,UAAU,yBAAyB,EAAE,MAAM;AAAA,MAC3D,EAAE,YAAY;AAAA,IAChB,UAAE;AACA,YAAM,uBAAuB,SAAS,OAAO,UAAU;AAAA,IACzD;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { expect } from "@playwright/test";
|
|
2
|
-
import { apiRequest } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
3
|
-
function readStringId(payload) {
|
|
4
|
-
if (!payload || typeof payload !== "object") return null;
|
|
5
|
-
const record = payload;
|
|
6
|
-
const id = record.id;
|
|
7
|
-
return typeof id === "string" && id.trim().length > 0 ? id.trim() : null;
|
|
8
|
-
}
|
|
9
|
-
async function createResourceFixture(request, token, name) {
|
|
10
|
-
const response = await apiRequest(
|
|
11
|
-
request,
|
|
12
|
-
"POST",
|
|
13
|
-
"/api/resources/resources",
|
|
14
|
-
{
|
|
15
|
-
token,
|
|
16
|
-
data: { name }
|
|
17
|
-
}
|
|
18
|
-
);
|
|
19
|
-
expect(
|
|
20
|
-
response.ok(),
|
|
21
|
-
`Resource fixture should be created (status ${response.status()})`
|
|
22
|
-
).toBeTruthy();
|
|
23
|
-
const payload = await response.json();
|
|
24
|
-
const resourceId = readStringId(payload);
|
|
25
|
-
expect(
|
|
26
|
-
resourceId,
|
|
27
|
-
"Resource id should be returned by create response"
|
|
28
|
-
).toBeTruthy();
|
|
29
|
-
return resourceId;
|
|
30
|
-
}
|
|
31
|
-
async function deleteResourceIfExists(request, token, resourceId) {
|
|
32
|
-
if (!token || !resourceId) return;
|
|
33
|
-
await apiRequest(
|
|
34
|
-
request,
|
|
35
|
-
"DELETE",
|
|
36
|
-
`/api/resources/resources?id=${encodeURIComponent(resourceId)}`,
|
|
37
|
-
{ token }
|
|
38
|
-
).catch(() => {
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
export {
|
|
42
|
-
createResourceFixture,
|
|
43
|
-
deleteResourceIfExists
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=resourcesFixtures.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/modules/resources/__integration__/helpers/resourcesFixtures.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, type APIRequestContext } from \"@playwright/test\";\nimport { apiRequest } from \"@open-mercato/core/modules/core/__integration__/helpers/api\";\n\nfunction readStringId(payload: unknown): string | null {\n if (!payload || typeof payload !== \"object\") return null;\n const record = payload as Record<string, unknown>;\n const id = record.id;\n return typeof id === \"string\" && id.trim().length > 0 ? id.trim() : null;\n}\n\nexport async function createResourceFixture(\n request: APIRequestContext,\n token: string,\n name: string,\n): Promise<string> {\n const response = await apiRequest(\n request,\n \"POST\",\n \"/api/resources/resources\",\n {\n token,\n data: { name },\n },\n );\n expect(\n response.ok(),\n `Resource fixture should be created (status ${response.status()})`,\n ).toBeTruthy();\n const payload = await response.json();\n const resourceId = readStringId(payload);\n expect(\n resourceId,\n \"Resource id should be returned by create response\",\n ).toBeTruthy();\n return resourceId as string;\n}\n\nexport async function deleteResourceIfExists(\n request: APIRequestContext,\n token: string | null,\n resourceId: string | null,\n): Promise<void> {\n if (!token || !resourceId) return;\n await apiRequest(\n request,\n \"DELETE\",\n `/api/resources/resources?id=${encodeURIComponent(resourceId)}`,\n { token },\n ).catch(() => {});\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,cAAsC;AAC/C,SAAS,kBAAkB;AAE3B,SAAS,aAAa,SAAiC;AACrD,MAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;AACpD,QAAM,SAAS;AACf,QAAM,KAAK,OAAO;AAClB,SAAO,OAAO,OAAO,YAAY,GAAG,KAAK,EAAE,SAAS,IAAI,GAAG,KAAK,IAAI;AACtE;AAEA,eAAsB,sBACpB,SACA,OACA,MACiB;AACjB,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAAA,MACA,MAAM,EAAE,KAAK;AAAA,IACf;AAAA,EACF;AACA;AAAA,IACE,SAAS,GAAG;AAAA,IACZ,8CAA8C,SAAS,OAAO,CAAC;AAAA,EACjE,EAAE,WAAW;AACb,QAAM,UAAU,MAAM,SAAS,KAAK;AACpC,QAAM,aAAa,aAAa,OAAO;AACvC;AAAA,IACE;AAAA,IACA;AAAA,EACF,EAAE,WAAW;AACb,SAAO;AACT;AAEA,eAAsB,uBACpB,SACA,OACA,YACe;AACf,MAAI,CAAC,SAAS,CAAC,WAAY;AAC3B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,+BAA+B,mBAAmB,UAAU,CAAC;AAAA,IAC7D,EAAE,MAAM;AAAA,EACV,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AAClB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { addCustomLine, createSalesDocument } from "@open-mercato/core/modules/core/__integration__/helpers/salesUi";
|
|
4
|
-
test.describe("TC-SALES-001: Quote Creation", () => {
|
|
5
|
-
test("should create a quote and add a line from UI", async ({ page }) => {
|
|
6
|
-
const lineName = `QA TC-SALES-001 ${Date.now()}`;
|
|
7
|
-
await login(page, "admin");
|
|
8
|
-
const quoteId = await createSalesDocument(page, { kind: "quote" });
|
|
9
|
-
await addCustomLine(page, {
|
|
10
|
-
name: lineName,
|
|
11
|
-
quantity: 2,
|
|
12
|
-
unitPriceGross: 30
|
|
13
|
-
});
|
|
14
|
-
expect(quoteId).toMatch(/[0-9a-f-]{36}/i);
|
|
15
|
-
const row = page.getByRole("row", { name: new RegExp(lineName, "i") });
|
|
16
|
-
await expect(row).toBeVisible();
|
|
17
|
-
await expect(row).toContainText("$60.00 gross");
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=TC-SALES-001.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/sales/__integration__/TC-SALES-001.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { addCustomLine, createSalesDocument } from '@open-mercato/core/modules/core/__integration__/helpers/salesUi';\n\n/**\n * TC-SALES-001: Quote Creation\n * Source: .ai/qa/scenarios/TC-SALES-001-quote-creation.md\n */\ntest.describe('TC-SALES-001: Quote Creation', () => {\n test('should create a quote and add a line from UI', async ({ page }) => {\n const lineName = `QA TC-SALES-001 ${Date.now()}`;\n\n await login(page, 'admin');\n const quoteId = await createSalesDocument(page, { kind: 'quote' });\n await addCustomLine(page, {\n name: lineName,\n quantity: 2,\n unitPriceGross: 30,\n });\n\n expect(quoteId).toMatch(/[0-9a-f-]{36}/i);\n const row = page.getByRole('row', { name: new RegExp(lineName, 'i') });\n await expect(row).toBeVisible();\n await expect(row).toContainText('$60.00 gross');\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,eAAe,2BAA2B;AAMnD,KAAK,SAAS,gCAAgC,MAAM;AAClD,OAAK,gDAAgD,OAAO,EAAE,KAAK,MAAM;AACvE,UAAM,WAAW,mBAAmB,KAAK,IAAI,CAAC;AAE9C,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,UAAU,MAAM,oBAAoB,MAAM,EAAE,MAAM,QAAQ,CAAC;AACjE,UAAM,cAAc,MAAM;AAAA,MACxB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,gBAAgB;AAAA,IAClB,CAAC;AAED,WAAO,OAAO,EAAE,QAAQ,gBAAgB;AACxC,UAAM,MAAM,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC;AACrE,UAAM,OAAO,GAAG,EAAE,YAAY;AAC9B,UAAM,OAAO,GAAG,EAAE,cAAc,cAAc;AAAA,EAChD,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { addCustomLine, createSalesDocument } from "@open-mercato/core/modules/core/__integration__/helpers/salesUi";
|
|
4
|
-
test.describe("TC-SALES-002: Quote To Order Conversion", () => {
|
|
5
|
-
test("should convert quote into order from actions menu", async ({ page }) => {
|
|
6
|
-
await login(page, "admin");
|
|
7
|
-
await createSalesDocument(page, { kind: "quote" });
|
|
8
|
-
await addCustomLine(page, {
|
|
9
|
-
name: `QA TC-SALES-002 ${Date.now()}`,
|
|
10
|
-
quantity: 1,
|
|
11
|
-
unitPriceGross: 25
|
|
12
|
-
});
|
|
13
|
-
await page.getByRole("button", { name: /^Actions$/i }).click();
|
|
14
|
-
const convertMenuItem = page.getByRole("menuitem", { name: /Convert to order/i });
|
|
15
|
-
const convertButton = page.getByRole("button", { name: /Convert to order/i });
|
|
16
|
-
if (await convertMenuItem.count()) {
|
|
17
|
-
await convertMenuItem.first().click();
|
|
18
|
-
} else if (await convertButton.count()) {
|
|
19
|
-
await convertButton.first().click();
|
|
20
|
-
} else {
|
|
21
|
-
test.skip(true, "Convert to order action is not exposed in this environment state.");
|
|
22
|
-
}
|
|
23
|
-
const confirmButton = page.getByRole("button", { name: /Convert|Create order|Continue/i }).last();
|
|
24
|
-
if (await confirmButton.isVisible().catch(() => false)) {
|
|
25
|
-
await confirmButton.click();
|
|
26
|
-
}
|
|
27
|
-
await expect(page).toHaveURL(/\/backend\/sales\/documents\/[0-9a-f-]{36}\?kind=order$/i);
|
|
28
|
-
await expect(page.getByText("Sales order", { exact: true })).toBeVisible();
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
//# sourceMappingURL=TC-SALES-002.spec.js.map
|