Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions services/libs/data-access-layer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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 }) => {
Expand Down
Loading