74 lines
1.6 KiB
JavaScript
74 lines
1.6 KiB
JavaScript
|
import {__, component} from 'riot'
|
||
|
import {expect} from 'chai'
|
||
|
import hotReload from '../'
|
||
|
import jsDOMGlobal from 'jsdom-global'
|
||
|
|
||
|
describe('core', () => {
|
||
|
before(() => {
|
||
|
jsDOMGlobal()
|
||
|
})
|
||
|
|
||
|
it('riot.reload keeps the tags state', (done) => {
|
||
|
const api = {
|
||
|
name: 'timer',
|
||
|
exports: {
|
||
|
state: {
|
||
|
count: 0
|
||
|
},
|
||
|
onBeforeMount() {
|
||
|
this.interval = setInterval(() => {
|
||
|
this.state.count ++
|
||
|
}, 100)
|
||
|
},
|
||
|
onUnmounted() {
|
||
|
clearInterval(this.interval)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const div = document.createElement('div')
|
||
|
document.body.appendChild(div)
|
||
|
|
||
|
component(api)(div)
|
||
|
|
||
|
setTimeout(function() {
|
||
|
const el = hotReload(api)[0]
|
||
|
|
||
|
expect(el.state.count).to.be.equal(2)
|
||
|
el.unmount()
|
||
|
done()
|
||
|
}, 210)
|
||
|
})
|
||
|
|
||
|
it('riot.reload will reload the css properly', () => {
|
||
|
const api = {
|
||
|
name: 'css-demo',
|
||
|
css: ':host { color: rgb(255, 255, 255); }'
|
||
|
}
|
||
|
|
||
|
const div = document.createElement('div')
|
||
|
document.body.appendChild(div)
|
||
|
|
||
|
component(api)(div)
|
||
|
|
||
|
expect(__.cssManager.CSS_BY_NAME.get('css-demo')).to.match(/rgb\(255, 255, 255\)/)
|
||
|
|
||
|
hotReload({
|
||
|
name: 'css-demo',
|
||
|
css: ':host { color: rgb(0, 0, 0); }'
|
||
|
})
|
||
|
|
||
|
expect(__.cssManager.CSS_BY_NAME.get('css-demo')).to.match(/rgb\(0, 0, 0\)/)
|
||
|
})
|
||
|
|
||
|
it('components not compatible with riot will be ignored', () => {
|
||
|
const div = document.createElement('div')
|
||
|
document.body.appendChild(div)
|
||
|
|
||
|
div.setAttribute('is', 'not-riot')
|
||
|
|
||
|
expect(() => hotReload({
|
||
|
name: 'not-riot'
|
||
|
})).to.not.throw()
|
||
|
})
|
||
|
})
|