minify.js 2.65 KB
Newer Older
Nicolas Widart's avatar
Nicolas Widart committed
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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
var gulp = require('gulp'),
  expect = require('chai').expect,
  minifyCSS = require('../'),
  CleanCSS = require('clean-css'),
  es = require('event-stream'),
  Stream = require('stream'),
  path = require('path'),
  fs = require('fs');

require('mocha');

describe('gulp-minify-css minification', function() {
  var opts = {
    keepSpecialComments: 1,
    keepBreaks: true
  };
  
  describe('with buffers', function() {
    var filename = path.join(__dirname, './fixture/index.css');
    it('should minify my files', function(done) {
      gulp.src(filename)
      .pipe(minifyCSS(opts))
      .pipe(es.map(function(file){
        var source = fs.readFileSync(filename),
          expected = new CleanCSS(opts).minify(source.toString());
        expect(expected).to.be.equal(file.contents.toString());
        done();
      }));
    });

    it('should return file.contents as a buffer', function(done) {
      gulp.src(filename)
      .pipe(minifyCSS())
      .pipe(es.map(function(file) {
        expect(file.contents).to.be.an.instanceof(Buffer);
        done();
      }));
    });
  });
  describe('with streams', function() {
    var filename = path.join(__dirname, './fixture/index.css');
    it('should minify my files', function(done) {
      gulp.src(filename, {buffer: false})
      .pipe(minifyCSS(opts))
      .pipe(es.map(function(file){
        var source = fs.readFileSync(filename),
          expected = new CleanCSS(opts).minify(source.toString());
        file.contents.pipe(es.wait(function(err, data) {
          expect(expected).to.be.equal(data.toString());
          done();
        }));
      }));
    });

    it('should return file.contents as a stream', function(done) {
      gulp.src(filename, {buffer: false})
      .pipe(minifyCSS(opts))
      .pipe(es.map(function(file) {
        expect(file.contents).to.be.an.instanceof(Stream);
        done();
      }));
    });
  });
});

describe('does not loose other properties in the file object', function () {
  var filename = path.join(__dirname, './fixture/index.css');
  it('should pass through the same file instance', function (done) {
    var originalFile;
    gulp.src(filename)
    .pipe(es.mapSync(function (file) { return originalFile = file; }))
    .pipe(minifyCSS())
    .pipe(es.map(function (file) {
      expect(file).to.equal(originalFile);
      done();
    }));
  });
  it('should preserve additional properties on the original file instance', function (done) {
    gulp.src(filename)
    .pipe(es.mapSync(function (file) {
      file.someProperty = 42;
      return file;
    }))
    .pipe(minifyCSS())
    .pipe(es.map(function (file) {
      expect(file.someProperty).to.equal(42);
      done();
    }));
  });
});