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'),
|
errors = require('../errors'),
|
||||||
Promise = require('bluebird'),
|
Promise = require('bluebird'),
|
||||||
validation = require('../data/validation'),
|
validation = require('../data/validation'),
|
||||||
|
events = require('../events'),
|
||||||
internal = {context: {internal: true}},
|
internal = {context: {internal: true}},
|
||||||
|
|
||||||
defaultSettings;
|
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() {
|
validate: function validate() {
|
||||||
var self = this,
|
var self = this,
|
||||||
setting = this.toJSON();
|
setting = this.toJSON();
|
||||||
|
|
|
@ -2,13 +2,18 @@
|
||||||
/*jshint expr:true*/
|
/*jshint expr:true*/
|
||||||
var testUtils = require('../../utils'),
|
var testUtils = require('../../utils'),
|
||||||
should = require('should'),
|
should = require('should'),
|
||||||
|
sinon = require('sinon'),
|
||||||
|
|
||||||
// Stuff we are testing
|
// Stuff we are testing
|
||||||
SettingsModel = require('../../../server/models/settings').Settings,
|
SettingsModel = require('../../../server/models/settings').Settings,
|
||||||
config = require('../../../server/config'),
|
config = require('../../../server/config'),
|
||||||
|
events = require('../../../server/events'),
|
||||||
|
sandbox = sinon.sandbox.create(),
|
||||||
context = testUtils.context.admin;
|
context = testUtils.context.admin;
|
||||||
|
|
||||||
describe('Settings Model', function () {
|
describe('Settings Model', function () {
|
||||||
|
var eventSpy;
|
||||||
|
|
||||||
// Keep the DB clean
|
// Keep the DB clean
|
||||||
before(testUtils.teardown);
|
before(testUtils.teardown);
|
||||||
afterEach(testUtils.teardown);
|
afterEach(testUtils.teardown);
|
||||||
|
@ -18,6 +23,14 @@ describe('Settings Model', function () {
|
||||||
should.exist(SettingsModel);
|
should.exist(SettingsModel);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
sandbox.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
eventSpy = sandbox.spy(events, 'emit');
|
||||||
|
});
|
||||||
|
|
||||||
describe('API', function () {
|
describe('API', function () {
|
||||||
it('can findAll', function (done) {
|
it('can findAll', function (done) {
|
||||||
SettingsModel.findAll().then(function (results) {
|
SettingsModel.findAll().then(function (results) {
|
||||||
|
@ -67,6 +80,9 @@ describe('Settings Model', function () {
|
||||||
edited.attributes.key.should.equal('description');
|
edited.attributes.key.should.equal('description');
|
||||||
edited.attributes.value.should.equal('new value');
|
edited.attributes.value.should.equal('new value');
|
||||||
|
|
||||||
|
eventSpy.calledOnce.should.be.true;
|
||||||
|
eventSpy.calledWith('settings.edited').should.be.true;
|
||||||
|
|
||||||
done();
|
done();
|
||||||
}).catch(done);
|
}).catch(done);
|
||||||
});
|
});
|
||||||
|
@ -100,6 +116,9 @@ describe('Settings Model', function () {
|
||||||
editedModel.attributes.key.should.equal(model2.key);
|
editedModel.attributes.key.should.equal(model2.key);
|
||||||
editedModel.attributes.value.should.equal(model2.value);
|
editedModel.attributes.value.should.equal(model2.value);
|
||||||
|
|
||||||
|
eventSpy.calledTwice.should.be.true;
|
||||||
|
eventSpy.calledWith('settings.edited').should.be.true;
|
||||||
|
|
||||||
done();
|
done();
|
||||||
}).catch(done);
|
}).catch(done);
|
||||||
});
|
});
|
||||||
|
@ -117,6 +136,9 @@ describe('Settings Model', function () {
|
||||||
createdSetting.attributes.value.should.equal(newSetting.value, 'value is correct');
|
createdSetting.attributes.value.should.equal(newSetting.value, 'value is correct');
|
||||||
createdSetting.attributes.type.should.equal('core');
|
createdSetting.attributes.type.should.equal('core');
|
||||||
|
|
||||||
|
eventSpy.calledOnce.should.be.true;
|
||||||
|
eventSpy.calledWith('settings.added').should.be.true;
|
||||||
|
|
||||||
done();
|
done();
|
||||||
}).catch(done);
|
}).catch(done);
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,7 +9,7 @@ var testUtils = require('../../utils'),
|
||||||
// Stuff we are testing
|
// Stuff we are testing
|
||||||
ModelsTag = require('../../../server/models/tag'),
|
ModelsTag = require('../../../server/models/tag'),
|
||||||
ModelsPost = require('../../../server/models/post'),
|
ModelsPost = require('../../../server/models/post'),
|
||||||
events = require('../../../server/events'),
|
events = require('../../../server/events'),
|
||||||
context = testUtils.context.admin,
|
context = testUtils.context.admin,
|
||||||
TagModel,
|
TagModel,
|
||||||
PostModel,
|
PostModel,
|
||||||
|
|
Loading…
Add table
Reference in a new issue