diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 76c5d48ea1..f8c065d672 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2274,9 +2274,6 @@ importers: typescript: specifier: ^5.6.3 version: 5.6.3 - vitest: - specifier: 4.1.7 - version: 4.1.7(@types/node@20.12.7)(vite@6.3.5(@types/node@20.12.7)(jiti@2.4.2)(terser@5.43.1)(yaml@2.7.0)) services/libs/database: dependencies: diff --git a/services/libs/data-access-layer/package.json b/services/libs/data-access-layer/package.json index dbdfb90724..bcaadfe608 100644 --- a/services/libs/data-access-layer/package.json +++ b/services/libs/data-access-layer/package.json @@ -35,7 +35,6 @@ "devDependencies": { "@crowd/test-kit": "workspace:*", "@types/node": "^20.8.2", - "typescript": "^5.6.3", - "vitest": "4.1.7" + "typescript": "^5.6.3" } } diff --git a/services/libs/data-access-layer/src/affiliations/__tests__/affiliations.test.ts b/services/libs/data-access-layer/src/affiliations/index.test.ts similarity index 96% rename from services/libs/data-access-layer/src/affiliations/__tests__/affiliations.test.ts rename to services/libs/data-access-layer/src/affiliations/index.test.ts index d6acaef53d..97069cda84 100644 --- a/services/libs/data-access-layer/src/affiliations/__tests__/affiliations.test.ts +++ b/services/libs/data-access-layer/src/affiliations/index.test.ts @@ -1,12 +1,25 @@ +/** + * Legacy suite — keep for now, migrate when this module is next touched. + * + * This covers the API read path (`resolveAffiliationsByMemberIds` / pure + * `buildTimeline` + `selectPrimaryWorkExperience`), not the activity-write + * path in `member-organization-affiliation/`. + * + * Style is outdated vs current CDP testing: + * - mocked `qx` + hand-built rows instead of `@crowd/test-kit` factories + * - does not use schema-aligned `*DbInsert` types (ADR-0006) + * - does not follow factory primitives / defaults (ADR-0007) + * - does not follow named DB-backed scenarios (ADR-0008) + * + * Reference for the target style: + * `../member-organization-affiliation/index.test.ts` + */ import { beforeEach, describe, expect, it, vi } from 'vitest' -import type { QueryExecutor } from '../../queryExecutor' -import { - buildTimeline, - resolveAffiliationsByMemberIds, - selectPrimaryWorkExperience, -} from '../index' -import type { IWorkExperienceResolution } from '../index' +import type { QueryExecutor } from '../queryExecutor' + +import { buildTimeline, resolveAffiliationsByMemberIds, selectPrimaryWorkExperience } from './index' +import type { IWorkExperienceResolution } from './index' // Mocks are hoisted before imports — intercept transitive dependencies that // require a live database or external services. diff --git a/services/libs/data-access-layer/src/member-organization-affiliation/index.test.ts b/services/libs/data-access-layer/src/member-organization-affiliation/index.test.ts index d6872a80ec..4fcdfee2fd 100644 --- a/services/libs/data-access-layer/src/member-organization-affiliation/index.test.ts +++ b/services/libs/data-access-layer/src/member-organization-affiliation/index.test.ts @@ -1251,6 +1251,14 @@ describe('refreshMemberOrganizationAffiliations', () => { ]) await createActivityRelations(qx, [ + ...generateActivityRelations({ + memberId: member.id, + segmentId: kubernetes.id, + identities, + count: 20, + // Before MSA dateStart — must stay on the employer timeline. + timestamp: { from: '2020-06-01T00:00:00.000Z', to: '2020-09-01T00:00:00.000Z' }, + }), ...generateActivityRelations({ memberId: member.id, segmentId: kubernetes.id, @@ -1270,7 +1278,8 @@ describe('refreshMemberOrganizationAffiliations', () => { await refreshMemberOrganizationAffiliations(qx, member.id) expect(await countByOrg(qx, member.id, kubernetes.id, sponsor.id)).toBe(40) - expect(await countByOrg(qx, member.id, kubernetes.id, employer.id)).toBe(30) + // Pre-window (20) + post-window (30) both fall outside the MSA and stay on MO. + expect(await countByOrg(qx, member.id, kubernetes.id, employer.id)).toBe(50) }) test('email-domain activities route to matching org over the date timeline', async ({ qx }) => {