Fix newsletter editor to only save properties it changes

This commit is contained in:
Tautvidas Sipavičius
2016-10-20 13:37:32 +03:00
parent 42877236c8
commit c3a78b1ea3
2 changed files with 25 additions and 6 deletions

View File

@ -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);
}, },
}); });

View File

@ -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');
})
}); });
}); });