Skip to content

Commit 88abe24

Browse files
authored
test: cover dated MSA lower bound on refresh (CM-1180) (#4335)
Signed-off-by: Yeganathan S <63534555+skwowet@users.noreply.github.com>
1 parent 6710afe commit 88abe24

4 files changed

Lines changed: 31 additions & 13 deletions

File tree

pnpm-lock.yaml

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

services/libs/data-access-layer/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
"devDependencies": {
3636
"@crowd/test-kit": "workspace:*",
3737
"@types/node": "^20.8.2",
38-
"typescript": "^5.6.3",
39-
"vitest": "4.1.7"
38+
"typescript": "^5.6.3"
4039
}
4140
}

services/libs/data-access-layer/src/affiliations/__tests__/affiliations.test.ts renamed to services/libs/data-access-layer/src/affiliations/index.test.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
1+
/**
2+
* Legacy suite — keep for now, migrate when this module is next touched.
3+
*
4+
* This covers the API read path (`resolveAffiliationsByMemberIds` / pure
5+
* `buildTimeline` + `selectPrimaryWorkExperience`), not the activity-write
6+
* path in `member-organization-affiliation/`.
7+
*
8+
* Style is outdated vs current CDP testing:
9+
* - mocked `qx` + hand-built rows instead of `@crowd/test-kit` factories
10+
* - does not use schema-aligned `*DbInsert` types (ADR-0006)
11+
* - does not follow factory primitives / defaults (ADR-0007)
12+
* - does not follow named DB-backed scenarios (ADR-0008)
13+
*
14+
* Reference for the target style:
15+
* `../member-organization-affiliation/index.test.ts`
16+
*/
117
import { beforeEach, describe, expect, it, vi } from 'vitest'
218

3-
import type { QueryExecutor } from '../../queryExecutor'
4-
import {
5-
buildTimeline,
6-
resolveAffiliationsByMemberIds,
7-
selectPrimaryWorkExperience,
8-
} from '../index'
9-
import type { IWorkExperienceResolution } from '../index'
19+
import type { QueryExecutor } from '../queryExecutor'
20+
21+
import { buildTimeline, resolveAffiliationsByMemberIds, selectPrimaryWorkExperience } from './index'
22+
import type { IWorkExperienceResolution } from './index'
1023

1124
// Mocks are hoisted before imports — intercept transitive dependencies that
1225
// require a live database or external services.

services/libs/data-access-layer/src/member-organization-affiliation/index.test.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1251,6 +1251,14 @@ describe('refreshMemberOrganizationAffiliations', () => {
12511251
])
12521252

12531253
await createActivityRelations(qx, [
1254+
...generateActivityRelations({
1255+
memberId: member.id,
1256+
segmentId: kubernetes.id,
1257+
identities,
1258+
count: 20,
1259+
// Before MSA dateStart — must stay on the employer timeline.
1260+
timestamp: { from: '2020-06-01T00:00:00.000Z', to: '2020-09-01T00:00:00.000Z' },
1261+
}),
12541262
...generateActivityRelations({
12551263
memberId: member.id,
12561264
segmentId: kubernetes.id,
@@ -1270,7 +1278,8 @@ describe('refreshMemberOrganizationAffiliations', () => {
12701278
await refreshMemberOrganizationAffiliations(qx, member.id)
12711279

12721280
expect(await countByOrg(qx, member.id, kubernetes.id, sponsor.id)).toBe(40)
1273-
expect(await countByOrg(qx, member.id, kubernetes.id, employer.id)).toBe(30)
1281+
// Pre-window (20) + post-window (30) both fall outside the MSA and stay on MO.
1282+
expect(await countByOrg(qx, member.id, kubernetes.id, employer.id)).toBe(50)
12741283
})
12751284

12761285
test('email-domain activities route to matching org over the date timeline', async ({ qx }) => {

0 commit comments

Comments
 (0)