|
|
|
@ -5,28 +5,35 @@ module.exports = { |
|
|
|
run() { |
|
|
|
describe('E2E tests', () => { |
|
|
|
|
|
|
|
var instClassTagViewer = ctx => { |
|
|
|
var $clm; |
|
|
|
var clm = ctx.gjs.editor.get('SelectorManager'); |
|
|
|
if(clm){ |
|
|
|
$clm = new ClassTagsView({ |
|
|
|
var fixtures; |
|
|
|
var components; |
|
|
|
var tagEl; |
|
|
|
var gjs; |
|
|
|
|
|
|
|
var instClassTagViewer = (gjs, fixtures) => { |
|
|
|
var tagEl; |
|
|
|
var clm = gjs.editor.get('SelectorManager'); |
|
|
|
|
|
|
|
if (clm) { |
|
|
|
tagEl = new ClassTagsView({ |
|
|
|
collection: new Selectors([]), |
|
|
|
config: { |
|
|
|
em: ctx.gjs.editor |
|
|
|
}, |
|
|
|
config: {em: gjs.editor} |
|
|
|
}).render(); |
|
|
|
ctx.$fixture.append($clm.el); |
|
|
|
fixtures.appendChild(tagEl.el); |
|
|
|
} |
|
|
|
return $clm; |
|
|
|
}; |
|
|
|
|
|
|
|
return tagEl; |
|
|
|
}; |
|
|
|
/* |
|
|
|
before(function () { |
|
|
|
this.$fixtures = $("#fixtures"); |
|
|
|
this.$fixture = $('<div id="SelectorManager-fixture"></div>'); |
|
|
|
}); |
|
|
|
|
|
|
|
*/ |
|
|
|
beforeEach(function () { |
|
|
|
this.gjs = grapesjs.init({ |
|
|
|
document.body.innerHTML = '<div id="fixtures"><div id="SelectorManager-fixture"></div></div>'; |
|
|
|
fixtures = document.body.firstChild; |
|
|
|
gjs = grapesjs.init({ |
|
|
|
stylePrefix: '', |
|
|
|
storageManager: { autoload: 0, type:'none' }, |
|
|
|
assetManager: { |
|
|
|
@ -34,82 +41,67 @@ module.exports = { |
|
|
|
}, |
|
|
|
container: '#SelectorManager-fixture', |
|
|
|
}); |
|
|
|
this.$fixture.empty().appendTo(this.$fixtures); |
|
|
|
this.gjs.render(); |
|
|
|
}); |
|
|
|
|
|
|
|
afterEach(function () { |
|
|
|
delete this.gjs; |
|
|
|
}); |
|
|
|
|
|
|
|
after(function () { |
|
|
|
this.$fixture.remove(); |
|
|
|
}); |
|
|
|
|
|
|
|
describe('Interaction with Components', () => { |
|
|
|
|
|
|
|
beforeEach(function () { |
|
|
|
this.wrapper = this.gjs.editor.get('DomComponents').getWrapper().get('components'); |
|
|
|
this.$clm = instClassTagViewer(this); |
|
|
|
}); |
|
|
|
|
|
|
|
afterEach(function () { |
|
|
|
delete this.wrapper; |
|
|
|
delete this.$clm; |
|
|
|
components = gjs.editor.get('DomComponents').getWrapper().get('components'); |
|
|
|
tagEl = instClassTagViewer(gjs, fixtures); |
|
|
|
}); |
|
|
|
|
|
|
|
it('Assign correctly new class to component', function() { |
|
|
|
var model = this.wrapper.add({}); |
|
|
|
var model = components.add({}); |
|
|
|
expect(model.get('classes').length).toEqual(0); |
|
|
|
this.gjs.editor.set('selectedComponent', model); |
|
|
|
this.$clm.addNewTag('test'); |
|
|
|
gjs.editor.set('selectedComponent', model); |
|
|
|
tagEl.addNewTag('test'); |
|
|
|
expect(model.get('classes').length).toEqual(1); |
|
|
|
expect(model.get('classes').at(0).get('name')).toEqual('test'); |
|
|
|
}); |
|
|
|
|
|
|
|
it('Classes from components are correctly imported inside main container', function() { |
|
|
|
var model = this.wrapper.add([ |
|
|
|
var model = components.add([ |
|
|
|
{ classes: ['test11', 'test12', 'test13'] }, |
|
|
|
{ classes: ['test11', 'test22', 'test22'] }, |
|
|
|
]); |
|
|
|
expect(this.gjs.editor.get('SelectorManager').getAll().length).toEqual(4); |
|
|
|
expect(gjs.editor.get('SelectorManager').getAll().length).toEqual(4); |
|
|
|
}); |
|
|
|
|
|
|
|
it('Class imported into component is the same model from main container', function() { |
|
|
|
var model = this.wrapper.add({ classes: ['test1'] }); |
|
|
|
var model = components.add({ classes: ['test1'] }); |
|
|
|
var clModel = model.get('classes').at(0); |
|
|
|
var clModel2 = this.gjs.editor.get('SelectorManager').getAll().at(0); |
|
|
|
var clModel2 = gjs.editor.get('SelectorManager').getAll().at(0); |
|
|
|
expect(clModel).toEqual(clModel2); |
|
|
|
}); |
|
|
|
|
|
|
|
it('Can assign only one time the same class on selected component and the class viewer', function() { |
|
|
|
var model = this.wrapper.add({}); |
|
|
|
this.gjs.editor.set('selectedComponent', model); |
|
|
|
this.$clm.addNewTag('test'); |
|
|
|
this.$clm.addNewTag('test'); |
|
|
|
var model = components.add({}); |
|
|
|
gjs.editor.set('selectedComponent', model); |
|
|
|
tagEl.addNewTag('test'); |
|
|
|
tagEl.addNewTag('test'); |
|
|
|
expect(model.get('classes').length).toEqual(1); |
|
|
|
expect(model.get('classes').at(0).get('name')).toEqual('test'); |
|
|
|
expect(this.$clm.collection.length).toEqual(1); |
|
|
|
expect(this.$clm.collection.at(0).get('name')).toEqual('test'); |
|
|
|
expect(tagEl.collection.length).toEqual(1); |
|
|
|
expect(tagEl.collection.at(0).get('name')).toEqual('test'); |
|
|
|
}); |
|
|
|
|
|
|
|
it('Removing from container removes also from selected component', function() { |
|
|
|
var model = this.wrapper.add({}); |
|
|
|
this.gjs.editor.set('selectedComponent', model); |
|
|
|
this.$clm.addNewTag('test'); |
|
|
|
this.$clm.getClasses().find('.tag #close').trigger('click') |
|
|
|
var model = components.add({}); |
|
|
|
gjs.editor.set('selectedComponent', model); |
|
|
|
tagEl.addNewTag('test'); |
|
|
|
tagEl.getClasses().find('.tag #close').trigger('click') |
|
|
|
expect(model.get('classes').length).toEqual(0); |
|
|
|
}); |
|
|
|
|
|
|
|
it("Trigger correctly event on target with new class add", function() { |
|
|
|
var spy = sinon.spy(); |
|
|
|
var model = this.wrapper.add({}); |
|
|
|
this.gjs.editor.set('selectedComponent', model); |
|
|
|
this.$clm.addNewTag('test'); |
|
|
|
this.gjs.editor.on("targetClassAdded", spy); |
|
|
|
this.$clm.addNewTag('test'); |
|
|
|
var model = components.add({}); |
|
|
|
gjs.editor.set('selectedComponent', model); |
|
|
|
tagEl.addNewTag('test'); |
|
|
|
gjs.editor.on("targetClassAdded", spy); |
|
|
|
tagEl.addNewTag('test'); |
|
|
|
expect(spy.called).toEqual(false); |
|
|
|
this.$clm.addNewTag('test2'); |
|
|
|
tagEl.addNewTag('test2'); |
|
|
|
expect(spy.called).toEqual(true); |
|
|
|
}); |
|
|
|
|
|
|
|
|