mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-11 02:12:21 -05:00
Merge pull request #5431 from kowsheek/5370-settings-model-events
Add events to settings model
This commit is contained in:
commit
3061247a7e
3 changed files with 42 additions and 1 deletions
|
@ -5,6 +5,7 @@ var Settings,
|
|||
errors = require('../errors'),
|
||||
Promise = require('bluebird'),
|
||||
validation = require('../data/validation'),
|
||||
events = require('../events'),
|
||||
internal = {context: {internal: true}},
|
||||
|
||||
defaultSettings;
|
||||
|
@ -49,6 +50,24 @@ Settings = ghostBookshelf.Model.extend({
|
|||
};
|
||||
},
|
||||
|
||||
emitChange: function emitChange(event) {
|
||||
events.emit('settings' + '.' + event, this);
|
||||
},
|
||||
|
||||
initialize: function initialize() {
|
||||
ghostBookshelf.Model.prototype.initialize.apply(this, arguments);
|
||||
|
||||
this.on('created', function (model) {
|
||||
model.emitChange('added');
|
||||
});
|
||||
this.on('updated', function (model) {
|
||||
model.emitChange('edited');
|
||||
});
|
||||
this.on('destroyed', function (model) {
|
||||
model.emitChange('deleted');
|
||||
});
|
||||
},
|
||||
|
||||
validate: function validate() {
|
||||
var self = this,
|
||||
setting = this.toJSON();
|
||||
|
|
|
@ -2,13 +2,18 @@
|
|||
/*jshint expr:true*/
|
||||
var testUtils = require('../../utils'),
|
||||
should = require('should'),
|
||||
sinon = require('sinon'),
|
||||
|
||||
// Stuff we are testing
|
||||
SettingsModel = require('../../../server/models/settings').Settings,
|
||||
config = require('../../../server/config'),
|
||||
events = require('../../../server/events'),
|
||||
sandbox = sinon.sandbox.create(),
|
||||
context = testUtils.context.admin;
|
||||
|
||||
describe('Settings Model', function () {
|
||||
var eventSpy;
|
||||
|
||||
// Keep the DB clean
|
||||
before(testUtils.teardown);
|
||||
afterEach(testUtils.teardown);
|
||||
|
@ -18,6 +23,14 @@ describe('Settings Model', function () {
|
|||
should.exist(SettingsModel);
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
sandbox.restore();
|
||||
});
|
||||
|
||||
beforeEach(function () {
|
||||
eventSpy = sandbox.spy(events, 'emit');
|
||||
});
|
||||
|
||||
describe('API', function () {
|
||||
it('can findAll', function (done) {
|
||||
SettingsModel.findAll().then(function (results) {
|
||||
|
@ -67,6 +80,9 @@ describe('Settings Model', function () {
|
|||
edited.attributes.key.should.equal('description');
|
||||
edited.attributes.value.should.equal('new value');
|
||||
|
||||
eventSpy.calledOnce.should.be.true;
|
||||
eventSpy.calledWith('settings.edited').should.be.true;
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
@ -100,6 +116,9 @@ describe('Settings Model', function () {
|
|||
editedModel.attributes.key.should.equal(model2.key);
|
||||
editedModel.attributes.value.should.equal(model2.value);
|
||||
|
||||
eventSpy.calledTwice.should.be.true;
|
||||
eventSpy.calledWith('settings.edited').should.be.true;
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
@ -117,6 +136,9 @@ describe('Settings Model', function () {
|
|||
createdSetting.attributes.value.should.equal(newSetting.value, 'value is correct');
|
||||
createdSetting.attributes.type.should.equal('core');
|
||||
|
||||
eventSpy.calledOnce.should.be.true;
|
||||
eventSpy.calledWith('settings.added').should.be.true;
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
|
|
@ -9,7 +9,7 @@ var testUtils = require('../../utils'),
|
|||
// Stuff we are testing
|
||||
ModelsTag = require('../../../server/models/tag'),
|
||||
ModelsPost = require('../../../server/models/post'),
|
||||
events = require('../../../server/events'),
|
||||
events = require('../../../server/events'),
|
||||
context = testUtils.context.admin,
|
||||
TagModel,
|
||||
PostModel,
|
||||
|
|
Loading…
Add table
Reference in a new issue