diff --git a/src/entity-type.tests.ts b/src/entity-type.tests.ts index 792481c..f4bd25c 100644 --- a/src/entity-type.tests.ts +++ b/src/entity-type.tests.ts @@ -3,66 +3,5 @@ import * as entityType from "./entity-type" import * as shared from "./shared.tests" describe(`entity type`, () => { - shared.run(shared.nonObjects, value => shared.rejects( - entityType.schema, value, `instance`, `is not of a type(s) object` - )) - describe(`unexpected properties`, () => shared.rejects(entityType.schema, { - singular: {}, - plural: {}, - label: [], - columns: {}, - unexpected: {} - }, `instance`, `additionalProperty "unexpected" exists in instance when not allowed`)) - describe(`singular`, () => { - describe(`missing`, () => shared.rejects(entityType.schema, { - plural: {}, - label: [], - columns: {} - }, `instance`, `requires property "singular"`)) - shared.testLocalizedString(entityType.schema, instance => ({ - singular: instance, - plural: {}, - label: [], - columns: {}, - }), `instance.singular`) - }) - describe(`plural`, () => { - describe(`missing`, () => shared.rejects(entityType.schema, { - singular: {}, - label: [], - columns: {} - }, `instance`, `requires property "plural"`)) - shared.testLocalizedString(entityType.schema, instance => ({ - singular: {}, - plural: instance, - label: [], - columns: {}, - }), `instance.plural`) - }) - describe(`label`, () => { - describe(`missing`, () => shared.rejects(entityType.schema, { - singular: {}, - plural: {}, - columns: {} - }, `instance`, `requires property "label"`)) - shared.testLabel(entityType.schema, instance => ({ - singular: {}, - plural: {}, - label: instance, - columns: {}, - }), `instance.label`) - }) - describe(`columns`, () => { - describe(`missing`, () => shared.rejects(entityType.schema, { - singular: {}, - plural: {}, - label: [] - }, `instance`, `requires property "columns"`)) - shared.testColumnSet(entityType.schema, instance => ({ - singular: {}, - plural: {}, - label: [], - columns: instance, - }), `instance.columns`) - }) + shared.testEntityType(entityType.schema, value => value, `instance`) }) diff --git a/src/shared.tests.ts b/src/shared.tests.ts index ee41448..6ca5be1 100644 --- a/src/shared.tests.ts +++ b/src/shared.tests.ts @@ -820,3 +820,75 @@ export function testLabel( [`long_w`, `2thetp`, `wanna_`, `depest`, `lore__`] ]))) } + +export function testEntityType( + schema: jsonschema.Schema, + instanceFactory: InstanceFactory, + property: string +): void { + run(nonObjects, value => rejects( + schema, instanceFactory(value), property, `is not of a type(s) object` + )) + describe(`unexpected properties`, () => rejects( + schema, + instanceFactory({ + singular: {}, + plural: {}, + label: [], + columns: {}, + unexpected: {} + }), property, `additionalProperty "unexpected" exists in instance when not allowed` + )) + describe(`singular`, () => { + describe(`missing`, () => rejects(schema, instanceFactory({ + plural: {}, + label: [], + columns: {} + }), property, `requires property "singular"`)) + testLocalizedString(schema, value => instanceFactory({ + singular: value, + plural: {}, + label: [], + columns: {}, + }), `${property}.singular`) + }) + describe(`plural`, () => { + describe(`missing`, () => rejects(schema, instanceFactory({ + singular: {}, + label: [], + columns: {} + }), property, `requires property "plural"`)) + testLocalizedString(schema, value => instanceFactory({ + singular: {}, + plural: value, + label: [], + columns: {}, + }), `${property}.plural`) + }) + describe(`label`, () => { + describe(`missing`, () => rejects(schema, instanceFactory({ + singular: {}, + plural: {}, + columns: {} + }), property, `requires property "label"`)) + testLabel(schema, value => instanceFactory({ + singular: {}, + plural: {}, + label: value, + columns: {}, + }), `${property}.label`) + }) + describe(`columns`, () => { + describe(`missing`, () => rejects(schema, instanceFactory({ + singular: {}, + plural: {}, + label: [] + }), property, `requires property "columns"`)) + testColumnSet(schema, value => instanceFactory({ + singular: {}, + plural: {}, + label: [], + columns: value, + }), `${property}.columns`) + }) +}