sworm-schema
v1.2.2
Published
Schema Utilities for testing databases
Downloads
411
Readme
SWORM Schema
A companion to the popular SWORM ORM.
SWORM Schema is used to automate creating, deleting and cleaning of test databases.
You can also use it to validate that the schema has all the tables and columns required to run a particular query. This is really useful if you are integrating with an existing database and are trying to figure out what parts of the schema your test database needs.
Install
npm i sworm-schema --save-dev
yarn add sworm-schema --dev
How to use it
Firstly lets define our schema and suply a url connection string the datbase. The most common way of using this is with sqlite:
const SwormSchema = require('sworm-schema')
const swormSchema = new SwormSchema({
url: 'sqlite:test/db/test.db',
schema: {
people: {
id: {type: 'integer'},
name: {type: 'text'},
},
places: {
id: {type: 'integer'},
name: {type: 'text'},
}
}
})
Now create the database
await swormSchema.create()
You'll want to use the same connection string for the application you have under test. Or if you just want to play with database using SWORM you can just do this:
const db = await swormSchema.connect()
const person = db.model({table: 'people'})
const place = db.model({table: 'places'})
await person({id: 1, name: 'bob'}).save()
await person({id: 2, name: 'julie'}).save()
await place({id: 1, name: 'stroud'}).save()
await place({id: 2, name: 'auckland'}).save()
await db.query(`select id, name from people`)
Say you need to use a new query in your tests. You might want to see if the test schema supports it:
await swormSchema.validateQuery(`
select p.name, o.name as orgName
from people p inner join
organisations o on p.org_id = o.id
`)
which will output:
{
"message": "Incompatible",
"missing": {
"people": {
"org_id": {
"type": "unknown"
}
},
"organisations": {
"name": {
"type": "unknown"
},
"id": {
"type": "unknown"
}
}
}
}
You might want to clean up the data afterwards:
await swormSchema.clean()
Or if you just want to get rid of the whole database:
await swormSchema.drop()
We're Hiring!
Featurist provides full stack, feature driven development teams. Want to join us? Check out our career opportunities.