Skip to content

Commit 4419c0f

Browse files
authored
feat: update entry.getMany to include releasev2 params [DX-203] (#2685)
* chore: getMany first attempt * chore: new integrations test file added (from Michael) * chore: type fixes implemented * chore: test shell added to entry-integration.test.ts * chore: tests implemented with necessary unimplemented release metadata tests commented out * chore: prettier fix * fix: entry integration scope removed from test script * chore: prettier fix * fix: version logic cleaned up and test query modified * chore: prettier fix
1 parent aa4a487 commit 4419c0f

File tree

5 files changed

+69
-6
lines changed

5 files changed

+69
-6
lines changed

lib/adapters/REST/endpoints/entry.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,14 @@ export const getPublished: RestEndpoint<'Entry', 'getPublished'> = <
5555

5656
export const getMany: RestEndpoint<'Entry', 'getMany'> = <T extends KeyValueMap = KeyValueMap>(
5757
http: AxiosInstance,
58-
params: GetSpaceEnvironmentParams & QueryParams,
58+
params: GetSpaceEnvironmentParams & QueryParams & { releaseId?: string },
5959
rawData?: unknown,
6060
headers?: RawAxiosRequestHeaders
6161
) => {
62+
if (params.releaseId) {
63+
params.query = { ...params.query, 'release[lte]': params.releaseId }
64+
}
65+
6266
return raw.get<CollectionProp<EntryProps<T>>>(
6367
http,
6468
`/spaces/${params.spaceId}/environments/${params.environmentId}/entries`,

lib/common-types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1597,8 +1597,8 @@ export type MRActions = {
15971597
return: CollectionProp<EntryProps<any>>
15981598
}
15991599
getMany: {
1600-
params: GetSpaceEnvironmentParams & QueryParams
1601-
return: CollectionProp<EntryProps<any>>
1600+
params: GetSpaceEnvironmentParams & QueryParams & { releaseId?: string }
1601+
return: CollectionProp<EntryProps<any, any>>
16021602
}
16031603
get: {
16041604
params: GetReleaseEntryParams & QueryParams

lib/plain/common-types.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,25 @@ export type PlainClientAPI = {
276276
headers?: RawAxiosRequestHeaders
277277
): Promise<CollectionProp<EntryProps<T>>>
278278
getMany<T extends KeyValueMap = KeyValueMap>(
279-
params: OptionalDefaults<GetSpaceEnvironmentParams & QueryParams>,
279+
params: OptionalDefaults<GetSpaceEnvironmentParams & QueryParams & { releaseId?: string }>,
280280
rawData?: unknown,
281281
headers?: RawAxiosRequestHeaders
282-
): Promise<CollectionProp<EntryProps<T>>>
282+
): Promise<
283+
CollectionProp<
284+
EntryProps<
285+
T,
286+
{
287+
release: {
288+
sys: {
289+
type: 'Link'
290+
linkType: 'Entry' | 'Asset'
291+
id: string
292+
}
293+
}
294+
}
295+
>
296+
>
297+
>
283298
get<T extends KeyValueMap = KeyValueMap>(
284299
params: OptionalDefaults<GetReleaseEntryParams>,
285300
rawData?: unknown,

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"test:types": "npx vitest --project types --run",
4646
"test:unit-watch": "npx vitest --project unit",
4747
"test:integration": "npx vitest --project integration --run --no-file-parallelism",
48-
"test:integration-watch": "npx vitest --project integration --no-file-parallelism",
48+
"test:integration-watch": "npx vitest --project integration --no-file-parallelism entry-integration",
4949
"test:browser": "npx playwright install && npx vitest --project browser-unit --run && npx vitest --project browser-integration --run",
5050
"test:version": "grep -r \"0.0.0-determined-by-semantic-release\" ./dist > /dev/null && echo \"version 0.0.0-determined-by-semantic-release found in output\" && exit 1 || exit 0",
5151
"test:size": "size-limit",

test/integration/entry-integration.test.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,8 +717,10 @@ describe('Entry Api', () => {
717717
})
718718
})
719719

720+
//test releasev2 entry logic
720721
describe('read plainClientApi with releaseId', () => {
721722
let entry: EntryProps
723+
let entry2: EntryProps
722724
let release: ReleaseProps
723725
let createEntryClient: PlainClientAPI
724726

@@ -742,6 +744,17 @@ describe('Entry Api', () => {
742744
}
743745
)
744746

747+
entry2 = await createEntryClient.entry.create(
748+
{ ...defaultParams, contentTypeId: TestDefaults.contentType.withCrossSpaceReferenceId },
749+
{
750+
fields: {
751+
title: {
752+
'en-US': 'Test Entry for Release',
753+
},
754+
},
755+
}
756+
)
757+
745758
release = await createEntryClient.release.create(defaultParams, {
746759
title: 'Test Release',
747760
entities: {
@@ -751,8 +764,13 @@ describe('Entry Api', () => {
751764
entity: makeLink('Entry', entry.sys.id),
752765
action: 'publish',
753766
},
767+
{
768+
entity: makeLink('Entry', entry2.sys.id),
769+
action: 'publish',
770+
},
754771
],
755772
},
773+
startDate: '2025-08-28T10:00:000Z',
756774
})
757775
})
758776

@@ -768,6 +786,20 @@ describe('Entry Api', () => {
768786
})
769787

770788
describe('releaseId is provided in params, but not in default params', () => {
789+
//the entry.getMany API endpoint currently does not return release metadata
790+
test('entry.getMany works', async () => {
791+
const response = await createEntryClient.entry.getMany({
792+
query: {
793+
'release[lte]': release.sys.id,
794+
order: '-sys.createdAt',
795+
},
796+
})
797+
expect(response.items[0].sys.id).toEqual(entry2.sys.id)
798+
expect(response.items[1].sys.id).toEqual(entry.sys.id)
799+
//expect(response.items[0].sys.release.sys.id).toEqual(release.sys.id)
800+
//expect(response.items[1].sys.release.sys.id).toEqual(release.sys.id)
801+
})
802+
771803
test('entry.get works', async () => {
772804
const fetchedEntry = await createEntryClient.entry.get({
773805
entryId: entry.sys.id,
@@ -787,6 +819,18 @@ describe('Entry Api', () => {
787819
})
788820
})
789821

822+
test('entry.getMany works', async () => {
823+
const response = await createEntryClient.entry.getMany({
824+
query: {
825+
order: '-sys.createdAt',
826+
},
827+
})
828+
expect(response.items[0].sys.id).toEqual(entry2.sys.id)
829+
expect(response.items[1].sys.id).toEqual(entry.sys.id)
830+
//expect(response.items[0].sys.release.sys.id).toEqual(release.sys.id)
831+
//expect(response.items[1].sys.release.sys.id).toEqual(release.sys.id)
832+
})
833+
790834
test('entry.get works', async () => {
791835
const fetchedEntry = await createEntryClient.entry.get({
792836
entryId: entry.sys.id,

0 commit comments

Comments
 (0)