@dossierhq/integration-test
Version:
Integration test to ensure that different Dossier database adapters work as expected.
80 lines • 3.72 kB
JavaScript
/// <reference types="./AdminEntityGetEntityListSubSuite.d.ts" />
import { notOk, ok } from '@dossierhq/core';
import { assertOkResult, assertResultValue } from '../Asserts.js';
import { SUBJECT_ONLY_CREATE, TITLE_ONLY_CREATE } from '../shared-entity/Fixtures.js';
export const GetEntityListSubSuite = [
getEntityList_minimal,
getEntityList_none,
getEntityList_getLatestVersion,
getEntityList_authKeySubjectOneCorrectOneWrong,
getEntityList_errorAuthKeySubjectFromReadonlyRandom,
getEntityList_oneMissingOneExisting,
];
async function getEntityList_minimal({ clientProvider }) {
const client = clientProvider.dossierClient();
const create1Result = await client.createEntity(TITLE_ONLY_CREATE);
const create2Result = await client.createEntity(TITLE_ONLY_CREATE);
assertOkResult(create1Result);
assertOkResult(create2Result);
const { entity: { id: id1 }, } = create1Result.value;
const { entity: { id: id2 }, } = create2Result.value;
const getResult = await client.getEntityList([{ id: id1 }, { id: id2 }]);
assertResultValue(getResult, [
ok(create1Result.value.entity),
ok(create2Result.value.entity),
]);
}
async function getEntityList_none({ clientProvider }) {
const result = await clientProvider.dossierClient().getEntityList([]);
assertResultValue(result, []);
}
async function getEntityList_getLatestVersion({ clientProvider }) {
const client = clientProvider.dossierClient();
const createResult = await client.createEntity(TITLE_ONLY_CREATE);
assertOkResult(createResult);
const { entity: { id }, } = createResult.value;
const updateResult = await client.updateEntity({ id, fields: { title: 'Updated title' } });
assertOkResult(updateResult);
const result = await client.getEntityList([{ id }]);
assertOkResult(result);
assertResultValue(result, [ok(updateResult.value.entity)]);
}
async function getEntityList_authKeySubjectOneCorrectOneWrong({ clientProvider, }) {
const clientMain = clientProvider.dossierClient();
const create1Result = await clientProvider
.dossierClient('secondary')
.createEntity(SUBJECT_ONLY_CREATE);
const create2Result = await clientMain.createEntity(SUBJECT_ONLY_CREATE);
assertOkResult(create1Result);
assertOkResult(create2Result);
const { entity: { id: id1 }, } = create1Result.value;
const { entity: { id: id2 }, } = create2Result.value;
const getResult = await clientMain.getEntityList([{ id: id1 }, { id: id2 }]);
assertResultValue(getResult, [
notOk.NotAuthorized('Wrong authKey provided'),
ok(create2Result.value.entity),
]);
}
async function getEntityList_errorAuthKeySubjectFromReadonlyRandom({ clientProvider, }) {
const clientMain = clientProvider.dossierClient();
const { entity } = (await clientMain.createEntity(SUBJECT_ONLY_CREATE)).valueOrThrow();
const getResult = await clientProvider
.dossierClient('random', 'readonly')
.getEntityList([{ id: entity.id }]);
assertResultValue(getResult, [notOk.NotAuthorized('Wrong authKey provided')]);
}
async function getEntityList_oneMissingOneExisting({ clientProvider }) {
const client = clientProvider.dossierClient();
const createResult = await client.createEntity(TITLE_ONLY_CREATE);
assertOkResult(createResult);
const { entity: { id }, } = createResult.value;
const getResult = await client.getEntityList([
{ id: 'f09fdd62-4a1e-4320-afba-8dd0781799df' },
{ id },
]);
assertResultValue(getResult, [
notOk.NotFound('No such entity'),
ok(createResult.value.entity),
]);
}
//# sourceMappingURL=AdminEntityGetEntityListSubSuite.js.map