-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrenderComponent.spec.js
68 lines (54 loc) · 1.38 KB
/
renderComponent.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
'use strict'
const { renderComponent } = require('../src')
const { expect } = require('chai')
const sinon = require('sinon')
describe('renderComponent' , () => {
let $el
afterEach(() => {
$el.dispose()
})
it('works with elements', () => {
$el = renderComponent({
template: '<span data-bind="text: greeting"></span>',
viewModel() { this.greeting = 'Hello Component' }
})
expect($el).to.exist
expect($el.html()).contains('Hello Component')
})
it('works with text nodes', () => {
$el = renderComponent({
template: `
Hello Component
`
})
expect($el).to.exist
expect($el.html()).contains('Hello Component')
})
it('should clean up after itself in the case of failure', () => {
try {
renderComponent({ template: '<div data-bind="text: iDontExist">' })
} catch (e) {
// do nothing
}
$el = renderComponent({
template: `
Hello Component
`
})
expect($el).to.exist
expect($el.html()).contains('Hello Component')
})
})
describe('renderComponent', () => {
describe('#dispose', () => {
const dispose = sinon.spy()
it('calls the dispose callback', () => {
const $el = renderComponent({
template: '<span></span>',
viewModel() { this.dispose = dispose }
})
$el.dispose()
expect(dispose.called).to.be.true
})
})
})