Refactors batch-test.js.
authorJakub Pawlowicz <contact@jakubpawlowicz.com>
Mon, 19 Dec 2016 09:58:25 +0000 (10:58 +0100)
committerJakub Pawlowicz <contact@jakubpawlowicz.com>
Mon, 19 Dec 2016 10:01:47 +0000 (11:01 +0100)
Why:

* Wasn't too DRY anymore.

test/batch-test.js

index 3bb6d93..4400060 100644 (file)
@@ -1,76 +1,74 @@
+var assert = require('assert');
 var exec = require('child_process').exec;
-var vows = require('vows');
-var path = require('path');
 var fs = require('fs');
-var assert = require('assert');
+var path = require('path');
+
 var CleanCSS = require('../index');
+var vows = require('vows');
 
 var lineBreak = require('os').EOL;
 
-if (process.platform == 'win32')
+if (process.platform == 'win32') {
   return;
+}
+
+function assertEqualLineByLine(expected, actual) {
+  var expectedLines = expected.split(lineBreak);
+  var actualLines = actual.split(lineBreak);
 
-var batchContexts = function () {
+  expectedLines.forEach(function (line, i) {
+    assert.equal(line, actualLines[i]);
+  });
+}
+
+function batchContexts() {
   var context = {};
   var dir = path.join(__dirname, 'fixtures');
+
   fs.readdirSync(dir).forEach(function (filename) {
-    if (filename.indexOf('.css') == -1 || /min.css$/.exec(filename) || !fs.statSync(path.join(dir, filename)).isFile())
-      return;
     var testName = filename.split('.')[0];
+    var isIE7Mode = filename.indexOf('ie7') > 0;
+
+    if (filename.indexOf('.css') == -1 || /min.css$/.exec(filename) || !fs.statSync(path.join(dir, filename)).isFile()) {
+      return;
+    }
 
     context[testName] = {
       topic: function () {
-        var plainPath = path.join('test', 'fixtures', testName + '.css');
+        var inputPath = path.join('test', 'fixtures', testName + '.css');
         var minPath = path.join(__dirname, 'fixtures', testName + '-min.css');
 
         return {
-          plain: '@import "' + plainPath + '";',
-          preminified: fs.readFileSync(minPath, 'utf8').trim()
+          input: '@import "' + inputPath + '";',
+          preoptimized: fs.readFileSync(minPath, 'utf8').trim()
         };
       },
       'minifying': {
         topic: function (data) {
-          var self = this;
-
           new CleanCSS({
-            keepBreaks: true
-          }).minify(data.plain, function (errors, minified) {
-            self.callback(errors, minified.styles, data);
-          });
+            compatibility: isIE7Mode ? 'ie7' : '*',
+            keepBreaks: true,
+            sourceMap: true
+          }).minify(data.input, this.callback.bind(null, data));
         },
-        'should output right content': function (errors, minified, data) {
-          var minifiedRules = minified.split(lineBreak);
-          var preminifiedRules = data.preminified.split(lineBreak);
-
-          minifiedRules.forEach(function (line, i) {
-            assert.equal(line, preminifiedRules[i]);
-          });
+        'outputs right content': function (data, error, output) {
+          assertEqualLineByLine(data.preoptimized, output.styles);
         }
       },
       'minifying with source maps': {
         topic: function (data) {
-          var self = this;
-
           new CleanCSS({
+            compatibility: isIE7Mode ? 'ie7' : '*',
             keepBreaks: true,
             sourceMap: true
-          }).minify(data.plain, function (errors, minified) {
-            self.callback(errors, minified.styles, data);
-          });
+          }).minify(data.input, this.callback.bind(null, data));
         },
-        'should output right content': function (errors, minified, data) {
-          var minifiedTokens = minified.split(lineBreak);
-          var preminifiedTokens = data.preminified.split(lineBreak);
-
-          minifiedTokens.forEach(function (line, i) {
-            assert.equal(line, preminifiedTokens[i]);
-          });
+        'outputs right content': function (data, error, output) {
+          assertEqualLineByLine(data.preoptimized, output.styles);
         }
       },
       'minifying via CLI': {
         'topic': function (data) {
-          var isIE7Mode = filename.indexOf('ie7') > 0;
-
           exec(
             '__DIRECT__=1 ./bin/cleancss -b ' + (isIE7Mode ? '-c ie7 ' : '') + path.join(dir, filename),
             { maxBuffer: 500 * 1024 },
@@ -78,19 +76,14 @@ var batchContexts = function () {
           );
         },
         'outputs right content': function (data, error, stdout) {
-          var optimizedLines = stdout.split(lineBreak);
-          var preoptimizedLines = data.preminified.split(lineBreak);
-
-          optimizedLines.forEach(function (line, i) {
-            assert.equal(line, preoptimizedLines[i]);
-          });
+          assertEqualLineByLine(data.preoptimized, stdout);
         }
       }
     };
   });
 
   return context;
-};
+}
 
 vows.describe('clean-batch')
   .addBatch(batchContexts())