Skip to content

Commit

Permalink
test: properly test more validate errors (#249)
Browse files Browse the repository at this point in the history
  • Loading branch information
EvanHahn authored Sep 4, 2024
1 parent 10999ac commit a412967
Showing 1 changed file with 28 additions and 6 deletions.
34 changes: 28 additions & 6 deletions test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ import {
} from './fixtures/index.js'
import { cachedValues } from './fixtures/cached.js'

/** @import { SchemaName } from '../dist/types.js' */

const schemaNames = /** @type {SchemaName[]} */ (Object.keys(dataTypeIds))

test('Bad docs throw when encoding', () => {
for (const { text, doc } of badDocs) {
assert.throws(() => {
Expand All @@ -30,19 +34,29 @@ test('Bad docs throw when encoding', () => {
}
})

test(`Bad docs won't validate`, () => {
test('Bad docs throw when validating if bad schema name', () => {
for (const { text, doc } of badDocs) {
const { schemaName } = doc
if (isSchemaName(schemaName)) continue

assert.throws(() => {
// @ts-expect-error
validate(doc)
validate(/** @type {any} */ (schemaName), doc)
}, text)
}
})

test('validate bad docs', () => {
for (const schemaName of Object.keys(currentSchemaVersions)) {
test(`Bad docs won't validate`, () => {
for (const { text, doc } of badDocs) {
const { schemaName } = doc
if (!isSchemaName(schemaName)) continue

assert(!validate(schemaName, doc), text)
}
})

test('validate empty docs', () => {
for (const schemaName of schemaNames) {
assert(
// @ts-ignore
!validate(schemaName, {}),
`${schemaName} with missing properties should not validate`
)
Expand Down Expand Up @@ -295,6 +309,14 @@ test(`decoding observation with missing position provider props`, async () => {
)
})

/**
* @param {unknown} value
* @returns {value is SchemaName}
*/
function isSchemaName(value) {
return schemaNames.includes(/** @type {any} */ (value))
}

/**
* Remove undefined properties (deeply) from an object, by round-tripping to
* JSON. Also handles Buffers via JSON.parse reviver
Expand Down

0 comments on commit a412967

Please sign in to comment.