UNPKG

@dossierhq/integration-test

Version:

Integration test to ensure that different Dossier database adapters work as expected.

123 lines 7.51 kB
/// <reference types="./PublishedEntityGetEntitiesSampleSubSuite.d.ts" /> import { copyEntity, Schema } from '@dossierhq/core'; import { assertOkResult } from '../Asserts.js'; import { adminToPublishedEntity, REFERENCES_CREATE, TITLE_ONLY_CREATE, } from '../shared-entity/Fixtures.js'; import { assertSampledEntities, assertSampledEntitiesArePartOfExpected, } from '../shared-entity/SampleTestUtils.js'; export const GetEntitiesSampleSubSuite = [ getEntitiesSample_minimal, getEntitiesSample_authKeySubject, getEntitiesSample_authKeySubjectFromReadonlyRandom, getEntitiesSample_authKeyNoneAndSubject, getEntitiesSample_linksToOneReference, getEntitiesSample_linksToNoReferences, getEntitiesSample_linksToTwoReferencesFromOneEntity, getEntitiesSample_linksFromOneReference, getEntitiesSample_linksFromNoReferences, getEntitiesSample_linksFromTwoReferencesFromOneEntity, ]; async function getEntitiesSample_minimal({ clientProvider, readOnlyEntityRepository, }) { const expectedEntities = readOnlyEntityRepository.getMainPrincipalPublishedEntities(); const result = await clientProvider.publishedClient().getEntitiesSample({ entityTypes: ['ReadOnly'], }); assertSampledEntitiesArePartOfExpected(result, expectedEntities); } async function getEntitiesSample_authKeySubject({ clientProvider, readOnlyEntityRepository, }) { const expectedEntities = readOnlyEntityRepository.getMainPrincipalPublishedEntities(['subject']); const result = await clientProvider.publishedClient().getEntitiesSample({ entityTypes: ['ReadOnly'], authKeys: ['subject'], }); assertSampledEntitiesArePartOfExpected(result, expectedEntities); } async function getEntitiesSample_authKeySubjectFromReadonlyRandom({ clientProvider, }) { const publishedClient = clientProvider.publishedClient('random', 'readonly'); const result = await publishedClient.getEntitiesSample({ authKeys: ['subject'] }); assertSampledEntitiesArePartOfExpected(result, []); } async function getEntitiesSample_authKeyNoneAndSubject({ clientProvider, readOnlyEntityRepository, }) { const expectedEntities = readOnlyEntityRepository.getMainPrincipalPublishedEntities([ '', 'subject', ]); const result = await clientProvider.publishedClient().getEntitiesSample({ entityTypes: ['ReadOnly'], authKeys: ['', 'subject'], }); assertSampledEntitiesArePartOfExpected(result, expectedEntities); } async function getEntitiesSample_linksToOneReference({ clientProvider, }) { const client = clientProvider.dossierClient(); const publishedClient = clientProvider.publishedClient(); const schema = new Schema((await client.getSchemaSpecification()).valueOrThrow()); const titleOnlyResult = await client.createEntity(TITLE_ONLY_CREATE, { publish: true }); assertOkResult(titleOnlyResult); const { entity: { id: titleOnlyId }, } = titleOnlyResult.value; const referenceResult = await client.createEntity(copyEntity(REFERENCES_CREATE, { fields: { titleOnly: { id: titleOnlyId } } }), { publish: true }); assertOkResult(referenceResult); const { entity: referenceEntity } = referenceResult.value; const sampleResult = await publishedClient.getEntitiesSample({ linksTo: { id: titleOnlyId } }, { seed: 505 }); assertSampledEntities(sampleResult, 505, [adminToPublishedEntity(schema, referenceEntity)]); } async function getEntitiesSample_linksToNoReferences({ clientProvider, }) { const client = clientProvider.dossierClient(); const publishedClient = clientProvider.publishedClient(); const titleOnlyResult = await client.createEntity(TITLE_ONLY_CREATE, { publish: true }); assertOkResult(titleOnlyResult); const { entity: { id }, } = titleOnlyResult.value; const sampleResult = await publishedClient.getEntitiesSample({ linksTo: { id } }, { seed: 987 }); assertSampledEntities(sampleResult, 987, []); } async function getEntitiesSample_linksToTwoReferencesFromOneEntity({ clientProvider, }) { const client = clientProvider.dossierClient(); const publishedClient = clientProvider.publishedClient(); const schema = new Schema((await client.getSchemaSpecification()).valueOrThrow()); const titleOnlyResult = await client.createEntity(TITLE_ONLY_CREATE, { publish: true }); assertOkResult(titleOnlyResult); const { entity: { id: titleOnlyId }, } = titleOnlyResult.value; const referenceResult = await client.createEntity(copyEntity(REFERENCES_CREATE, { fields: { any: { id: titleOnlyId }, titleOnly: { id: titleOnlyId } }, }), { publish: true }); assertOkResult(referenceResult); const { entity: referenceEntity } = referenceResult.value; const sampleResult = await publishedClient.getEntitiesSample({ linksTo: { id: titleOnlyId } }, { seed: 765 }); assertSampledEntities(sampleResult, 765, [adminToPublishedEntity(schema, referenceEntity)]); } async function getEntitiesSample_linksFromOneReference({ clientProvider, }) { const client = clientProvider.dossierClient(); const publishedClient = clientProvider.publishedClient(); const schema = new Schema((await client.getSchemaSpecification()).valueOrThrow()); const titleOnlyResult = await client.createEntity(TITLE_ONLY_CREATE, { publish: true }); assertOkResult(titleOnlyResult); const { entity: titleOnlyEntity } = titleOnlyResult.value; const referenceResult = await client.createEntity(copyEntity(REFERENCES_CREATE, { fields: { titleOnly: { id: titleOnlyEntity.id } } }), { publish: true }); assertOkResult(referenceResult); const { entity: { id: referenceId }, } = referenceResult.value; const sampleResult = await publishedClient.getEntitiesSample({ linksFrom: { id: referenceId } }, { seed: 432 }); assertSampledEntities(sampleResult, 432, [adminToPublishedEntity(schema, titleOnlyEntity)]); } async function getEntitiesSample_linksFromNoReferences({ clientProvider, }) { const client = clientProvider.dossierClient(); const publishedClient = clientProvider.publishedClient(); const referenceResult = await client.createEntity(REFERENCES_CREATE, { publish: true }); assertOkResult(referenceResult); const { entity: { id }, } = referenceResult.value; const sampleResult = await publishedClient.getEntitiesSample({ linksFrom: { id } }, { seed: 100 }); assertSampledEntities(sampleResult, 100, []); } async function getEntitiesSample_linksFromTwoReferencesFromOneEntity({ clientProvider, }) { const client = clientProvider.dossierClient(); const publishedClient = clientProvider.publishedClient(); const schema = new Schema((await client.getSchemaSpecification()).valueOrThrow()); const titleOnlyResult = await client.createEntity(TITLE_ONLY_CREATE, { publish: true }); assertOkResult(titleOnlyResult); const { entity: titleOnlyEntity } = titleOnlyResult.value; const referenceResult = await client.createEntity(copyEntity(REFERENCES_CREATE, { fields: { any: { id: titleOnlyEntity.id }, titleOnly: { id: titleOnlyEntity.id } }, }), { publish: true }); assertOkResult(referenceResult); const { entity: { id: referenceId }, } = referenceResult.value; const sampleResult = await publishedClient.getEntitiesSample({ linksFrom: { id: referenceId } }, { seed: 555 }); assertSampledEntities(sampleResult, 555, [adminToPublishedEntity(schema, titleOnlyEntity)]); } //# sourceMappingURL=PublishedEntityGetEntitiesSampleSubSuite.js.map