substance
Version:
Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing system. It is developed to power our online editing platform [Substance](http://substance.io).
47 lines (40 loc) • 999 B
JavaScript
import { spy } from 'substance-test'
import { Component } from 'substance'
export default class TestComponent extends Component {
constructor (...args) {
super(...args)
this._enableSpies()
}
_enableSpies () {
['didMount', 'didUpdate', 'dispose', 'shouldRerender', 'render'].forEach((name) => {
spy(this, name)
})
}
_disableSpies () {
['didMount', 'didUpdate', 'dispose', 'shouldRerender', 'render'].forEach((name) => {
this[name].restore()
})
}
static create (renderFunc, props) {
const comp = new TestComponent(null, props)
if (renderFunc) {
comp.render = renderFunc
}
if (props) {
comp.setProps(props)
} else {
comp.rerender()
}
return comp
}
static get Simple () { return SimpleComponent }
}
class SimpleComponent extends TestComponent {
render ($$) {
var el = $$('div').addClass('simple')
if (this.props.children) {
el.append(this.props.children)
}
return el
}
}