UNPKG

happner

Version:

distributed application engine with evented storage and mesh services

269 lines (206 loc) 6.19 kB
module.exports = DataComponent7; var DONE = false; function DataComponent7() { } DataComponent7.prototype.storeData = function ($happn, path, data, callback) { try { $happn.data.set(path, data, {}, function (e, response) { return callback(e, response) }); } catch (e) { callback(e); } } // DataComponent7.prototype.method1 = function($happn, options, callback) { // options.methodName = 'method1'; // console.log('ran method1...'); // callback(null, options); // } // DataComponent7.prototype.method2 = function($happn, options, callback) { // options.methodName = 'method2'; // console.log('ran method2...'); // callback(null, options); // } // DataComponent7.prototype.method3 = function($happn, options, callback) { // options.methodName = 'method3'; // console.log('ran method3...'); // callback(null, options); // } // DataComponent7.prototype.fireEvent = function($happn, eventName, callback) { // $happn.emit(eventName, eventName); // callback(null, eventName + ' emitted'); // } if (global.TESTING_7) return; // When 'requiring' the module above, // don't run the tests below //............. describe('7 - test persisted config, check memory and persisted data stores', function () { this.timeout(120000); require('benchmarket').start(); after(require('benchmarket').store()); var Mesh = require('../'); var test_id = Date.now() + '_' + require('shortid').generate(); var should = require('chai').should(); var fs = require('fs-extra'); var dbFileName = './temp/' + test_id + '.nedb'; global.TESTING_7 = true; var config = { name: "testPersistedData", datalayer: { persist: true, defaultRoute: "persist", //mem anyhow filename: dbFileName, }, modules: { 'DataComponent7': { path: __filename } }, components: { 'DataComponent7': { moduleName: 'DataComponent7', data: { routes: { "things/*": "persist", "stuff/*": "mem" } }, schema: { exclusive: false, methods: {} } }, 'data': { data: { routes: { "things/*": "persist", "stuff/*": "mem" } } } } }; after(function (done) { var _this = this; fs.unlink(dbFileName, function (e) { if (e) return callback(e); _this.mesh.stop({reconnect: false}, done); }); }); before(function (done) { var _this = this; Mesh.create(config).then(function (mesh) { _this.mesh = mesh; _this.datastores = mesh._mesh.datalayer.server.services.data.datastores; done(); }).catch(done); }); it('tests storing data routed to mem', function (done) { var _this = this; var called = false; var originalFn = this.datastores.mem.db.update; this.datastores.mem.db.update = function () { called = true; originalFn.apply(this, arguments); } try { this.mesh.exchange.DataComponent7.storeData('stuff/this/thing', {'test': 'data'}, function (e, response) { if (e) return done(e); try { response._meta.path.should.equal('/_data/DataComponent7/stuff/this/thing'); called.should.equal(true); } catch (e) { return done(e); } finally { _this.datastores.mem.update = originalFn; } done(); }); } catch (e) { done(e); } finally { this.datastores.mem.update = originalFn; } }); it('tests storing data routed to persist', function (done) { var _this = this; var called = false; var originalFn = this.datastores.persist.db.update; this.datastores.persist.db.update = function () { called = true; originalFn.apply(this, arguments); } try { this.mesh.exchange.DataComponent7.storeData('things/with/roman', {'test': 'xata'}, function (e, response) { if (e) return done(e); try { response._meta.path.should.equal('/_data/DataComponent7/things/with/roman'); called.should.equal(true); } catch (e) { return done(e); } finally { _this.datastores.persist.update = originalFn; } done(); }); } catch (e) { done(e); } finally { this.datastores.persist.update = originalFn; } }) it('tests storing data routed to mem, in the data component', function (done) { var _this = this; var called = false; var originalFn = this.datastores.mem.db.update; this.datastores.mem.db.update = function () { called = true; originalFn.apply(this, arguments); } try { this.mesh.exchange.data.set('stuff/this/thing', {'test': 'data'}, function (e, response) { if (e) return done(e); try { response._meta.path.should.equal('/_data/data/stuff/this/thing'); called.should.equal(true); } catch (e) { return done(e); } finally { _this.datastores.mem.update = originalFn; } done(); }); } catch (e) { done(e); } finally { this.datastores.mem.update = originalFn; } }); it('tests storing data routed to persist, in the data component', function (done) { var _this = this; var called = false; var originalFn = this.datastores.persist.db.update; this.datastores.persist.db.update = function () { called = true; originalFn.apply(this, arguments); } try { this.mesh.exchange.data.set('things/with/roman', {'test': 'xata'}, function (e, response) { if (e) return done(e); try { response._meta.path.should.equal('/_data/data/things/with/roman'); called.should.equal(true); } catch (e) { return done(e); } finally { _this.datastores.persist.update = originalFn; } done(); }); } catch (e) { done(e); } finally { this.datastores.persist.update = originalFn; } }) require('benchmarket').stop(); });