Fixed lib and finished implementing it
All checks were successful
continuous-integration/appveyor/branch AppVeyor build succeeded
All checks were successful
continuous-integration/appveyor/branch AppVeyor build succeeded
This commit is contained in:
parent
4024f1269a
commit
67606b9b3b
4 changed files with 72 additions and 3 deletions
|
@ -379,7 +379,7 @@ export default class Application extends EventEmitter {
|
||||||
rej(errTimeout)
|
rej(errTimeout)
|
||||||
}, this.config.startWaitUntilFail)
|
}, this.config.startWaitUntilFail)
|
||||||
|
|
||||||
let startRes = this.module.start(this.http, this.config.port, this.ctx)
|
let startRes = this.module.start(this.http, this.config.port || null, this.ctx)
|
||||||
if (startRes && startRes.then) {
|
if (startRes && startRes.then) {
|
||||||
return startRes.then(res, rej)
|
return startRes.then(res, rej)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import Util from './util.mjs'
|
import Util from './util.mjs'
|
||||||
import getLog from './log.mjs'
|
import getLog from './log.mjs'
|
||||||
import GetDB from './db.mjs'
|
import GetDB from './db.mjs'
|
||||||
|
import Application from './application.mjs'
|
||||||
import StaticProvider from './providers/static.mjs'
|
import StaticProvider from './providers/static.mjs'
|
||||||
import Core from './core.mjs'
|
import Core from './core.mjs'
|
||||||
|
|
||||||
|
@ -11,7 +12,7 @@ export default class ServiceCore {
|
||||||
}
|
}
|
||||||
this._root_import_meta_url = root_import_meta_url
|
this._root_import_meta_url = root_import_meta_url
|
||||||
this.util = new Util(this._root_import_meta_url)
|
this.util = new Util(this._root_import_meta_url)
|
||||||
this.dbfilename = dbname
|
this.dbfilename = dbfilename
|
||||||
this.log = getLog(name)
|
this.log = getLog(name)
|
||||||
this.name = name
|
this.name = name
|
||||||
this.config = {}
|
this.config = {}
|
||||||
|
@ -20,6 +21,10 @@ export default class ServiceCore {
|
||||||
this.app = null
|
this.app = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setConfig(config) {
|
||||||
|
this.config[this.name] = config
|
||||||
|
}
|
||||||
|
|
||||||
async init(module = null) {
|
async init(module = null) {
|
||||||
this.db = await GetDB(this.config, this.log, this.dbfilename)
|
this.db = await GetDB(this.config, this.log, this.dbfilename)
|
||||||
this.core = new Core(this.db, this.util, this.log)
|
this.core = new Core(this.db, this.util, this.log)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import bunyan from 'bunyan-lite'
|
import bunyan from 'bunyan-lite'
|
||||||
import { runner } from './core/runner.mjs'
|
import { runner } from './core/runner.mjs'
|
||||||
import { ServiceCore } from './core/lib.mjs'
|
import ServiceCore from './core/lib.mjs'
|
||||||
import Core from './core/core.mjs'
|
import Core from './core/core.mjs'
|
||||||
import Application from './core/application.mjs'
|
import Application from './core/application.mjs'
|
||||||
import Util from './core/util.mjs'
|
import Util from './core/util.mjs'
|
||||||
|
|
64
test/lib.test.mjs
Normal file
64
test/lib.test.mjs
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
import { Eltro as t, assert, stub } from 'eltro'
|
||||||
|
import * as sc from '../index.mjs'
|
||||||
|
|
||||||
|
t.describe('', function() {
|
||||||
|
const module = {
|
||||||
|
start: stub()
|
||||||
|
}
|
||||||
|
|
||||||
|
t.beforeEach(function() {
|
||||||
|
module.start.reset()
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('should have ServiceCore defined', function() {
|
||||||
|
assert.ok(sc.ServiceCore)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('constructor should work', function() {
|
||||||
|
const assertAppName = 'Gondola'
|
||||||
|
let core = new sc.ServiceCore(assertAppName, import.meta.url)
|
||||||
|
assert.strictEqual(core.util._root_import_meta_url, import.meta.url)
|
||||||
|
assert.strictEqual(core.name, assertAppName)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('should support proper init', async function() {
|
||||||
|
const assertAppName = 'Hero Combat'
|
||||||
|
let core = new sc.ServiceCore(assertAppName, import.meta.url)
|
||||||
|
await core.init(module)
|
||||||
|
|
||||||
|
assert.strictEqual(core.app.name, assertAppName)
|
||||||
|
assert.strictEqual(core.app.module, module)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('should call module start', async function() {
|
||||||
|
const assertError = new Error('Inbo')
|
||||||
|
module.start.rejects(assertError)
|
||||||
|
|
||||||
|
let core = new sc.ServiceCore('testapp', import.meta.url)
|
||||||
|
await core.init(module)
|
||||||
|
let err = await assert.isRejected(core.run())
|
||||||
|
assert.strictEqual(err, assertError)
|
||||||
|
assert.strictEqual(module.start.firstCall[0], core.app.http)
|
||||||
|
assert.strictEqual(module.start.firstCall[1], null)
|
||||||
|
assert.strictEqual(module.start.firstCall[2], core.app.ctx)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('should support overwriting config', async function() {
|
||||||
|
const assertError = new Error('Inbo')
|
||||||
|
const assertPort = 9382
|
||||||
|
module.start.rejects(assertError)
|
||||||
|
|
||||||
|
let core = new sc.ServiceCore('testapp', import.meta.url)
|
||||||
|
|
||||||
|
core.setConfig({
|
||||||
|
port: assertPort
|
||||||
|
})
|
||||||
|
await core.init(module)
|
||||||
|
|
||||||
|
let err = await assert.isRejected(core.run())
|
||||||
|
assert.strictEqual(err, assertError)
|
||||||
|
assert.strictEqual(module.start.firstCall[0], core.app.http)
|
||||||
|
assert.strictEqual(module.start.firstCall[1], assertPort)
|
||||||
|
assert.strictEqual(module.start.firstCall[2], core.app.ctx)
|
||||||
|
})
|
||||||
|
})
|
Loading…
Reference in a new issue