Fix newsletter editor to only save properties it changes
This commit is contained in:
@ -11,7 +11,7 @@ define([
|
|||||||
// Does not hold newsletter content nor newsletter styles, those are
|
// Does not hold newsletter content nor newsletter styles, those are
|
||||||
// handled by other components.
|
// handled by other components.
|
||||||
Module.NewsletterModel = SuperModel.extend({
|
Module.NewsletterModel = SuperModel.extend({
|
||||||
stale: ['body', 'created_at', 'deleted_at', 'updated_at'],
|
whitelisted: ['id', 'subject', 'preheader'],
|
||||||
initialize: function(options) {
|
initialize: function(options) {
|
||||||
this.on('change', function() {
|
this.on('change', function() {
|
||||||
App.getChannel().trigger('autoSave');
|
App.getChannel().trigger('autoSave');
|
||||||
@ -19,7 +19,7 @@ define([
|
|||||||
},
|
},
|
||||||
toJSON: function() {
|
toJSON: function() {
|
||||||
// Remove stale attributes from resulting JSON object
|
// Remove stale attributes from resulting JSON object
|
||||||
return _.omit(SuperModel.prototype.toJSON.call(this), this.stale);
|
return _.pick(SuperModel.prototype.toJSON.call(this), this.whitelisted);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ define([
|
|||||||
data2: 'data2Value',
|
data2: 'data2Value',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
someField: 'someValue'
|
subject: 'my test subject'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -28,13 +28,32 @@ define([
|
|||||||
global.stubChannel(EditorApplication, {
|
global.stubChannel(EditorApplication, {
|
||||||
trigger: mock,
|
trigger: mock,
|
||||||
});
|
});
|
||||||
model.set('someField', 'anotherValue');
|
model.set('subject', 'another test subject');
|
||||||
mock.verify();
|
mock.verify();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does not include styles and content attributes in its JSON', function() {
|
it('does not include styles and content properties in its JSON', function() {
|
||||||
var json = model.toJSON();
|
var json = model.toJSON();
|
||||||
expect(json).to.deep.equal({someField: 'someValue'});
|
expect(json).to.deep.equal({subject: 'my test subject'});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('toJSON()', function() {
|
||||||
|
it('will only contain properties modifyable by the editor', function() {
|
||||||
|
var model = new (ContentComponent.NewsletterModel)({
|
||||||
|
id: 19,
|
||||||
|
subject: 'some subject',
|
||||||
|
preheader: 'some preheader',
|
||||||
|
segments: [1, 2, 3],
|
||||||
|
modified_at: '2000-01-01 12:01:02',
|
||||||
|
someField: 'someValue'
|
||||||
|
});
|
||||||
|
|
||||||
|
var json = model.toJSON();
|
||||||
|
expect(json.id).to.equal(19);
|
||||||
|
expect(json.subject).to.equal('some subject');
|
||||||
|
expect(json.preheader).to.equal('some preheader');
|
||||||
|
expect(json).to.not.include.keys('segments', 'modified_at', 'someField');
|
||||||
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user