Hanks
7 years ago
committed by
Evan You
1 changed files with 305 additions and 0 deletions
@ -0,0 +1,305 @@ |
|||
import { |
|||
compileAndStringify, |
|||
prepareRuntime, |
|||
resetRuntime, |
|||
createInstance |
|||
} from '../../helpers/index' |
|||
|
|||
function compileSnippet (runtime, snippet) { |
|||
const { render, staticRenderFns } = compileAndStringify(`<div>${snippet}</div>`) |
|||
const instance = createInstance(runtime, ` |
|||
new Vue({ |
|||
render: ${render}, |
|||
staticRenderFns: ${staticRenderFns}, |
|||
el: 'body' |
|||
}) |
|||
`)
|
|||
const result = instance.getRealRoot().children[0] |
|||
return result |
|||
} |
|||
|
|||
describe('richtext component', () => { |
|||
let runtime |
|||
|
|||
beforeAll(() => { |
|||
runtime = prepareRuntime() |
|||
}) |
|||
|
|||
afterAll(() => { |
|||
resetRuntime() |
|||
runtime = null |
|||
}) |
|||
|
|||
it('with no child', () => { |
|||
// pending('work in progress')
|
|||
expect(compileSnippet(runtime, ` |
|||
<richtext></richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext' |
|||
}) |
|||
}) |
|||
|
|||
it('with single text node', () => { |
|||
// pending('work in progress')
|
|||
expect(compileSnippet(runtime, ` |
|||
<richtext>single</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'span', |
|||
attr: { |
|||
value: 'single' |
|||
} |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
|
|||
describe('span', () => { |
|||
// pending('work in progress')
|
|||
|
|||
it('single node', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<span>single</span> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'span', |
|||
attr: { |
|||
value: 'single' |
|||
} |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
|
|||
it('multiple node', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<span>AAA</span> |
|||
<span>BBB</span> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'span', |
|||
attr: { value: 'AAA' } |
|||
}, { |
|||
type: 'span', |
|||
attr: { value: 'BBB' } |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
|
|||
it('with raw text', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
AAA |
|||
<span>BBB</span>CCC |
|||
<span>DDD</span> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'span', |
|||
attr: { value: 'AAA' } |
|||
}, { |
|||
type: 'span', |
|||
attr: { value: 'BBB' } |
|||
}, { |
|||
type: 'span', |
|||
attr: { value: 'CCC' } |
|||
}, { |
|||
type: 'span', |
|||
attr: { value: 'DDD' } |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
}) |
|||
|
|||
describe('a', () => { |
|||
// pending('work in progress')
|
|||
|
|||
it('single node', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<a href="http://whatever.com"></a> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'a', |
|||
attr: { href: 'http://whatever.com' } |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
|
|||
it('multiple node', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<a href="http://a.whatever.com"></a> |
|||
<a href="http://b.whatever.com"></a> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'a', |
|||
attr: { href: 'http://a.whatever.com' } |
|||
}, { |
|||
type: 'a', |
|||
attr: { href: 'http://b.whatever.com' } |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
}) |
|||
|
|||
describe('image', () => { |
|||
pending('work in progress') |
|||
|
|||
it('single node', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<image src="path/to/profile.png"></image> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'image', |
|||
attr: { src: 'path/to/profile.png' } |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
|
|||
it('multiple node', () => { |
|||
// pending('work in progress')
|
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<image src="path/to/A.png"></image> |
|||
<image src="path/to/B.png"></image> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'image', |
|||
attr: { src: 'path/to/A.png' } |
|||
}, { |
|||
type: 'image', |
|||
attr: { src: 'path/to/B.png' } |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
|
|||
it('with width and height', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<image |
|||
style="width:150px;height:150px;" |
|||
src="path/to/profile.png"> |
|||
</image> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'image', |
|||
style: { width: '150px', height: '150px' }, |
|||
attr: { src: 'path/to/profile.png' } |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
}) |
|||
|
|||
describe('nested', () => { |
|||
pending('work in progress') |
|||
|
|||
it('span', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<span>AAA |
|||
<span> |
|||
<span>BBB</span> |
|||
<span><span>CCC</span>DDD</span> |
|||
</span> |
|||
</span> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'span', |
|||
children: [{ |
|||
type: 'span', |
|||
attr: { value: 'AAA' } |
|||
}, { |
|||
type: 'span', |
|||
children: [{ |
|||
type: 'span', |
|||
attr: { value: 'BBB' } |
|||
}, { |
|||
type: 'span', |
|||
children: [{ |
|||
type: 'span', |
|||
attr: { value: 'CCC' } |
|||
}, { |
|||
type: 'span', |
|||
attr: { value: 'DDD' } |
|||
}] |
|||
}] |
|||
}] |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
|
|||
it('image and a', () => { |
|||
expect(compileSnippet(runtime, ` |
|||
<richtext> |
|||
<span>title</span> |
|||
<a href="http://remote.com/xx.js"> |
|||
<span>name</span> |
|||
<image src="path/to/yy.gif"></image> |
|||
</a> |
|||
</richtext> |
|||
`)).toEqual({
|
|||
type: 'richtext', |
|||
attr: { |
|||
value: [{ |
|||
type: 'span', |
|||
attr: { value: 'title' } |
|||
}, { |
|||
type: 'a', |
|||
attr: { href: 'http://remote.com/xx.js' }, |
|||
children: [{ |
|||
type: 'span', |
|||
attr: { value: 'name' } |
|||
}, { |
|||
type: 'image', |
|||
attr: { src: 'path/to/yy.gif' } |
|||
}] |
|||
}] |
|||
} |
|||
}) |
|||
}) |
|||
}) |
|||
|
|||
describe('with styles', () => { |
|||
pending('work in progress') |
|||
}) |
|||
}) |
Loading…
Reference in new issue