|
/* eslint-env mocha */
|
|
'use strict'
|
|
var assert = require('assert')
|
|
var fs = require('fs')
|
|
var path = require('path')
|
|
var gifsicle = require('imagemin-gifsicle')
|
|
var svgo = require('imagemin-svgo')
|
|
var run = require('./run-webpack')
|
|
|
|
var fixtureGif = fs.readFileSync(path.resolve(__dirname, './fixture.gif'))
|
|
var fixtureSvg = fs.readFileSync(path.resolve(__dirname, './fixture.svg'))
|
|
|
|
describe('img-loader', () => {
|
|
it('passes the img though unchanged by default', function () {
|
|
return run('./fixture.gif').then(function (image) {
|
|
assert(image.equals(fixtureGif), 'gif should be unchanged')
|
|
})
|
|
})
|
|
|
|
it('can apply optimizations for gif', function () {
|
|
return run('./fixture.gif', {
|
|
plugins: [ gifsicle({}) ]
|
|
}).then(function (image) {
|
|
assert(!image.equals(fixtureGif), 'gif should be changed')
|
|
assert(image.length < fixtureGif.length, 'optimized gif should be smaller')
|
|
})
|
|
})
|
|
|
|
it('can apply optimizations for svg', function () {
|
|
return run('./fixture.svg', {
|
|
plugins: [ svgo({}) ]
|
|
}).then(function (image) {
|
|
assert(!image.equals(fixtureSvg), 'svg should be changed')
|
|
assert(image.length < fixtureSvg.length, 'optimized svg should be smaller')
|
|
assert.strictEqual(image.toString('utf8'), '<svg/>')
|
|
})
|
|
})
|
|
|
|
it('can use a function for plugins', function () {
|
|
var context
|
|
return run('./fixture.svg', {
|
|
plugins: function (ctx) {
|
|
context = ctx
|
|
return [ svgo({}) ]
|
|
}
|
|
}).then(function (image) {
|
|
assert.strictEqual(path.basename(context.resourcePath), 'fixture.svg')
|
|
assert(image.length < fixtureSvg.length, 'optimized svg should be smaller')
|
|
})
|
|
})
|
|
})
|