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