@elevasis/core 0.23.0 → 0.24.1
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/dist/index.d.ts +4343 -2690
- package/dist/index.js +1101 -156
- package/dist/knowledge/index.d.ts +574 -210
- package/dist/knowledge/index.js +104 -1
- package/dist/organization-model/index.d.ts +4343 -2690
- package/dist/organization-model/index.js +1101 -156
- package/dist/test-utils/index.d.ts +483 -109
- package/dist/test-utils/index.js +904 -144
- package/package.json +3 -3
- package/src/README.md +14 -14
- package/src/__tests__/publish.test.ts +24 -24
- package/src/__tests__/template-core-compatibility.test.ts +9 -12
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2137 -2093
- package/src/_gen/__tests__/scaffold-contracts.test.ts +30 -30
- package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +217 -217
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +69 -69
- package/src/auth/multi-tenancy/credentials/server/kek-loader.ts +37 -37
- package/src/auth/multi-tenancy/index.ts +26 -26
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +104 -104
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +143 -143
- package/src/auth/multi-tenancy/memberships/index.ts +26 -26
- package/src/auth/multi-tenancy/memberships/membership.ts +130 -130
- package/src/auth/multi-tenancy/organizations/__tests__/api-schemas.test.ts +194 -194
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +136 -136
- package/src/auth/multi-tenancy/permissions.test.ts +42 -42
- package/src/auth/multi-tenancy/permissions.ts +123 -123
- package/src/auth/multi-tenancy/role-management/api-schemas.ts +78 -78
- package/src/auth/multi-tenancy/role-management/index.ts +16 -16
- package/src/auth/multi-tenancy/theme-presets.ts +45 -45
- package/src/auth/multi-tenancy/types.ts +57 -57
- package/src/auth/multi-tenancy/users/api-schemas.ts +165 -165
- package/src/business/README.md +2 -2
- package/src/business/acquisition/activity-events.test.ts +250 -250
- package/src/business/acquisition/activity-events.ts +93 -93
- package/src/business/acquisition/api-schemas.test.ts +1883 -1843
- package/src/business/acquisition/api-schemas.ts +1492 -1497
- package/src/business/acquisition/build-templates.test.ts +240 -240
- package/src/business/acquisition/build-templates.ts +98 -98
- package/src/business/acquisition/crm-next-action.test.ts +262 -262
- package/src/business/acquisition/crm-next-action.ts +220 -220
- package/src/business/acquisition/crm-priority.test.ts +216 -216
- package/src/business/acquisition/crm-priority.ts +349 -349
- package/src/business/acquisition/crm-state-actions.test.ts +153 -153
- package/src/business/acquisition/deal-ownership.test.ts +351 -351
- package/src/business/acquisition/deal-ownership.ts +120 -120
- package/src/business/acquisition/derive-actions.test.ts +129 -104
- package/src/business/acquisition/derive-actions.ts +74 -84
- package/src/business/acquisition/index.ts +171 -170
- package/src/business/acquisition/ontology-validation.ts +309 -0
- package/src/business/acquisition/stateful.ts +30 -30
- package/src/business/acquisition/types.ts +396 -396
- package/src/business/clients/api-schemas.test.ts +115 -115
- package/src/business/clients/api-schemas.ts +158 -158
- package/src/business/clients/index.ts +1 -1
- package/src/business/crm/api-schemas.ts +40 -40
- package/src/business/crm/index.ts +1 -1
- package/src/business/deals/api-schemas.ts +87 -87
- package/src/business/deals/index.ts +1 -1
- package/src/business/index.ts +5 -5
- package/src/business/projects/types.ts +144 -144
- package/src/commands/queue/types/task.ts +15 -15
- package/src/execution/core/runner-types.ts +61 -61
- package/src/execution/core/sse-executions.ts +7 -7
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +10 -10
- package/src/execution/engine/agent/core/__tests__/agent.test.ts +16 -16
- package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +4 -4
- package/src/execution/engine/agent/core/types.ts +25 -25
- package/src/execution/engine/agent/index.ts +6 -6
- package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +24 -24
- package/src/execution/engine/index.ts +443 -443
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +298 -298
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.test.ts +55 -55
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +107 -107
- package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.test.ts +48 -48
- package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.ts +99 -99
- package/src/execution/engine/tools/integration/server/adapters/apollo/index.ts +1 -1
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +363 -363
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +162 -162
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +316 -316
- package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.test.ts +18 -18
- package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.ts +194 -194
- package/src/execution/engine/tools/integration/server/adapters/clickup/index.ts +7 -7
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +204 -204
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +105 -105
- package/src/execution/engine/tools/integration/server/adapters/google-calendar/google-calendar-adapter.ts +428 -428
- package/src/execution/engine/tools/integration/server/adapters/google-calendar/index.ts +2 -2
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1474 -1474
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +103 -103
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.test.ts +88 -88
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +141 -141
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +76 -76
- package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +182 -182
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +310 -310
- package/src/execution/engine/tools/integration/service.test.ts +239 -239
- package/src/execution/engine/tools/integration/service.ts +172 -172
- package/src/execution/engine/tools/integration/tool.ts +255 -255
- package/src/execution/engine/tools/lead-service-types.ts +1005 -1005
- package/src/execution/engine/tools/messages.ts +43 -43
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +7 -7
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +6 -6
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +6 -6
- package/src/execution/engine/tools/platform/acquisition/types.ts +280 -280
- package/src/execution/engine/tools/platform/email/types.ts +97 -97
- package/src/execution/engine/tools/registry.ts +704 -704
- package/src/execution/engine/tools/tool-maps.ts +831 -831
- package/src/execution/engine/tools/types.ts +234 -234
- package/src/execution/engine/workflow/types.ts +195 -197
- package/src/execution/external/__tests__/api-schemas.test.ts +127 -127
- package/src/execution/external/api-schemas.ts +40 -40
- package/src/execution/external/index.ts +1 -1
- package/src/index.ts +18 -18
- package/src/integrations/credentials/__tests__/api-schemas.test.ts +420 -420
- package/src/integrations/credentials/api-schemas.ts +146 -146
- package/src/integrations/credentials/schemas.ts +200 -200
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +7 -7
- package/src/integrations/oauth/provider-registry.ts +74 -74
- package/src/integrations/oauth/server/credentials.ts +43 -43
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +327 -327
- package/src/integrations/webhook-endpoints/api-schemas.ts +103 -103
- package/src/integrations/webhook-endpoints/types.ts +58 -58
- package/src/knowledge/README.md +32 -32
- package/src/knowledge/__tests__/queries.test.ts +626 -535
- package/src/knowledge/format.ts +99 -99
- package/src/knowledge/index.ts +5 -5
- package/src/knowledge/published.ts +5 -5
- package/src/knowledge/queries.ts +269 -218
- package/src/operations/activities/api-schemas.ts +80 -80
- package/src/operations/activities/types.ts +64 -64
- package/src/organization-model/README.md +149 -149
- package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -210
- package/src/organization-model/__tests__/defaults.test.ts +168 -168
- package/src/organization-model/__tests__/domains/actions.test.ts +78 -56
- package/src/organization-model/__tests__/domains/customers.test.ts +299 -299
- package/src/organization-model/__tests__/domains/entities.test.ts +56 -56
- package/src/organization-model/__tests__/domains/goals.test.ts +493 -493
- package/src/organization-model/__tests__/domains/identity.test.ts +280 -280
- package/src/organization-model/__tests__/domains/navigation.test.ts +268 -268
- package/src/organization-model/__tests__/domains/offerings.test.ts +414 -414
- package/src/organization-model/__tests__/domains/policies.test.ts +323 -323
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +293 -293
- package/src/organization-model/__tests__/domains/resources.test.ts +387 -277
- package/src/organization-model/__tests__/domains/roles.test.ts +463 -463
- package/src/organization-model/__tests__/domains/statuses.test.ts +246 -246
- package/src/organization-model/__tests__/domains/systems.test.ts +209 -209
- package/src/organization-model/__tests__/domains/topology.test.ts +188 -0
- package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -361
- package/src/organization-model/__tests__/foundation.test.ts +77 -77
- package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -144
- package/src/organization-model/__tests__/graph.test.ts +1312 -862
- package/src/organization-model/__tests__/icons.test.ts +10 -1
- package/src/organization-model/__tests__/knowledge.test.ts +251 -15
- package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -438
- package/src/organization-model/__tests__/migration-helpers.test.ts +591 -591
- package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -103
- package/src/organization-model/__tests__/recursive-system-schema.test.ts +535 -506
- package/src/organization-model/__tests__/resolve.test.ts +274 -164
- package/src/organization-model/__tests__/schema.test.ts +844 -301
- package/src/organization-model/__tests__/surface-projection.test.ts +284 -284
- package/src/organization-model/catalogs/lead-gen.ts +144 -144
- package/src/organization-model/content-kinds/config.ts +36 -36
- package/src/organization-model/content-kinds/index.ts +76 -72
- package/src/organization-model/content-kinds/pipeline.ts +68 -68
- package/src/organization-model/content-kinds/registry.ts +44 -44
- package/src/organization-model/content-kinds/status.ts +71 -71
- package/src/organization-model/content-kinds/template.ts +83 -83
- package/src/organization-model/content-kinds/types.ts +117 -117
- package/src/organization-model/contracts.ts +27 -27
- package/src/organization-model/defaults.ts +42 -50
- package/src/organization-model/domains/actions.ts +333 -239
- package/src/organization-model/domains/customers.ts +78 -78
- package/src/organization-model/domains/entities.ts +144 -144
- package/src/organization-model/domains/goals.ts +83 -83
- package/src/organization-model/domains/knowledge.ts +117 -101
- package/src/organization-model/domains/navigation.ts +139 -139
- package/src/organization-model/domains/offerings.ts +71 -71
- package/src/organization-model/domains/policies.ts +102 -102
- package/src/organization-model/domains/projects.ts +14 -14
- package/src/organization-model/domains/prospecting.ts +395 -395
- package/src/organization-model/domains/resources.ts +202 -124
- package/src/organization-model/domains/roles.ts +96 -96
- package/src/organization-model/domains/sales.test.ts +218 -218
- package/src/organization-model/domains/sales.ts +380 -380
- package/src/organization-model/domains/shared.ts +63 -63
- package/src/organization-model/domains/statuses.ts +339 -339
- package/src/organization-model/domains/systems.ts +217 -172
- package/src/organization-model/domains/topology.ts +261 -0
- package/src/organization-model/foundation.ts +75 -75
- package/src/organization-model/graph/build.ts +1043 -867
- package/src/organization-model/graph/index.ts +4 -4
- package/src/organization-model/graph/link.ts +10 -10
- package/src/organization-model/graph/schema.ts +75 -68
- package/src/organization-model/graph/types.ts +71 -64
- package/src/organization-model/helpers.ts +289 -241
- package/src/organization-model/icons.ts +78 -66
- package/src/organization-model/index.ts +128 -125
- package/src/organization-model/migration-helpers.ts +247 -244
- package/src/organization-model/ontology.ts +658 -0
- package/src/organization-model/organization-graph.mdx +110 -90
- package/src/organization-model/organization-model.mdx +225 -213
- package/src/organization-model/published.ts +299 -222
- package/src/organization-model/resolve.ts +146 -91
- package/src/organization-model/schema.ts +818 -659
- package/src/organization-model/surface-projection.ts +212 -212
- package/src/organization-model/types.ts +179 -155
- package/src/platform/api/types.ts +38 -38
- package/src/platform/constants/versions.ts +3 -3
- package/src/platform/index.ts +23 -23
- package/src/platform/registry/__tests__/command-view.test.ts +10 -10
- package/src/platform/registry/__tests__/resource-link.test.ts +35 -35
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +20 -20
- package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -245
- package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2053
- package/src/platform/registry/__tests__/validation.test.ts +1444 -1259
- package/src/platform/registry/command-view.ts +10 -10
- package/src/platform/registry/index.ts +103 -103
- package/src/platform/registry/resource-link.ts +32 -32
- package/src/platform/registry/resource-registry.ts +886 -886
- package/src/platform/registry/serialization.ts +295 -295
- package/src/platform/registry/serialized-types.ts +166 -166
- package/src/platform/registry/stats-types.ts +68 -68
- package/src/platform/registry/types.ts +425 -425
- package/src/platform/registry/validation.ts +876 -684
- package/src/platform/utils/__tests__/validation.test.ts +1084 -1084
- package/src/platform/utils/validation.ts +425 -425
- package/src/projects/api-schemas.test.ts +39 -39
- package/src/projects/api-schemas.ts +291 -291
- package/src/reference/_generated/contracts.md +2136 -2093
- package/src/reference/glossary.md +76 -76
- package/src/scaffold-registry/__tests__/index.test.ts +206 -206
- package/src/scaffold-registry/__tests__/schema.test.ts +166 -166
- package/src/scaffold-registry/index.ts +392 -392
- package/src/scaffold-registry/schema.ts +243 -243
- package/src/server.ts +289 -289
- package/src/supabase/database.types.ts +3 -0
- package/src/test-utils/README.md +37 -37
- package/src/test-utils/entities.ts +108 -108
- package/src/test-utils/fixtures/memberships.ts +82 -82
- package/src/test-utils/index.ts +12 -12
- package/src/test-utils/organization-model.ts +65 -65
- package/src/test-utils/published.ts +6 -6
- package/src/test-utils/rls/RLSTestContext.ts +588 -588
- package/src/test-utils/test-utils.test.ts +44 -44
package/src/test-utils/README.md
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
# Test Utilities
|
|
2
|
-
|
|
3
|
-
Published test helpers for downstream consumers of `@elevasis/core`.
|
|
4
|
-
|
|
5
|
-
The public `@elevasis/core/test-utils` subpath exposes:
|
|
6
|
-
|
|
7
|
-
- `RLSTestContext` for dev-database RLS integration tests
|
|
8
|
-
- `setupMatchMedia`, `setupResizeObserver`, and `setupBrowserMocks` for jsdom/browser test setup
|
|
9
|
-
- `TEST_USERS`, `TEST_ORGS`, `TEST_MEMBERSHIPS`, and related fixture factories
|
|
10
|
-
- `createMockSupabaseClient`, `createMockWorkOSClient`, and related mocks
|
|
11
|
-
- base entity factories such as `makeProject`, `makeDeal`, and `makeTask`
|
|
12
|
-
- organization model/profile builders such as `makeOrganizationModel`, `makeInitializationState`, and `makeUserProfile`
|
|
13
|
-
|
|
14
|
-
## Published Usage
|
|
15
|
-
|
|
16
|
-
### Browser Mocks
|
|
17
|
-
|
|
18
|
-
```typescript
|
|
19
|
-
import { setupBrowserMocks } from '@elevasis/core/test-utils'
|
|
20
|
-
|
|
21
|
-
setupBrowserMocks()
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### RLS Integration Tests
|
|
25
|
-
|
|
26
|
-
```typescript
|
|
27
|
-
import { RLSTestContext } from '@elevasis/core/test-utils'
|
|
28
|
-
|
|
29
|
-
const ctx = new RLSTestContext()
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
`RLSTestContext` requires a configured Supabase development environment:
|
|
33
|
-
|
|
34
|
-
- `SUPABASE_URL`
|
|
35
|
-
- `SUPABASE_ANON_KEY`
|
|
36
|
-
- `SUPABASE_SERVICE_KEY`
|
|
37
|
-
- `SUPABASE_JWT_SECRET`
|
|
1
|
+
# Test Utilities
|
|
2
|
+
|
|
3
|
+
Published test helpers for downstream consumers of `@elevasis/core`.
|
|
4
|
+
|
|
5
|
+
The public `@elevasis/core/test-utils` subpath exposes:
|
|
6
|
+
|
|
7
|
+
- `RLSTestContext` for dev-database RLS integration tests
|
|
8
|
+
- `setupMatchMedia`, `setupResizeObserver`, and `setupBrowserMocks` for jsdom/browser test setup
|
|
9
|
+
- `TEST_USERS`, `TEST_ORGS`, `TEST_MEMBERSHIPS`, and related fixture factories
|
|
10
|
+
- `createMockSupabaseClient`, `createMockWorkOSClient`, and related mocks
|
|
11
|
+
- base entity factories such as `makeProject`, `makeDeal`, and `makeTask`
|
|
12
|
+
- organization model/profile builders such as `makeOrganizationModel`, `makeInitializationState`, and `makeUserProfile`
|
|
13
|
+
|
|
14
|
+
## Published Usage
|
|
15
|
+
|
|
16
|
+
### Browser Mocks
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { setupBrowserMocks } from '@elevasis/core/test-utils'
|
|
20
|
+
|
|
21
|
+
setupBrowserMocks()
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### RLS Integration Tests
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { RLSTestContext } from '@elevasis/core/test-utils'
|
|
28
|
+
|
|
29
|
+
const ctx = new RLSTestContext()
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`RLSTestContext` requires a configured Supabase development environment:
|
|
33
|
+
|
|
34
|
+
- `SUPABASE_URL`
|
|
35
|
+
- `SUPABASE_ANON_KEY`
|
|
36
|
+
- `SUPABASE_SERVICE_KEY`
|
|
37
|
+
- `SUPABASE_JWT_SECRET`
|
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
import type { z } from 'zod'
|
|
2
|
-
import {
|
|
3
|
-
BaseCompanySchema,
|
|
4
|
-
BaseContactSchema,
|
|
5
|
-
BaseDealSchema,
|
|
6
|
-
BaseMilestoneSchema,
|
|
7
|
-
BaseProjectSchema,
|
|
8
|
-
BaseTaskSchema
|
|
9
|
-
} from '../business/base-entities'
|
|
10
|
-
|
|
11
|
-
type BaseProjectFixture = z.infer<typeof BaseProjectSchema>
|
|
12
|
-
type BaseDealFixture = z.infer<typeof BaseDealSchema>
|
|
13
|
-
type BaseCompanyFixture = z.infer<typeof BaseCompanySchema>
|
|
14
|
-
type BaseContactFixture = z.infer<typeof BaseContactSchema>
|
|
15
|
-
type BaseMilestoneFixture = z.infer<typeof BaseMilestoneSchema>
|
|
16
|
-
type BaseTaskFixture = z.infer<typeof BaseTaskSchema>
|
|
17
|
-
|
|
18
|
-
const DEFAULT_ORGANIZATION_ID = '00000000-0000-0000-0000-000000000010'
|
|
19
|
-
const DEFAULT_PROJECT_ID = '00000000-0000-0000-0000-000000000100'
|
|
20
|
-
const DEFAULT_TIMESTAMP = '2025-01-01T00:00:00Z'
|
|
21
|
-
|
|
22
|
-
export function makeProject(overrides: Partial<BaseProjectFixture> = {}): BaseProjectFixture {
|
|
23
|
-
return BaseProjectSchema.parse({
|
|
24
|
-
id: DEFAULT_PROJECT_ID,
|
|
25
|
-
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
26
|
-
name: 'Test Project',
|
|
27
|
-
kind: 'client-delivery',
|
|
28
|
-
status: 'active',
|
|
29
|
-
description: 'A test project',
|
|
30
|
-
metadata: {},
|
|
31
|
-
createdAt: DEFAULT_TIMESTAMP,
|
|
32
|
-
updatedAt: DEFAULT_TIMESTAMP,
|
|
33
|
-
...overrides
|
|
34
|
-
})
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export function makeDeal(overrides: Partial<BaseDealFixture> = {}): BaseDealFixture {
|
|
38
|
-
return BaseDealSchema.parse({
|
|
39
|
-
id: '00000000-0000-0000-0000-000000000200',
|
|
40
|
-
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
41
|
-
contactEmail: 'buyer@test.com',
|
|
42
|
-
stage: 'qualified',
|
|
43
|
-
metadata: {},
|
|
44
|
-
createdAt: DEFAULT_TIMESTAMP,
|
|
45
|
-
updatedAt: DEFAULT_TIMESTAMP,
|
|
46
|
-
...overrides
|
|
47
|
-
})
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function makeCompany(overrides: Partial<BaseCompanyFixture> = {}): BaseCompanyFixture {
|
|
51
|
-
return BaseCompanySchema.parse({
|
|
52
|
-
id: '00000000-0000-0000-0000-000000000300',
|
|
53
|
-
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
54
|
-
name: 'Test Company',
|
|
55
|
-
domain: 'test.example',
|
|
56
|
-
status: 'active',
|
|
57
|
-
metadata: {},
|
|
58
|
-
createdAt: DEFAULT_TIMESTAMP,
|
|
59
|
-
updatedAt: DEFAULT_TIMESTAMP,
|
|
60
|
-
...overrides
|
|
61
|
-
})
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export function makeContact(overrides: Partial<BaseContactFixture> = {}): BaseContactFixture {
|
|
65
|
-
return BaseContactSchema.parse({
|
|
66
|
-
id: '00000000-0000-0000-0000-000000000400',
|
|
67
|
-
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
68
|
-
email: 'contact@test.com',
|
|
69
|
-
firstName: 'Test',
|
|
70
|
-
lastName: 'Contact',
|
|
71
|
-
status: 'active',
|
|
72
|
-
metadata: {},
|
|
73
|
-
createdAt: DEFAULT_TIMESTAMP,
|
|
74
|
-
updatedAt: DEFAULT_TIMESTAMP,
|
|
75
|
-
...overrides
|
|
76
|
-
})
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export function makeMilestone(overrides: Partial<BaseMilestoneFixture> = {}): BaseMilestoneFixture {
|
|
80
|
-
return BaseMilestoneSchema.parse({
|
|
81
|
-
id: '00000000-0000-0000-0000-000000000500',
|
|
82
|
-
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
83
|
-
projectId: DEFAULT_PROJECT_ID,
|
|
84
|
-
name: 'Test Milestone',
|
|
85
|
-
status: 'not-started',
|
|
86
|
-
description: 'A test milestone',
|
|
87
|
-
metadata: {},
|
|
88
|
-
createdAt: DEFAULT_TIMESTAMP,
|
|
89
|
-
updatedAt: DEFAULT_TIMESTAMP,
|
|
90
|
-
...overrides
|
|
91
|
-
})
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export function makeTask(overrides: Partial<BaseTaskFixture> = {}): BaseTaskFixture {
|
|
95
|
-
return BaseTaskSchema.parse({
|
|
96
|
-
id: '00000000-0000-0000-0000-000000000600',
|
|
97
|
-
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
98
|
-
projectId: DEFAULT_PROJECT_ID,
|
|
99
|
-
name: 'Test Task',
|
|
100
|
-
status: 'todo',
|
|
101
|
-
type: 'general',
|
|
102
|
-
description: 'A test task',
|
|
103
|
-
metadata: {},
|
|
104
|
-
createdAt: DEFAULT_TIMESTAMP,
|
|
105
|
-
updatedAt: DEFAULT_TIMESTAMP,
|
|
106
|
-
...overrides
|
|
107
|
-
})
|
|
108
|
-
}
|
|
1
|
+
import type { z } from 'zod'
|
|
2
|
+
import {
|
|
3
|
+
BaseCompanySchema,
|
|
4
|
+
BaseContactSchema,
|
|
5
|
+
BaseDealSchema,
|
|
6
|
+
BaseMilestoneSchema,
|
|
7
|
+
BaseProjectSchema,
|
|
8
|
+
BaseTaskSchema
|
|
9
|
+
} from '../business/base-entities'
|
|
10
|
+
|
|
11
|
+
type BaseProjectFixture = z.infer<typeof BaseProjectSchema>
|
|
12
|
+
type BaseDealFixture = z.infer<typeof BaseDealSchema>
|
|
13
|
+
type BaseCompanyFixture = z.infer<typeof BaseCompanySchema>
|
|
14
|
+
type BaseContactFixture = z.infer<typeof BaseContactSchema>
|
|
15
|
+
type BaseMilestoneFixture = z.infer<typeof BaseMilestoneSchema>
|
|
16
|
+
type BaseTaskFixture = z.infer<typeof BaseTaskSchema>
|
|
17
|
+
|
|
18
|
+
const DEFAULT_ORGANIZATION_ID = '00000000-0000-0000-0000-000000000010'
|
|
19
|
+
const DEFAULT_PROJECT_ID = '00000000-0000-0000-0000-000000000100'
|
|
20
|
+
const DEFAULT_TIMESTAMP = '2025-01-01T00:00:00Z'
|
|
21
|
+
|
|
22
|
+
export function makeProject(overrides: Partial<BaseProjectFixture> = {}): BaseProjectFixture {
|
|
23
|
+
return BaseProjectSchema.parse({
|
|
24
|
+
id: DEFAULT_PROJECT_ID,
|
|
25
|
+
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
26
|
+
name: 'Test Project',
|
|
27
|
+
kind: 'client-delivery',
|
|
28
|
+
status: 'active',
|
|
29
|
+
description: 'A test project',
|
|
30
|
+
metadata: {},
|
|
31
|
+
createdAt: DEFAULT_TIMESTAMP,
|
|
32
|
+
updatedAt: DEFAULT_TIMESTAMP,
|
|
33
|
+
...overrides
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function makeDeal(overrides: Partial<BaseDealFixture> = {}): BaseDealFixture {
|
|
38
|
+
return BaseDealSchema.parse({
|
|
39
|
+
id: '00000000-0000-0000-0000-000000000200',
|
|
40
|
+
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
41
|
+
contactEmail: 'buyer@test.com',
|
|
42
|
+
stage: 'qualified',
|
|
43
|
+
metadata: {},
|
|
44
|
+
createdAt: DEFAULT_TIMESTAMP,
|
|
45
|
+
updatedAt: DEFAULT_TIMESTAMP,
|
|
46
|
+
...overrides
|
|
47
|
+
})
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function makeCompany(overrides: Partial<BaseCompanyFixture> = {}): BaseCompanyFixture {
|
|
51
|
+
return BaseCompanySchema.parse({
|
|
52
|
+
id: '00000000-0000-0000-0000-000000000300',
|
|
53
|
+
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
54
|
+
name: 'Test Company',
|
|
55
|
+
domain: 'test.example',
|
|
56
|
+
status: 'active',
|
|
57
|
+
metadata: {},
|
|
58
|
+
createdAt: DEFAULT_TIMESTAMP,
|
|
59
|
+
updatedAt: DEFAULT_TIMESTAMP,
|
|
60
|
+
...overrides
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function makeContact(overrides: Partial<BaseContactFixture> = {}): BaseContactFixture {
|
|
65
|
+
return BaseContactSchema.parse({
|
|
66
|
+
id: '00000000-0000-0000-0000-000000000400',
|
|
67
|
+
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
68
|
+
email: 'contact@test.com',
|
|
69
|
+
firstName: 'Test',
|
|
70
|
+
lastName: 'Contact',
|
|
71
|
+
status: 'active',
|
|
72
|
+
metadata: {},
|
|
73
|
+
createdAt: DEFAULT_TIMESTAMP,
|
|
74
|
+
updatedAt: DEFAULT_TIMESTAMP,
|
|
75
|
+
...overrides
|
|
76
|
+
})
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function makeMilestone(overrides: Partial<BaseMilestoneFixture> = {}): BaseMilestoneFixture {
|
|
80
|
+
return BaseMilestoneSchema.parse({
|
|
81
|
+
id: '00000000-0000-0000-0000-000000000500',
|
|
82
|
+
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
83
|
+
projectId: DEFAULT_PROJECT_ID,
|
|
84
|
+
name: 'Test Milestone',
|
|
85
|
+
status: 'not-started',
|
|
86
|
+
description: 'A test milestone',
|
|
87
|
+
metadata: {},
|
|
88
|
+
createdAt: DEFAULT_TIMESTAMP,
|
|
89
|
+
updatedAt: DEFAULT_TIMESTAMP,
|
|
90
|
+
...overrides
|
|
91
|
+
})
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function makeTask(overrides: Partial<BaseTaskFixture> = {}): BaseTaskFixture {
|
|
95
|
+
return BaseTaskSchema.parse({
|
|
96
|
+
id: '00000000-0000-0000-0000-000000000600',
|
|
97
|
+
organizationId: DEFAULT_ORGANIZATION_ID,
|
|
98
|
+
projectId: DEFAULT_PROJECT_ID,
|
|
99
|
+
name: 'Test Task',
|
|
100
|
+
status: 'todo',
|
|
101
|
+
type: 'general',
|
|
102
|
+
description: 'A test task',
|
|
103
|
+
metadata: {},
|
|
104
|
+
createdAt: DEFAULT_TIMESTAMP,
|
|
105
|
+
updatedAt: DEFAULT_TIMESTAMP,
|
|
106
|
+
...overrides
|
|
107
|
+
})
|
|
108
|
+
}
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
import type { SupabaseOrgMembership, SupabaseMembershipWithOrganization } from '../../supabase'
|
|
2
|
-
import { TEST_USERS } from './users'
|
|
3
|
-
import { TEST_ORGS } from './organizations'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Test membership fixtures using actual Supabase types
|
|
7
|
-
*/
|
|
8
|
-
export const TEST_MEMBERSHIPS: Record<string, SupabaseOrgMembership> = {
|
|
9
|
-
regularUserAcme: {
|
|
10
|
-
id: '00000000-0000-0000-0000-000000000020',
|
|
11
|
-
user_id: TEST_USERS.regularUser.id,
|
|
12
|
-
organization_id: TEST_ORGS.acme.id,
|
|
13
|
-
workos_membership_id: 'mem_regular_acme',
|
|
14
|
-
role_slug: 'admin',
|
|
15
|
-
membership_status: 'active',
|
|
16
|
-
config: {},
|
|
17
|
-
effective_permissions: [],
|
|
18
|
-
created_at: '2025-01-01T00:00:00Z',
|
|
19
|
-
updated_at: '2025-01-01T00:00:00Z'
|
|
20
|
-
},
|
|
21
|
-
regularUserBeta: {
|
|
22
|
-
id: '00000000-0000-0000-0000-000000000021',
|
|
23
|
-
user_id: TEST_USERS.regularUser.id,
|
|
24
|
-
organization_id: TEST_ORGS.beta.id,
|
|
25
|
-
workos_membership_id: 'mem_regular_beta',
|
|
26
|
-
role_slug: 'member',
|
|
27
|
-
membership_status: 'active',
|
|
28
|
-
config: {},
|
|
29
|
-
effective_permissions: [],
|
|
30
|
-
created_at: '2025-01-01T00:00:00Z',
|
|
31
|
-
updated_at: '2025-01-01T00:00:00Z'
|
|
32
|
-
},
|
|
33
|
-
inactiveUserAcme: {
|
|
34
|
-
id: '00000000-0000-0000-0000-000000000022',
|
|
35
|
-
user_id: TEST_USERS.inactiveUser.id,
|
|
36
|
-
organization_id: TEST_ORGS.acme.id,
|
|
37
|
-
workos_membership_id: 'mem_inactive_acme',
|
|
38
|
-
role_slug: 'member',
|
|
39
|
-
membership_status: 'inactive',
|
|
40
|
-
config: {},
|
|
41
|
-
effective_permissions: [],
|
|
42
|
-
created_at: '2025-01-01T00:00:00Z',
|
|
43
|
-
updated_at: '2025-01-01T00:00:00Z'
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Composite memberships with organization data (for joined queries)
|
|
49
|
-
*/
|
|
50
|
-
export const TEST_MEMBERSHIPS_WITH_ORG: Record<string, SupabaseMembershipWithOrganization> = {
|
|
51
|
-
regularUserAcme: {
|
|
52
|
-
...TEST_MEMBERSHIPS.regularUserAcme,
|
|
53
|
-
organization: TEST_ORGS.acme
|
|
54
|
-
},
|
|
55
|
-
regularUserBeta: {
|
|
56
|
-
...TEST_MEMBERSHIPS.regularUserBeta,
|
|
57
|
-
organization: TEST_ORGS.beta
|
|
58
|
-
},
|
|
59
|
-
inactiveUserAcme: {
|
|
60
|
-
...TEST_MEMBERSHIPS.inactiveUserAcme,
|
|
61
|
-
organization: TEST_ORGS.acme
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Helper to create custom membership fixture
|
|
67
|
-
*/
|
|
68
|
-
export function createTestMembership(overrides: Partial<SupabaseOrgMembership>): SupabaseOrgMembership {
|
|
69
|
-
return {
|
|
70
|
-
id: '00000000-0000-0000-0000-999999999999',
|
|
71
|
-
user_id: TEST_USERS.regularUser.id,
|
|
72
|
-
organization_id: TEST_ORGS.acme.id,
|
|
73
|
-
workos_membership_id: 'mem_custom_test',
|
|
74
|
-
role_slug: 'member',
|
|
75
|
-
membership_status: 'active',
|
|
76
|
-
config: {},
|
|
77
|
-
effective_permissions: [],
|
|
78
|
-
created_at: '2025-01-01T00:00:00Z',
|
|
79
|
-
updated_at: '2025-01-01T00:00:00Z',
|
|
80
|
-
...overrides
|
|
81
|
-
}
|
|
82
|
-
}
|
|
1
|
+
import type { SupabaseOrgMembership, SupabaseMembershipWithOrganization } from '../../supabase'
|
|
2
|
+
import { TEST_USERS } from './users'
|
|
3
|
+
import { TEST_ORGS } from './organizations'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Test membership fixtures using actual Supabase types
|
|
7
|
+
*/
|
|
8
|
+
export const TEST_MEMBERSHIPS: Record<string, SupabaseOrgMembership> = {
|
|
9
|
+
regularUserAcme: {
|
|
10
|
+
id: '00000000-0000-0000-0000-000000000020',
|
|
11
|
+
user_id: TEST_USERS.regularUser.id,
|
|
12
|
+
organization_id: TEST_ORGS.acme.id,
|
|
13
|
+
workos_membership_id: 'mem_regular_acme',
|
|
14
|
+
role_slug: 'admin',
|
|
15
|
+
membership_status: 'active',
|
|
16
|
+
config: {},
|
|
17
|
+
effective_permissions: [],
|
|
18
|
+
created_at: '2025-01-01T00:00:00Z',
|
|
19
|
+
updated_at: '2025-01-01T00:00:00Z'
|
|
20
|
+
},
|
|
21
|
+
regularUserBeta: {
|
|
22
|
+
id: '00000000-0000-0000-0000-000000000021',
|
|
23
|
+
user_id: TEST_USERS.regularUser.id,
|
|
24
|
+
organization_id: TEST_ORGS.beta.id,
|
|
25
|
+
workos_membership_id: 'mem_regular_beta',
|
|
26
|
+
role_slug: 'member',
|
|
27
|
+
membership_status: 'active',
|
|
28
|
+
config: {},
|
|
29
|
+
effective_permissions: [],
|
|
30
|
+
created_at: '2025-01-01T00:00:00Z',
|
|
31
|
+
updated_at: '2025-01-01T00:00:00Z'
|
|
32
|
+
},
|
|
33
|
+
inactiveUserAcme: {
|
|
34
|
+
id: '00000000-0000-0000-0000-000000000022',
|
|
35
|
+
user_id: TEST_USERS.inactiveUser.id,
|
|
36
|
+
organization_id: TEST_ORGS.acme.id,
|
|
37
|
+
workos_membership_id: 'mem_inactive_acme',
|
|
38
|
+
role_slug: 'member',
|
|
39
|
+
membership_status: 'inactive',
|
|
40
|
+
config: {},
|
|
41
|
+
effective_permissions: [],
|
|
42
|
+
created_at: '2025-01-01T00:00:00Z',
|
|
43
|
+
updated_at: '2025-01-01T00:00:00Z'
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Composite memberships with organization data (for joined queries)
|
|
49
|
+
*/
|
|
50
|
+
export const TEST_MEMBERSHIPS_WITH_ORG: Record<string, SupabaseMembershipWithOrganization> = {
|
|
51
|
+
regularUserAcme: {
|
|
52
|
+
...TEST_MEMBERSHIPS.regularUserAcme,
|
|
53
|
+
organization: TEST_ORGS.acme
|
|
54
|
+
},
|
|
55
|
+
regularUserBeta: {
|
|
56
|
+
...TEST_MEMBERSHIPS.regularUserBeta,
|
|
57
|
+
organization: TEST_ORGS.beta
|
|
58
|
+
},
|
|
59
|
+
inactiveUserAcme: {
|
|
60
|
+
...TEST_MEMBERSHIPS.inactiveUserAcme,
|
|
61
|
+
organization: TEST_ORGS.acme
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Helper to create custom membership fixture
|
|
67
|
+
*/
|
|
68
|
+
export function createTestMembership(overrides: Partial<SupabaseOrgMembership>): SupabaseOrgMembership {
|
|
69
|
+
return {
|
|
70
|
+
id: '00000000-0000-0000-0000-999999999999',
|
|
71
|
+
user_id: TEST_USERS.regularUser.id,
|
|
72
|
+
organization_id: TEST_ORGS.acme.id,
|
|
73
|
+
workos_membership_id: 'mem_custom_test',
|
|
74
|
+
role_slug: 'member',
|
|
75
|
+
membership_status: 'active',
|
|
76
|
+
config: {},
|
|
77
|
+
effective_permissions: [],
|
|
78
|
+
created_at: '2025-01-01T00:00:00Z',
|
|
79
|
+
updated_at: '2025-01-01T00:00:00Z',
|
|
80
|
+
...overrides
|
|
81
|
+
}
|
|
82
|
+
}
|
package/src/test-utils/index.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
// Published test utilities are intentionally narrow.
|
|
2
|
-
// Internal fixtures and Vitest-heavy mocks stay private to the monorepo.
|
|
3
|
-
export * from './rls'
|
|
4
|
-
|
|
5
|
-
export * from './browser-mocks'
|
|
6
|
-
|
|
7
|
-
// Monorepo-only compatibility surface for internal test helpers.
|
|
8
|
-
// publishConfig.exports keeps these out of the public @elevasis/core package.
|
|
9
|
-
export * from './fixtures'
|
|
10
|
-
export * from './mocks'
|
|
11
|
-
export * from './entities'
|
|
12
|
-
export * from './organization-model'
|
|
1
|
+
// Published test utilities are intentionally narrow.
|
|
2
|
+
// Internal fixtures and Vitest-heavy mocks stay private to the monorepo.
|
|
3
|
+
export * from './rls'
|
|
4
|
+
|
|
5
|
+
export * from './browser-mocks'
|
|
6
|
+
|
|
7
|
+
// Monorepo-only compatibility surface for internal test helpers.
|
|
8
|
+
// publishConfig.exports keeps these out of the public @elevasis/core package.
|
|
9
|
+
export * from './fixtures'
|
|
10
|
+
export * from './mocks'
|
|
11
|
+
export * from './entities'
|
|
12
|
+
export * from './organization-model'
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
import type { DeepPartial, OrganizationModel } from '../organization-model/published'
|
|
2
|
-
import { OrganizationModelSchema, resolveOrganizationModel } from '../organization-model/published'
|
|
3
|
-
import type { SupabaseUserProfile } from '../supabase'
|
|
4
|
-
import { createTestUser } from './fixtures'
|
|
5
|
-
|
|
6
|
-
export interface TestInitializationError {
|
|
7
|
-
layer: 'auth' | 'profile' | 'organization'
|
|
8
|
-
message: string
|
|
9
|
-
originalError?: Error
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface TestInitializationState {
|
|
13
|
-
userReady: boolean
|
|
14
|
-
organizationReady: boolean
|
|
15
|
-
allReady: boolean
|
|
16
|
-
isInitializing: boolean
|
|
17
|
-
error: TestInitializationError | null
|
|
18
|
-
retry: () => void
|
|
19
|
-
profile: SupabaseUserProfile | null
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export type TestInitializationStateOverrides = Partial<
|
|
23
|
-
Omit<TestInitializationState, 'error' | 'profile' | 'retry'>
|
|
24
|
-
> & {
|
|
25
|
-
error?: TestInitializationError | null
|
|
26
|
-
profile?: Partial<SupabaseUserProfile> | SupabaseUserProfile | null
|
|
27
|
-
retry?: () => void
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export function makeOrganizationModel(
|
|
31
|
-
overrides?: DeepPartial<OrganizationModel>
|
|
32
|
-
): OrganizationModel {
|
|
33
|
-
return OrganizationModelSchema.parse(resolveOrganizationModel(overrides))
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export function makeUserProfile(
|
|
37
|
-
overrides: Partial<SupabaseUserProfile> = {}
|
|
38
|
-
): SupabaseUserProfile {
|
|
39
|
-
return createTestUser(overrides)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function makeInitializationState(
|
|
43
|
-
overrides: TestInitializationStateOverrides = {}
|
|
44
|
-
): TestInitializationState {
|
|
45
|
-
const defaultState: TestInitializationState = {
|
|
46
|
-
userReady: true,
|
|
47
|
-
organizationReady: true,
|
|
48
|
-
allReady: true,
|
|
49
|
-
isInitializing: false,
|
|
50
|
-
error: null,
|
|
51
|
-
retry: () => undefined,
|
|
52
|
-
profile: makeUserProfile()
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return {
|
|
56
|
-
...defaultState,
|
|
57
|
-
...overrides,
|
|
58
|
-
profile:
|
|
59
|
-
overrides.profile === undefined
|
|
60
|
-
? defaultState.profile
|
|
61
|
-
: overrides.profile === null
|
|
62
|
-
? null
|
|
63
|
-
: makeUserProfile(overrides.profile)
|
|
64
|
-
}
|
|
65
|
-
}
|
|
1
|
+
import type { DeepPartial, OrganizationModel } from '../organization-model/published'
|
|
2
|
+
import { OrganizationModelSchema, resolveOrganizationModel } from '../organization-model/published'
|
|
3
|
+
import type { SupabaseUserProfile } from '../supabase'
|
|
4
|
+
import { createTestUser } from './fixtures'
|
|
5
|
+
|
|
6
|
+
export interface TestInitializationError {
|
|
7
|
+
layer: 'auth' | 'profile' | 'organization'
|
|
8
|
+
message: string
|
|
9
|
+
originalError?: Error
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface TestInitializationState {
|
|
13
|
+
userReady: boolean
|
|
14
|
+
organizationReady: boolean
|
|
15
|
+
allReady: boolean
|
|
16
|
+
isInitializing: boolean
|
|
17
|
+
error: TestInitializationError | null
|
|
18
|
+
retry: () => void
|
|
19
|
+
profile: SupabaseUserProfile | null
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type TestInitializationStateOverrides = Partial<
|
|
23
|
+
Omit<TestInitializationState, 'error' | 'profile' | 'retry'>
|
|
24
|
+
> & {
|
|
25
|
+
error?: TestInitializationError | null
|
|
26
|
+
profile?: Partial<SupabaseUserProfile> | SupabaseUserProfile | null
|
|
27
|
+
retry?: () => void
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function makeOrganizationModel(
|
|
31
|
+
overrides?: DeepPartial<OrganizationModel>
|
|
32
|
+
): OrganizationModel {
|
|
33
|
+
return OrganizationModelSchema.parse(resolveOrganizationModel(overrides))
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function makeUserProfile(
|
|
37
|
+
overrides: Partial<SupabaseUserProfile> = {}
|
|
38
|
+
): SupabaseUserProfile {
|
|
39
|
+
return createTestUser(overrides)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function makeInitializationState(
|
|
43
|
+
overrides: TestInitializationStateOverrides = {}
|
|
44
|
+
): TestInitializationState {
|
|
45
|
+
const defaultState: TestInitializationState = {
|
|
46
|
+
userReady: true,
|
|
47
|
+
organizationReady: true,
|
|
48
|
+
allReady: true,
|
|
49
|
+
isInitializing: false,
|
|
50
|
+
error: null,
|
|
51
|
+
retry: () => undefined,
|
|
52
|
+
profile: makeUserProfile()
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return {
|
|
56
|
+
...defaultState,
|
|
57
|
+
...overrides,
|
|
58
|
+
profile:
|
|
59
|
+
overrides.profile === undefined
|
|
60
|
+
? defaultState.profile
|
|
61
|
+
: overrides.profile === null
|
|
62
|
+
? null
|
|
63
|
+
: makeUserProfile(overrides.profile)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './rls'
|
|
2
|
-
export * from './browser-mocks'
|
|
3
|
-
export * from './fixtures'
|
|
4
|
-
export * from './mocks'
|
|
5
|
-
export * from './entities'
|
|
6
|
-
export * from './organization-model'
|
|
1
|
+
export * from './rls'
|
|
2
|
+
export * from './browser-mocks'
|
|
3
|
+
export * from './fixtures'
|
|
4
|
+
export * from './mocks'
|
|
5
|
+
export * from './entities'
|
|
6
|
+
export * from './organization-model'
|