mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
73 lines
2.2 KiB
JavaScript
73 lines
2.2 KiB
JavaScript
var expect = require('chai').expect;
|
|
|
|
module.exports = function(helpers) {
|
|
var widgetLifecycleEvents = {};
|
|
|
|
window.recordWidgetLifecycleEvent = function(key, eventType) {
|
|
var events = widgetLifecycleEvents[key] || (widgetLifecycleEvents[key] = []);
|
|
events.push(eventType);
|
|
};
|
|
|
|
var widget = helpers.mount(require('./index'), {
|
|
name: 'Frank',
|
|
messageCount: 10
|
|
});
|
|
|
|
var targetEl = helpers.targetEl;
|
|
|
|
expect(targetEl.innerHTML).to.contain('Hello Frank!');
|
|
expect(targetEl.innerHTML).to.contain('10');
|
|
|
|
expect(widgetLifecycleEvents[widget.getWidget('nestedStateful').id]).to.deep.equal([
|
|
'init',
|
|
'onRender:firstRender']);
|
|
|
|
require('marko/widgets').batchUpdate(function() {
|
|
// NOTE: messageCount has an update handler
|
|
widget.setState('messageCount', 999);
|
|
expect(targetEl.innerHTML).to.contain('Hello Frank!');
|
|
expect(targetEl.innerHTML).to.contain('10');
|
|
});
|
|
|
|
expect(targetEl.innerHTML).to.contain('Hello Frank!');
|
|
expect(targetEl.innerHTML).to.contain('999');
|
|
|
|
expect(widgetLifecycleEvents[widget.getWidget('nestedStateful').id]).to.deep.equal([
|
|
'init',
|
|
'onRender:firstRender',
|
|
'onBeforeUpdate',
|
|
'onUpdate',
|
|
'onRender']);
|
|
|
|
require('marko/widgets').batchUpdate(function() {
|
|
// NOTE: name does *not* have an update handler
|
|
widget.setState('name', 'Jane');
|
|
expect(targetEl.innerHTML).to.contain('Hello Frank!');
|
|
expect(targetEl.innerHTML).to.contain('999');
|
|
});
|
|
|
|
expect(targetEl.innerHTML).to.contain('Hello Jane!');
|
|
expect(targetEl.innerHTML).to.contain('999');
|
|
|
|
expect(widgetLifecycleEvents[widget.getWidget('nestedStateful').id]).to.deep.equal([
|
|
'init',
|
|
'onRender:firstRender',
|
|
'onBeforeUpdate',
|
|
'onUpdate',
|
|
'onRender']);
|
|
|
|
var nestedStateful = widget.getWidget('nestedStateful');
|
|
|
|
widget.destroy();
|
|
|
|
expect(widgetLifecycleEvents[nestedStateful.id]).to.deep.equal([
|
|
'init',
|
|
'onRender:firstRender',
|
|
'onBeforeUpdate',
|
|
'onUpdate',
|
|
'onRender',
|
|
'onBeforeDestroy',
|
|
'onDestroy']);
|
|
|
|
window.recordWidgetLifecycleEvent = {};
|
|
}; |