@dossierhq/integration-test
Version:
Integration test to ensure that different Dossier database adapters work as expected.
123 lines • 7.51 kB
JavaScript
/// <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