@bsv/wallet-toolbox
Version:
BRC100 conforming wallet, wallet storage and wallet signer components
86 lines (76 loc) • 2.35 kB
text/typescript
import { _tu } from '../utils/TestUtilsWalletStorage'
import { KnexMigrations, StorageKnex, wait } from '../../src/index.all'
import { Knex } from 'knex'
describe('KnexMigrations tests', () => {
jest.setTimeout(99999999)
const knexs: Knex[] = []
const env = _tu.getEnvFlags('test')
beforeAll(async () => {
const localSQLiteFile = await _tu.newTmpFile('migratetest.sqlite', true, false, true)
const knexSQLite = _tu.createLocalSQLite(localSQLiteFile)
knexs.push(knexSQLite)
if (env.runMySQL) {
const knexMySQL = _tu.createLocalMySQL('migratetest')
knexs.push(knexMySQL)
}
})
afterAll(async () => {
for (const knex of knexs) {
await knex.destroy()
}
})
let done0 = false
const waitFor0 = async () => {
while (!done0) await wait(100)
}
let done1 = false
const waitFor1 = async () => {
while (!done1) await wait(100)
}
test('0 migragte down', async () => {
for (const knex of knexs) {
const config = {
migrationSource: new KnexMigrations('test', '0 migration test', '1'.repeat(64), 1000)
}
const count = Object.keys(config.migrationSource.migrations).length
for (let i = 0; i < count; i++) {
try {
const r = await knex.migrate.down(config)
expect(r).toBeTruthy()
} catch (eu: unknown) {
break
}
}
}
done0 = true
})
test('1 migragte to latest', async () => {
await waitFor0()
for (const knex of knexs) {
const config = {
migrationSource: new KnexMigrations('test', '0 migration test', '1'.repeat(64), 1000)
}
const latest = await KnexMigrations.latestMigration()
await knex.migrate.latest(config)
const version = await knex.migrate.currentVersion(config)
expect(version).toBe(latest)
}
done1 = true
})
test('2 getSettings', async () => {
await waitFor1()
for (const knex of knexs) {
const storage = new StorageKnex({
...StorageKnex.defaultOptions(),
chain: 'test',
knex
})
await storage.makeAvailable()
const r = await storage.getSettings()
expect(r.created_at instanceof Date).toBe(true)
expect(r.updated_at instanceof Date).toBe(true)
expect(r.chain).toBe('test')
expect(r.maxOutputScript).toBe(1000)
}
})
})