utxo-prague/utils/test.js

45 řádky
1.1 KiB
JavaScript

import { assertEquals } from "https://deno.land/std@0.119.0/testing/asserts.ts"
import { UTXOEngine } from './engine.js'
// initialize ajv JSON Schema validator
import Ajv from 'https://esm.sh/ajv@8.8.1?pin=v58'
import addFormats from 'https://esm.sh/ajv-formats@2.1.1'
const ajv = new Ajv()
addFormats(ajv)
const utxo = new UTXOEngine({ silent: true })
await utxo.init()
const schemas = await utxo.schemas()
const validators = {}
for (const item of schemas) {
validators[item.name] = ajv.compile(item.schema)
}
// check entries
for (const entryId of utxo.entriesList()) {
const entry = utxo.entries[entryId]
// check index
Deno.test(`UTXO.${entryId}: index.yaml`, () => {
if (!validators.index(entry.index)) {
throw validators.index.errors
}
})
// check specific specs
for (const specId of Object.keys(entry.specs)) {
Deno.test(`UTXO.${entryId}: ${specId}`, () => {
if (!validators[specId]) {
return null
}
if (!validators[specId](entry.specs[specId])) {
throw validators[specId].errors
}
})
}
}