Call new disable remote method from model class.
This commit is contained in:
parent
92ed2138fb
commit
0ab33a82d4
19
lib/model.js
19
lib/model.js
|
@ -15,6 +15,8 @@ var SharedClass = require('strong-remoting').SharedClass;
|
||||||
var extend = require('util')._extend;
|
var extend = require('util')._extend;
|
||||||
var format = require('util').format;
|
var format = require('util').format;
|
||||||
|
|
||||||
|
var deprecated = require('depd')('loopback');
|
||||||
|
|
||||||
module.exports = function(registry) {
|
module.exports = function(registry) {
|
||||||
/**
|
/**
|
||||||
* The base class for **all models**.
|
* The base class for **all models**.
|
||||||
|
@ -436,7 +438,22 @@ module.exports = function(registry) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Model.disableRemoteMethod = function(name, isStatic) {
|
Model.disableRemoteMethod = function(name, isStatic) {
|
||||||
this.sharedClass.disableMethod(name, isStatic || false);
|
deprecated('Model.disableRemoteMethod is deprecated. ' +
|
||||||
|
'Use Model.disableRemoteMethodByName instead.');
|
||||||
|
var key = this.sharedClass.getKeyFromMethodNameAndTarget(name, isStatic);
|
||||||
|
this.sharedClass.disableMethodByName(key);
|
||||||
|
this.emit('remoteMethodDisabled', this.sharedClass, key);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable remote invocation for the method with the given name.
|
||||||
|
*
|
||||||
|
* @param {String} name The name of the method (include "prototype." if the method is defined on the prototype).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
Model.disableRemoteMethodByName = function(name) {
|
||||||
|
this.sharedClass.disableMethodByName(name);
|
||||||
this.emit('remoteMethodDisabled', this.sharedClass, name);
|
this.emit('remoteMethodDisabled', this.sharedClass, name);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -672,7 +672,7 @@ describe('app', function() {
|
||||||
disabledRemoteMethod = methodName;
|
disabledRemoteMethod = methodName;
|
||||||
});
|
});
|
||||||
app.model(Color);
|
app.model(Color);
|
||||||
app.models.Color.disableRemoteMethod('findOne');
|
app.models.Color.disableRemoteMethodByName('findOne');
|
||||||
expect(remoteMethodDisabledClass).to.exist;
|
expect(remoteMethodDisabledClass).to.exist;
|
||||||
expect(remoteMethodDisabledClass).to.eql(Color.sharedClass);
|
expect(remoteMethodDisabledClass).to.eql(Color.sharedClass);
|
||||||
expect(disabledRemoteMethod).to.exist;
|
expect(disabledRemoteMethod).to.exist;
|
||||||
|
|
|
@ -698,7 +698,21 @@ describe.onServer('Remote Methods', function() {
|
||||||
var callbackSpy = require('sinon').spy();
|
var callbackSpy = require('sinon').spy();
|
||||||
var TestModel = app.models.TestModelForDisablingRemoteMethod;
|
var TestModel = app.models.TestModelForDisablingRemoteMethod;
|
||||||
TestModel.on('remoteMethodDisabled', callbackSpy);
|
TestModel.on('remoteMethodDisabled', callbackSpy);
|
||||||
TestModel.disableRemoteMethod('findOne');
|
TestModel.disableRemoteMethod('findOne', true);
|
||||||
|
|
||||||
|
expect(callbackSpy).to.have.been.calledWith(TestModel.sharedClass, 'findOne');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('emits a `remoteMethodDisabled` event from disableRemoteMethodByName', function() {
|
||||||
|
var app = loopback();
|
||||||
|
var model = PersistedModel.extend('TestModelForDisablingRemoteMethod');
|
||||||
|
app.dataSource('db', { connector: 'memory' });
|
||||||
|
app.model(model, { dataSource: 'db' });
|
||||||
|
|
||||||
|
var callbackSpy = require('sinon').spy();
|
||||||
|
var TestModel = app.models.TestModelForDisablingRemoteMethod;
|
||||||
|
TestModel.on('remoteMethodDisabled', callbackSpy);
|
||||||
|
TestModel.disableRemoteMethodByName('findOne');
|
||||||
|
|
||||||
expect(callbackSpy).to.have.been.calledWith(TestModel.sharedClass, 'findOne');
|
expect(callbackSpy).to.have.been.calledWith(TestModel.sharedClass, 'findOne');
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue