xen-service
Advanced tools
Comparing version 0.1.1 to 0.1.2
@@ -7,3 +7,3 @@ const { Observable } = require('rxjs/Observable'); | ||
const XenService = require('../source/XenService.js'); | ||
const { fetchAction } = require('../source/helpers.js'); | ||
const { fetchAction, devLog } = require('../source/helpers.js'); | ||
@@ -55,4 +55,3 @@ /** | ||
// action JSON. | ||
const createKoaServer = (service) => { | ||
/* eslint-disable no-console */ | ||
const createKoaServer = service => { | ||
const server = new koa(); | ||
@@ -62,3 +61,3 @@ server.use(koaLogger()); | ||
server.use((ctx, next) => { | ||
console.log(`${service.name}:${service.options.serverPort}`); | ||
devLog(`${service.name}:${service.options.serverPort}`); | ||
if (ctx.originalUrl !== '/') { | ||
@@ -78,6 +77,5 @@ throw new Error(`Endpoint ${ctx.originalUrl} not implemented.`); | ||
server.listen(service.options.serverPort); | ||
console.log(`${service.name} started on localhost:${service.options.serverPort}`); | ||
devLog(`${service.name} started on localhost:${service.options.serverPort}`); | ||
return service; | ||
/* eslint-enable no-console */ | ||
}; | ||
@@ -251,4 +249,3 @@ | ||
carOwnersService$ | ||
).subscribe((services) => { | ||
/* eslint-disable no-console */ | ||
).subscribe(() => { | ||
// Cars.addCar | ||
@@ -262,3 +259,3 @@ fetchAction('http://localhost:9000', { | ||
}).do(responseAction => { | ||
console.log('addCar', responseAction); | ||
devLog('addCar', responseAction); | ||
expect(responseAction.payload.plateNumber).to.equal('ABC-12345'); | ||
@@ -276,3 +273,3 @@ expect(responseAction.payload.carMake).to.equal('Dune Buggy'); | ||
}).do(responseAction => { | ||
console.log('getCar', responseAction); | ||
devLog('getCar', responseAction); | ||
expect(responseAction.payload.plateNumber).to.equal('ABC-12345'); | ||
@@ -291,3 +288,3 @@ expect(responseAction.payload.carMake).to.equal('Dune Buggy'); | ||
}).do(responseAction => { | ||
console.log('addDriver', responseAction); | ||
devLog('addDriver', responseAction); | ||
expect(responseAction.payload.driverLicenseNumber).to.equal('DL-987654321-0'); | ||
@@ -305,3 +302,3 @@ expect(responseAction.payload.fullname).to.equal('Gordon Freeman'); | ||
}).do(responseAction => { | ||
console.log('getDriver', responseAction); | ||
devLog('getDriver', responseAction); | ||
expect(responseAction.payload.driverLicenseNumber).to.equal('DL-987654321-0'); | ||
@@ -320,3 +317,3 @@ expect(responseAction.payload.fullname).to.equal('Gordon Freeman'); | ||
}).do(responseAction => { | ||
console.log('registerCarOwner', responseAction); | ||
devLog('registerCarOwner', responseAction); | ||
expect(responseAction.payload.driverLicenseNumber).to.equal('DL-987654321-0'); | ||
@@ -335,3 +332,3 @@ expect(responseAction.payload.plateNumber).to.equal('ABC-12345'); | ||
.do(responseAction => { | ||
console.log('getCarOwner', responseAction); | ||
devLog('getCarOwner', responseAction); | ||
expect(responseAction.payload.driverLicenseNumber).to.equal('DL-987654321-0'); | ||
@@ -343,4 +340,4 @@ expect(responseAction.payload.fullname).to.equal('Gordon Freeman'); | ||
.subscribe(() => { | ||
console.log('APPARENT SUCCESS'); | ||
devLog('APPARENT SUCCESS'); | ||
}); | ||
}); |
const XenService = require('../source/XenService.js'); | ||
const { devLog } = require('../source/helpers.js'); | ||
@@ -140,4 +141,3 @@ // Example of a dependency validator (see procedures in the service config) | ||
getUser$.subscribe(newUserDocument => { | ||
/* eslint-disable no-console */ | ||
console.log(newUserDocument); | ||
devLog(newUserDocument); | ||
}); | ||
@@ -144,0 +144,0 @@ }); |
{ | ||
"name": "xen-service", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "Simple and flexible microservice library", | ||
@@ -19,4 +19,4 @@ "main": "source/XenService.js", | ||
"chai": "^3.5.0", | ||
"eslint": "^3.10.2", | ||
"mocha": "^3.1.2", | ||
"eslint": "^3.12.2", | ||
"mocha": "^3.2.0", | ||
"sinon": "^1.17.6" | ||
@@ -30,4 +30,4 @@ }, | ||
"node-fetch": "^1.6.3", | ||
"rxjs": "^5.0.0-rc.3" | ||
"rxjs": "^5.0.1" | ||
} | ||
} |
@@ -25,3 +25,3 @@ const { Observable } = require('rxjs/Observable'); | ||
function createConnections(state, connectionCreators) { | ||
function createConnections(state, connectionCreators = {}) { | ||
// loop over and call each connection creator | ||
@@ -45,11 +45,13 @@ const connectionStreams = | ||
// merge newly created connections into state | ||
return Observable.zip( | ||
...connectionStreams, | ||
(...connections) => Object.assign({}, state, { | ||
connections: Object.assign({}, ...connections) | ||
}) | ||
); | ||
return connectionStreams.length === 0 | ||
? toObservable(state) | ||
: Observable.zip( | ||
...connectionStreams, | ||
(...connections) => Object.assign({}, state, { | ||
connections: Object.assign({}, ...connections) | ||
}) | ||
); | ||
} | ||
function createModels(state, modelCreators) { | ||
function createModels(state, modelCreators = {}) { | ||
// loop over and call each model creator | ||
@@ -76,11 +78,13 @@ const modelStreams = | ||
// merge newly created models into state | ||
return Observable.zip( | ||
...modelStreams, | ||
(...models) => Object.assign({}, state, { | ||
models: Object.assign({}, ...models) | ||
}) | ||
); | ||
return modelStreams.length === 0 | ||
? toObservable(state) | ||
: Observable.zip( | ||
...modelStreams, | ||
(...models) => Object.assign({}, state, { | ||
models: Object.assign({}, ...models) | ||
}) | ||
); | ||
} | ||
function createProcedures(state, procedures) { | ||
function createProcedures(state, procedures = {}) { | ||
return toObservable(Object.assign({}, state, { | ||
@@ -95,4 +99,7 @@ procedures | ||
// (state: XenServiceInstance) => Observable<(action: FSA) => Observable<FSA>> | ||
function createDispatch(state, dispatchCreator) { | ||
return toObservable((dispatchCreator || defaultDispatch)(state)) | ||
function createDispatch( | ||
state, | ||
dispatchCreator = defaultDispatch | ||
) { | ||
return toObservable((dispatchCreator)(state)) | ||
.map(dispatch => Object.assign({}, state, { dispatch })); | ||
@@ -99,0 +106,0 @@ } |
@@ -5,9 +5,12 @@ const { Observable } = require('rxjs/Observable'); | ||
function toObservable(connection) { | ||
if (connection instanceof Promise) { | ||
return Observable.fromPromise(connection); | ||
} else if (connection instanceof Observable) { | ||
return connection; | ||
function toObservable(anything) { | ||
if ( | ||
typeof anything === 'object' && | ||
typeof anything.then === 'function' | ||
) { | ||
return Observable.fromPromise(anything); | ||
} else if (anything instanceof Observable) { | ||
return anything; | ||
} else { | ||
return Observable.of(connection); | ||
return Observable.of(anything); | ||
} | ||
@@ -34,3 +37,3 @@ } | ||
.then(response => response.json()) | ||
.catch(error => { | ||
.catch(() => { | ||
/* eslint no-debugger: 1 */ | ||
@@ -43,6 +46,14 @@ // !TODO: add call toErrorAction | ||
function devLog(...args) { | ||
/* eslint-disable no-console */ | ||
if (process.env.NODE_ENV === 'development') { | ||
console.log(...args); | ||
} | ||
} | ||
module.exports = { | ||
toResponseAction, | ||
toObservable, | ||
fetchAction | ||
fetchAction, | ||
devLog | ||
}; |
@@ -18,3 +18,3 @@ /* eslint-env mocha */ | ||
connections: { | ||
test: () => ({ something: sinon.spy() }), | ||
test: () => ({ something() {}}), | ||
testPromise: () => Promise.resolve({ something() {}}), | ||
@@ -34,2 +34,20 @@ testObservable: () => Observable.of({ something() {}}) | ||
it('should create a valid empty service', done => { | ||
const testService = createService({ | ||
name: 'Empty', | ||
connections: {}, | ||
models: {}, | ||
procedures: {}, | ||
options: {} | ||
}); | ||
testService.subscribe(service => { | ||
expect(service.name).to.equal('Empty'); | ||
expect(service.connections).to.eql({}); | ||
expect(service.models).to.eql({}); | ||
expect(service.procedures).to.eql({}); | ||
expect(service.dispatch).to.be.a('function'); | ||
done(); | ||
}); | ||
}); | ||
it('should create a valid service object', done => { | ||
@@ -36,0 +54,0 @@ const testService = createService(testConfig); |
@@ -6,1 +6,2 @@ /* eslint-env mocha */ | ||
xdescribe('fetchAction', () => {}); | ||
xdescribe('devLog', () => {}); |
Sorry, the diff of this file is not supported yet
56379
1623
3
Updatedrxjs@^5.0.1