[next] Adapt for core API changes everywhere
Closed this issue · 1 comments
Frando commented
Most of the core tests have to be changed to async/await and adapted for API changes in the next branch.
API changes
Most methods changed from callbacks to async/await. API changes can best be seen by looking what core/lib/compat.js does.
Workspace
const store = require('@arsonar/core')
->const { Workspace } = require('@arsonar/core')
const store = new Store(storagePath, opts)
- >const workspace = new Workspace(opts)
store.create(name, opts, cb)
->await workspace.createCollection(keyOrName, opts)
store.get(keyOrName, opts, cb)
->await workspace.openCollectoin(keyOrName, opts)
store.share(key)
->await collection.configure({ share: true })
store.unshare(key)
->await collection.configure({ share: false })
store.updateCollection (key, info, cb)
->await collection.configure(configuration)
Collection
- all async methods changed from callbacks to async/await
- changes to subscription methods, see
compat.js
What needs to be done
- adapt tests in
packages/core/test
- adapt server package
Examples from core/test/basic.js
:
old:
tape('open close', t => {
createStore({ network: false }, (err, workspace, cleanup) => {
if (err) t.fail(err)
t.true(workspace.opened, 'opened property is set')
t.error(err)
cleanup(err => {
t.error(err)
t.end()
})
})
})
tape('put and get 1', t => {
createStore({ network: false }, (err, workspace, cleanup) => {
t.error(err, 'tempdir ok')
workspace.create('default', (err, collection) => {
t.error(err)
collection.putType({ name: 'doc', fields: { title: { type: 'string' } } }, err => {
t.error(err)
collection.put({ type: 'doc', value: { title: 'hello' } }, (err, record) => {
t.error(err)
const id = record.id
collection.query('records', { id }, { waitForSync: true }, (err, records) => {
t.error(err)
t.equal(records.length, 1)
t.equal(records[0].value.title, 'hello')
cleanup(() => t.end())
})
})
})
})
})
})
new:
tape('open close new', async t => {
const { cleanup, workspace } = await createOne()
t.true(workspace.opened, 'opened property is set')
await cleanup()
})
tape('put and get 1', async t => {
const { cleanup, workspace } = await createOne()
const collection = await workspace.openCollection('default')
await collection.putType({ name: 'doc', fields: { title: { type: 'string' } } })
const record = await collection.put({ type: 'doc', value: { title: 'hello' } })
t.equal(record.value.title, 'hello')
const id = record.id
const records = await collection.query('records', { id }, { sync: true })
t.equal(records.length, 1)
t.equal(records[0].value.title, 'hello')
await cleanup()
})
sidasmo commented
done