UNPKG

futoin-xferengine

Version:

Neutral clustered multi-currency transaction engine with limits

111 lines (93 loc) 3.4 kB
'use strict'; require( './prepare' ); const child_process = require( 'child_process' ); const $as = require( 'futoin-asyncsteps' ); const DBAutoConfig = require( 'futoin-database/AutoConfig' ); const integration_suite = require( './integrationsuite' ); const fs = require( 'fs' ); const XferCCM = require( '../XferCCM' ); describe( 'SQLite', function() { const xfers_db = `${__dirname}/xfers.db`; before( function( done ) { this.timeout( 30e3 ); const ccm = new XferCCM(); $as().add( ( as ) => { as.add( ( as ) => { const Executor = require( 'futoin-executor/Executor' ); const SQLiteService = require( 'futoin-database/SQLiteService' ); for ( let f of [ xfers_db ] ) { if ( fs.existsSync( f ) ) { fs.unlinkSync( f ); } const executor = new Executor( ccm ); SQLiteService.register( as, executor, { port: f, } ); as.add( ( as ) => executor.close() ); } } ); as.add( ( as ) => { ccm.close(); let res; res = child_process.spawnSync( 'cid', [ 'tool', 'exec', 'flyway', '--', 'migrate', `-url=jdbc:sqlite:${xfers_db}`, '-user=fake', '-password=fake', `-locations=filesystem:${__dirname}/../sql/sqlite,filesystem:${__dirname}/../node_modules/futoin-eventstream/sql/active/sqlite`, ] ); if ( res.status ) { console.log( res.stderr.toString() ); as.error( 'Fail' ); } } ); }, ( as, err ) => { console.log( err ); console.log( as.state.error_info ); done( as.state.last_exception || 'Fail' ); } ).add( ( as ) => done() ) .execute(); } ); const vars = { as: null, ccm: null, }; beforeEach( 'specific', function() { const ccm = new XferCCM(); const as = $as(); vars.ccm = ccm; vars.as = as; as.add( ( as ) => { DBAutoConfig( as, ccm, { xfer: {}, }, { DB_XFER_TYPE: 'sqlite', DB_XFER_SOCKET: xfers_db, } ); as.add( ( as ) => { const db = ccm.db( 'xfer' ); db.query( as, 'PRAGMA synchronous = OFF' ); db.query( as, 'PRAGMA journal_mode = MEMORY' ); } ); }, ( as, err ) => { console.log( err ); console.log( as.state.error_info ); console.log( as.state.last_exception ); } ); } ); afterEach( function() { vars.ccm.close(); vars.ccm = null; } ); integration_suite( describe, it, vars ); } );