mirror of https://github.com/curbengh/hexo-yam
test(svg): add unit test
This commit is contained in:
parent
932d36182c
commit
7e1ec95f9a
|
@ -266,3 +266,113 @@ describe('js', () => {
|
||||||
expect(result).toBe(input)
|
expect(result).toBe(input)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('svg', () => {
|
||||||
|
const { svgDefault } = require('../index')
|
||||||
|
const s = require('../lib/filter').minifySvg.bind(hexo)
|
||||||
|
const Svgo = require('svgo')
|
||||||
|
const path = 'foo.svg'
|
||||||
|
const input = '<svg><rect x="1" y="2" width="3" height="4" id="a"/></svg>'
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
hexo.config.minify.svg = Object.assign({}, svgDefault)
|
||||||
|
hexo.route.set(path, input)
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
const routeList = hexo.route.list()
|
||||||
|
routeList.forEach((path) => hexo.route.remove(path))
|
||||||
|
})
|
||||||
|
|
||||||
|
test('default', async () => {
|
||||||
|
await s()
|
||||||
|
const { data } = await new Svgo(hexo.config.minify.svg).optimize(input)
|
||||||
|
|
||||||
|
const output = hexo.route.get(path)
|
||||||
|
let result = ''
|
||||||
|
output.on('data', (chunk) => (result += chunk))
|
||||||
|
output.on('end', () => {
|
||||||
|
expect(result).toBe(data)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
test('disable', async () => {
|
||||||
|
hexo.config.minify.svg.enable = false
|
||||||
|
const result = await s()
|
||||||
|
expect(result).toBeUndefined()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('option', async () => {
|
||||||
|
const customOpt = [{ cleanupIDs: false }]
|
||||||
|
hexo.config.minify.svg.plugins = customOpt
|
||||||
|
await s()
|
||||||
|
const { data } = await new Svgo(hexo.config.minify.svg).optimize(input)
|
||||||
|
|
||||||
|
const output = hexo.route.get(path)
|
||||||
|
let result = ''
|
||||||
|
output.on('data', (chunk) => (result += chunk))
|
||||||
|
output.on('end', () => {
|
||||||
|
expect(result).toBe(data)
|
||||||
|
expect(result).toContain('id="a"')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
test('invalid svg', async () => {
|
||||||
|
const input = '{}'
|
||||||
|
hexo.route.set(path, input)
|
||||||
|
let expected
|
||||||
|
try {
|
||||||
|
await new Svgo(hexo.config.minify.svg).optimize(input)
|
||||||
|
} catch (err) {
|
||||||
|
expected = err
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
await s()
|
||||||
|
} catch (err) {
|
||||||
|
expect(err.message).toContain(expected)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
test('include - exclude *.min.svg by default', async () => {
|
||||||
|
const path = 'foo.min.svg'
|
||||||
|
hexo.route.set(path, input)
|
||||||
|
await s()
|
||||||
|
|
||||||
|
const output = hexo.route.get(path)
|
||||||
|
let result = ''
|
||||||
|
output.on('data', (chunk) => (result += chunk))
|
||||||
|
output.on('end', () => {
|
||||||
|
expect(result).toBe(input)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
test('include - basename', async () => {
|
||||||
|
hexo.config.minify.svg.include = 'bar.svg'
|
||||||
|
const fooPath = 'foo/bar.svg'
|
||||||
|
hexo.route.set(fooPath, input)
|
||||||
|
await s()
|
||||||
|
const { data } = await new Svgo(hexo.config.minify.svg).optimize(input)
|
||||||
|
|
||||||
|
const output = hexo.route.get(fooPath)
|
||||||
|
let result = ''
|
||||||
|
output.on('data', (chunk) => (result += chunk))
|
||||||
|
output.on('end', () => {
|
||||||
|
expect(result).toBe(data)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
test('include - slash in pattern', async () => {
|
||||||
|
hexo.config.minify.svg.include = '**/foo/*.svg'
|
||||||
|
const fooPath = 'blog/site/example/foo/bar.svg'
|
||||||
|
hexo.route.set(fooPath, input)
|
||||||
|
await s()
|
||||||
|
const { data } = await new Svgo(hexo.config.minify.svg).optimize(input)
|
||||||
|
|
||||||
|
const output = hexo.route.get(fooPath)
|
||||||
|
let result = ''
|
||||||
|
output.on('data', (chunk) => (result += chunk))
|
||||||
|
output.on('end', () => {
|
||||||
|
expect(result).toBe(data)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
Loading…
Reference in New Issue