Skip to content

Instantly share code, notes, and snippets.

@EstebanBorai
Forked from odigity/knex.js
Created February 2, 2021 14:34
Show Gist options
  • Save EstebanBorai/44137e5dfb924d6670096b39f46a0539 to your computer and use it in GitHub Desktop.
Save EstebanBorai/44137e5dfb924d6670096b39f46a0539 to your computer and use it in GitHub Desktop.
Wrapping a unit test in a transaction for easy cleanup with Knex.js
#!/usr/bin/node
const Promise = require('bluebird')
const config = require('./config.json')
const knex = require('./lib/knex')(config.database).connection()
const mock = () => ({ user_id: Math.floor(Math.random() * 999) + 1, payload_type: 'foo', attributes: JSON.stringify({}) })
const before = (t) => {
console.log('before')
const tmp = {}
const p = new Promise( (resolve, reject) => tmp.resolve = resolve )
knex.transaction( tx => { t.tx = tx; tmp.resolve() } ).catch( () => {} )
return p
}
const test = async (t) => {
console.log('test')
let m1 = mock(), m2 = mock()
await t.tx('notifications').insert(m1)
await t.tx('notifications').insert(m2)
}
const after = (t) => {
console.log('after')
// return t.tx.commit()
return t.tx.rollback()
}
let t = {}
before(t)
.then( () => test(t) )
.then( () => after(t) )
.catch( e => console.log(`e: ${e}`) )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment