editor: Update defaults in social block and use stored defaults for new social block

This commit is contained in:
Rostislav Wolny
2018-03-12 15:19:36 +01:00
parent 1df25aef76
commit f6374d0602
2 changed files with 26 additions and 24 deletions

View File

@@ -69,6 +69,7 @@ define([
initialize: function () { initialize: function () {
this.get('icons').on('add remove change', this._iconsChanged, this); this.get('icons').on('add remove change', this._iconsChanged, this);
this.on('change:iconSet', this.changeIconSet, this); this.on('change:iconSet', this.changeIconSet, this);
this.on('change', this._updateDefaults, this);
}, },
getIconSet: function () { getIconSet: function () {
return App.getAvailableStyles().get('socialIconSets').get(this.get('iconSet')); return App.getAvailableStyles().get('socialIconSets').get(this.get('iconSet'));
@@ -80,6 +81,7 @@ define([
}); });
}, },
_iconsChanged: function () { _iconsChanged: function () {
this._updateDefaults();
App.getChannel().trigger('autoSave'); App.getChannel().trigger('autoSave');
} }
}); });
@@ -270,30 +272,7 @@ define([
DraggableBehavior: { DraggableBehavior: {
cloneOriginal: true, cloneOriginal: true,
drop: function () { drop: function () {
return new Module.SocialBlockModel({ return new Module.SocialBlockModel();
type: 'social',
iconSet: 'default',
icons: [
{
type: 'socialIcon',
iconType: 'facebook',
link: 'http://www.facebook.com',
image: App.getAvailableStyles().get('socialIconSets.default.facebook'),
height: '32px',
width: '32px',
text: 'Facebook'
},
{
type: 'socialIcon',
iconType: 'twitter',
link: 'http://www.twitter.com',
image: App.getAvailableStyles().get('socialIconSets.default.twitter'),
height: '32px',
width: '32px',
text: 'Twitter'
}
]
}, { parse: true });
} }
} }
} }

View File

@@ -9,10 +9,17 @@ define([
describe('Social', function () { describe('Social', function () {
describe('block model', function () { describe('block model', function () {
var model; var model;
var sandbox;
beforeEach(function () { beforeEach(function () {
global.stubChannel(EditorApplication); global.stubChannel(EditorApplication);
global.stubConfig(EditorApplication); global.stubConfig(EditorApplication);
model = new (SocialBlock.SocialBlockModel)(); model = new (SocialBlock.SocialBlockModel)();
sandbox = sinon.sandbox.create();
});
afterEach(function () {
sandbox.restore();
}); });
it('has a social type', function () { it('has a social type', function () {
@@ -39,6 +46,22 @@ define([
expect(model.get('iconSet')).to.equal('customConfigIconSet'); expect(model.get('iconSet')).to.equal('customConfigIconSet');
}); });
it('updates blockDefaults.social when changed', function () {
var stub = sandbox.stub(EditorApplication.getConfig(), 'set');
model.trigger('change');
expect(stub.callCount).to.equal(1);
expect(stub.getCall(0).args[0]).to.equal('blockDefaults.social');
expect(stub.getCall(0).args[1]).to.deep.equal(model.toJSON());
});
it('updates blockDefaults.social when icons changed', function () {
var stub = sandbox.stub(EditorApplication.getConfig(), 'set');
model.get('icons').trigger('change');
expect(stub.callCount).to.equal(1);
expect(stub.getCall(0).args[0]).to.equal('blockDefaults.social');
expect(stub.getCall(0).args[1]).to.deep.equal(model.toJSON());
});
}); });
describe('icon model', function () { describe('icon model', function () {