Skip to content

Commit e2cc822

Browse files
committed
test: add unit tests for semantic entitites
1 parent 769cb7c commit e2cc822

File tree

6 files changed

+229
-1
lines changed

6 files changed

+229
-1
lines changed

test/unit/create-environment-api.test.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ import {
1818
extensionMock,
1919
functionCollectionMock,
2020
functionLogMock,
21+
semanticDuplicatesMock,
22+
semanticRecommendationsMock,
23+
semanticReferenceSuggestionsMock,
24+
semanticSearchMock,
2125
} from './mocks/entities'
2226
import { describe, test, expect } from 'vitest'
2327
import { toPlainObject } from 'contentful-sdk-core'
@@ -771,6 +775,62 @@ describe('A createEnvironmentApi', () => {
771775
})
772776
})
773777

778+
test('API call getSemanticDuplicates', async () => {
779+
return makeGetEntityTest(setup, {
780+
entityType: 'SemanticDuplicates',
781+
mockToReturn: semanticDuplicatesMock,
782+
methodToTest: 'getSemanticDuplicates',
783+
})
784+
})
785+
786+
test('API call getSemanticDuplicates fails', async () => {
787+
return makeEntityMethodFailingTest(setup, {
788+
methodToTest: 'getSemanticDuplicates',
789+
})
790+
})
791+
792+
test('API call getSemanticRecommendations', async () => {
793+
return makeGetEntityTest(setup, {
794+
entityType: 'SemanticRecommendations',
795+
mockToReturn: semanticRecommendationsMock,
796+
methodToTest: 'getSemanticRecommendations',
797+
})
798+
})
799+
800+
test('API call getSemanticRecommendations fails', async () => {
801+
return makeEntityMethodFailingTest(setup, {
802+
methodToTest: 'getSemanticRecommendations',
803+
})
804+
})
805+
806+
test('API call getSemanticReferenceSuggestions', async () => {
807+
return makeGetEntityTest(setup, {
808+
entityType: 'SemanticReferenceSuggestions',
809+
mockToReturn: semanticReferenceSuggestionsMock,
810+
methodToTest: 'getSemanticReferenceSuggestions',
811+
})
812+
})
813+
814+
test('API call getSemanticReferenceSuggestions fails', async () => {
815+
return makeEntityMethodFailingTest(setup, {
816+
methodToTest: 'getSemanticReferenceSuggestions',
817+
})
818+
})
819+
820+
test('API call getSemanticSearch', async () => {
821+
return makeGetEntityTest(setup, {
822+
entityType: 'SemanticSearch',
823+
mockToReturn: semanticSearchMock,
824+
methodToTest: 'getSemanticSearch',
825+
})
826+
})
827+
828+
test('API call getSemanticSearch fails', async () => {
829+
return makeEntityMethodFailingTest(setup, {
830+
methodToTest: 'getSemanticSearch',
831+
})
832+
})
833+
774834
// Embargoed Assets
775835

776836
test('API call createAssetKey', async () => {
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { cloneMock } from '../mocks/entities'
2+
import setupMakeRequest from '../mocks/makeRequest'
3+
import { wrapSemanticDuplicates } from '../../../lib/entities/semantic-duplicates'
4+
import { entityWrappedTest } from '../test-creators/instance-entity-methods'
5+
import { describe, test } from 'vitest'
6+
7+
function setup(promise) {
8+
return {
9+
makeRequest: setupMakeRequest(promise),
10+
entityMock: cloneMock('semanticDuplicates'),
11+
}
12+
}
13+
14+
describe('Entity SemanticDuplicates', () => {
15+
test('SemanticDuplicates is wrapped', async () => {
16+
return entityWrappedTest(setup, { wrapperMethod: wrapSemanticDuplicates })
17+
})
18+
})
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { cloneMock } from '../mocks/entities'
2+
import setupMakeRequest from '../mocks/makeRequest'
3+
import { wrapSemanticRecommendations } from '../../../lib/entities/semantic-recommendations'
4+
import { entityWrappedTest } from '../test-creators/instance-entity-methods'
5+
import { describe, test } from 'vitest'
6+
7+
function setup(promise) {
8+
return {
9+
makeRequest: setupMakeRequest(promise),
10+
entityMock: cloneMock('semanticRecommendations'),
11+
}
12+
}
13+
14+
describe('Entity SemanticRecommendations', () => {
15+
test('SemanticRecommendations is wrapped', async () => {
16+
return entityWrappedTest(setup, { wrapperMethod: wrapSemanticRecommendations })
17+
})
18+
})
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { cloneMock } from '../mocks/entities'
2+
import setupMakeRequest from '../mocks/makeRequest'
3+
import { wrapSemanticReferenceSuggestions } from '../../../lib/entities/semantic-reference-suggestions'
4+
import { entityWrappedTest } from '../test-creators/instance-entity-methods'
5+
import { describe, test } from 'vitest'
6+
7+
function setup(promise) {
8+
return {
9+
makeRequest: setupMakeRequest(promise),
10+
entityMock: cloneMock('semanticReferenceSuggestions'),
11+
}
12+
}
13+
14+
describe('Entity SemanticReferenceSuggestions', () => {
15+
test('SemanticReferenceSuggestions is wrapped', async () => {
16+
return entityWrappedTest(setup, { wrapperMethod: wrapSemanticReferenceSuggestions })
17+
})
18+
})
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { cloneMock } from '../mocks/entities'
2+
import setupMakeRequest from '../mocks/makeRequest'
3+
import { wrapSemanticSearch } from '../../../lib/entities/semantic-search'
4+
import { entityWrappedTest } from '../test-creators/instance-entity-methods'
5+
import { describe, test } from 'vitest'
6+
7+
function setup(promise) {
8+
return {
9+
makeRequest: setupMakeRequest(promise),
10+
entityMock: cloneMock('semanticSearch'),
11+
}
12+
}
13+
14+
describe('Entity SemanticSearch', () => {
15+
test('SemanticSearch is wrapped', async () => {
16+
return entityWrappedTest(setup, { wrapperMethod: wrapSemanticSearch })
17+
})
18+
})

test/unit/mocks/entities.ts

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,14 @@ import {
8484
AiActionInvocationProps,
8585
AiActionInvocationType,
8686
} from '../../../lib/entities/ai-action-invocation'
87-
import { VectorizationStatusProps } from '../../../lib/entities/vectorization-status'
87+
import {
88+
EmbeddingSetStatus,
89+
VectorizationStatusProps,
90+
} from '../../../lib/entities/vectorization-status'
91+
import { SemanticDuplicatesProps } from '../../../lib/entities/semantic-duplicates'
92+
import { SemanticReferenceSuggestionsProps } from '../../../lib/entities/semantic-reference-suggestions'
93+
import { SemanticSearchProps } from '../../../lib/entities/semantic-search'
94+
import { SemanticRecommendationsProps } from '../../../lib/entities/semantic-recommendations'
8895

8996
const linkMock: MetaLinkProps = {
9097
id: 'linkid',
@@ -1391,6 +1398,75 @@ const vectorizationStatusMock: VectorizationStatusProps = {
13911398
{
13921399
sys: {
13931400
space: makeLink('Space', 'mock-space-id'),
1401+
status: EmbeddingSetStatus.ACTIVE,
1402+
type: 'VectorizationStatus',
1403+
createdAt: '2025-01-01T10:00:00Z',
1404+
updatedAt: '2025-01-01T10:00:00Z',
1405+
},
1406+
},
1407+
],
1408+
}
1409+
1410+
const semanticDuplicatesMock: SemanticDuplicatesProps = {
1411+
sys: {
1412+
type: 'Array',
1413+
},
1414+
items: [
1415+
{
1416+
sys: {
1417+
entity: makeLink('Entry', 'mock-entry-id'),
1418+
space: makeLink('Space', 'mock-space-id'),
1419+
environment: makeLink('Environment', 'mock-environment-id'),
1420+
type: 'SemanticDuplicatesResult',
1421+
},
1422+
label: 'high',
1423+
},
1424+
],
1425+
}
1426+
1427+
const semanticRecommendationsMock: SemanticRecommendationsProps = {
1428+
sys: {
1429+
type: 'Array',
1430+
},
1431+
items: [
1432+
{
1433+
sys: {
1434+
entity: makeLink('Entry', 'mock-entry-id'),
1435+
space: makeLink('Space', 'mock-space-id'),
1436+
environment: makeLink('Environment', 'mock-environment-id'),
1437+
type: 'SemanticRecommendationsResult',
1438+
},
1439+
},
1440+
],
1441+
}
1442+
1443+
const semanticReferenceSuggestionsMock: SemanticReferenceSuggestionsProps = {
1444+
sys: {
1445+
type: 'Array',
1446+
},
1447+
items: [
1448+
{
1449+
sys: {
1450+
entity: makeLink('Entry', 'mock-entry-id'),
1451+
space: makeLink('Space', 'mock-space-id'),
1452+
environment: makeLink('Environment', 'mock-environment-id'),
1453+
type: 'SemanticReferenceSuggestionsResult',
1454+
},
1455+
},
1456+
],
1457+
}
1458+
1459+
const semanticSearchMock: SemanticSearchProps = {
1460+
sys: {
1461+
type: 'Array',
1462+
},
1463+
items: [
1464+
{
1465+
sys: {
1466+
entity: makeLink('Entry', 'mock-entry-id'),
1467+
space: makeLink('Space', 'mock-space-id'),
1468+
environment: makeLink('Environment', 'mock-environment-id'),
1469+
type: 'SemanticSearchResult',
13941470
},
13951471
},
13961472
],
@@ -1457,6 +1533,10 @@ const mocks = {
14571533
resourceProvider: resourceProviderMock,
14581534
resourceType: resourceTypeMock,
14591535
scheduledAction: scheduledActionMock,
1536+
semanticDuplicates: semanticDuplicatesMock,
1537+
semanticRecommendations: semanticRecommendationsMock,
1538+
semanticReferenceSuggestions: semanticReferenceSuggestionsMock,
1539+
semanticSearch: semanticSearchMock,
14601540
snapshot: snapShotMock,
14611541
spaceMember: spaceMemberMock,
14621542
spaceMembership: spaceMembershipMock,
@@ -1726,6 +1806,18 @@ function setupEntitiesMock() {
17261806
VectorizationStatus: {
17271807
wrapVectorizationStatus: vi.fn(),
17281808
},
1809+
SemanticDuplicates: {
1810+
wrapSemanticDuplicates: vi.fn(),
1811+
},
1812+
SemanticRecommendations: {
1813+
wrapSemanticRecommendations: vi.fn(),
1814+
},
1815+
SemanticReferenceSuggestions: {
1816+
wrapSemanticReferenceSuggestions: vi.fn(),
1817+
},
1818+
SemanticSearch: {
1819+
wrapSemanticSearch: vi.fn(),
1820+
},
17291821
}
17301822

17311823
return entitiesMock
@@ -1800,4 +1892,8 @@ export {
18001892
functionLogMock,
18011893
functionLogCollectionMock,
18021894
vectorizationStatusMock,
1895+
semanticDuplicatesMock,
1896+
semanticRecommendationsMock,
1897+
semanticReferenceSuggestionsMock,
1898+
semanticSearchMock,
18031899
}

0 commit comments

Comments
 (0)