9af7a2d122
* Password based agent implementation * tidy * tidy * wip * tidy * wip * tidy * wip * tests * tidy * websocket * tidy * tidy * tidy * tidy * tidy * tidy * tidy * tidy * changeset * codegen * tidy * tidy * tidy * tidy * tests * tidy * tidy * tests * tidy * tidy * tidy * wip * tidy * memoize * tidy * tests * tidy * files reorg * Ensure that default values match constraints * wip * use vitest to test lex * Add readme * fix lint * add vitest workspace config * vitest config * vitest-cfg * tests * ignore coverage * tidy
29 lines
852 B
TypeScript
29 lines
852 B
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { isPlainObject } from '@atproto/lex-data'
|
|
import { JsonValue, jsonToLex } from '../src/index.js'
|
|
import invalidFixtures from './data-model-invalid.json' with { type: 'json' }
|
|
import validFixtures from './data-model-valid.json' with { type: 'json' }
|
|
|
|
function parseLexFixture(input: JsonValue) {
|
|
const lex = jsonToLex(input, { strict: true })
|
|
if (!isPlainObject(lex)) {
|
|
throw new Error('Expected a plain object')
|
|
}
|
|
}
|
|
|
|
describe('invalidFixtures', () => {
|
|
for (const fixture of invalidFixtures) {
|
|
it(fixture.note, async () => {
|
|
expect(() => parseLexFixture(fixture.json)).toThrow()
|
|
})
|
|
}
|
|
})
|
|
|
|
describe('validFixtures', () => {
|
|
for (const fixture of validFixtures) {
|
|
it(fixture.note, () => {
|
|
expect(() => parseLexFixture(fixture.json)).not.toThrow()
|
|
})
|
|
}
|
|
})
|