diff options
Diffstat (limited to 'node_modules/gulp-json-transform/test/main.js')
-rw-r--r-- | node_modules/gulp-json-transform/test/main.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/node_modules/gulp-json-transform/test/main.js b/node_modules/gulp-json-transform/test/main.js new file mode 100644 index 000000000..10f0dc5c9 --- /dev/null +++ b/node_modules/gulp-json-transform/test/main.js @@ -0,0 +1,77 @@ +'use strict'; + +var jsonTransform = require('../'); +var Promise = require('promise'); + +var should = require('should'); +require('mocha'); + +var gutil = require('gulp-util'); +var fs = require('fs'); +var path = require('path'); + +var jshint = require('jshint'); + +describe('gulp-json-transform', function () { + + var testTransform = function (inputFile, transformFn, expected) { + var inputJson = new gutil.File({ + path: 'test/fixtures/' + inputFile, + cwd: 'test/', + base: 'test/fixtures', + contents: fs.readFileSync('test/fixtures/' + inputFile) + }); + + return function (done) { + var stream = jsonTransform(transformFn); + + stream.on('error', function(err) { + should.exist(err); + done(err); + }); + + stream.on('data', function (newFile) { + should.exist(newFile); + should.exist(newFile.contents); + var newFilePath = path.resolve(newFile.path); + var expectedFilePath = path.resolve('test/fixtures/' + inputFile); + newFilePath.should.equal(expectedFilePath); + newFile.relative.should.equal(inputFile); + String(newFile.contents).should.equal(expected); + Buffer.isBuffer(newFile.contents).should.equal(true); + done(); + }); + + stream.write(inputJson); + stream.end(); + }; + }; + + it('should transform a json file to a json file', testTransform('input.json', function(data) { + return {foobar: data.foo + data.bar}; + }, '{"foobar":"[foo][bar]"}')); + + it('should transform a json file to a text file', testTransform('input.json', function(data) { + return data.foo + data.bar; + }, '[foo][bar]')); + + it('should accept the file as a parameter to the transform function', testTransform('input.json', function(data, file) { + var fileProps = ['path', 'relative', 'base']; + for (var fileProp in file) { + if (file.hasOwnProperty(fileProp)) { + var index = fileProps.indexOf(fileProp); + should.ok(index >= 0, 'file object has illegal property: ' + fileProp); + if (index >= 0) { + fileProps.splice(index, 1); + } + } + } + should.ok(fileProps.length === 0, 'file object is missing properties: ' + JSON.stringify(fileProps)); + + return file.relative + ' - ' + data.foo + data.bar; + }, 'input.json - [foo][bar]')); + + it('should accept promises', testTransform('input.json', function(data) { + return Promise.resolve(data.foo + data.bar); + }, '[foo][bar]')); +}); |