diff --git a/test/unit/adapters/REST/endpoints/release-entry.test.ts b/test/unit/adapters/REST/endpoints/release-entry.test.ts new file mode 100644 index 0000000000..f81e9e8fa7 --- /dev/null +++ b/test/unit/adapters/REST/endpoints/release-entry.test.ts @@ -0,0 +1,52 @@ +import { describe, test, expect, vi, beforeEach, afterEach } from 'vitest' +import { cloneMock } from '../../../mocks/entities' +import * as raw from '../../../../../lib/adapters/REST/endpoints/raw' +import { get } from '../../../../../lib/adapters/REST/endpoints/release-entry' +import { EntryProps } from '../../../../../lib/entities/entry' +import { GetReleaseEntryParams } from '../../../../../lib/contentful-management' + +describe('Rest ReleaseEntry', () => { + let mockReleaseEntry: EntryProps< + any, + { release: { sys: { type: 'Link'; linkType: 'Release'; id: string } } } + > + let result: EntryProps< + any, + { release: { sys: { type: 'Link'; linkType: 'Release'; id: string } } } + > + let rawGetSpy: any + let params: GetReleaseEntryParams + let httpMock: any + + beforeEach(async () => { + mockReleaseEntry = cloneMock('releaseEntry') + rawGetSpy = vi.spyOn(raw, 'get').mockResolvedValue(mockReleaseEntry) + httpMock = {} + params = { + spaceId: 'space123', + environmentId: 'master', + releaseId: 'black-friday', + entryId: 'abc123', + } + result = await get(httpMock, params) + }) + + afterEach(() => { + rawGetSpy.mockRestore() + }) + + test('release.entry.get calls raw.get with correct URL and params', async () => { + expect(rawGetSpy).toHaveBeenCalledWith( + httpMock, + '/spaces/space123/environments/master/releases/black-friday/entries/abc123' + ) + }) + + test('release.entry.get returns the correct entry', async () => { + expect(result).toEqual(mockReleaseEntry) + }) + + test('release.entry.get returns release metadata', async () => { + expect(result.sys.release).toBeDefined() + }) +}) diff --git a/test/unit/mocks/entities.ts b/test/unit/mocks/entities.ts index db88d44de7..d22329074d 100644 --- a/test/unit/mocks/entities.ts +++ b/test/unit/mocks/entities.ts @@ -814,6 +814,23 @@ const releaseActionUnpublishMock: ReleaseActionProps = { action: 'unpublish', } +const releaseEntryMock: EntryProps< + any, + { release: { sys: { type: 'Link'; linkType: 'Release'; id: string } } } +> = { + ...entryMock, + sys: { + ...entryMock.sys, + release: { + sys: { + type: 'Link' as const, + linkType: 'Release' as const, + id: 'mock-release-id', + }, + }, + }, +} + const aiActionMock: AiActionProps = { sys: Object.assign(cloneDeep(sysMock), { type: 'AiAction' as const, @@ -1409,6 +1426,7 @@ const mocks = { releaseAction: releaseActionMock, releaseActionValidate: releaseActionValidateMock, releaseActionUnpublish: releaseActionUnpublishMock, + releaseEntry: releaseEntryMock, resource: resourceMock, resourceProvider: resourceProviderMock, resourceType: resourceTypeMock,