UNPKG

gulp-assetpaths

Version:

A Gulp plugin to change asset paths from one environment to another.

446 lines (386 loc) 10.5 kB
/*global describe, it*/ var fs = require('fs'), es = require('event-stream'), should = require('should'); require('mocha'); delete require.cache[require.resolve('../')]; var Vinyl = require('vinyl'), assetpaths = require('../'); describe('gulp-assetpaths', function() { it('should replace static paths', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/staticpaths.html', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/staticpaths.html') }); var expectedStatic = new Vinyl({ path: 'test/expected/staticpaths.html', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/staticpaths.html') }); var stream = assetpaths({ oldDomain: 'www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'js', 'css'], templates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(expectedStatic.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should replace nested static paths', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/nested/staticpaths.html', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/nested/staticpaths.html') }); var expectedStaticNested = new Vinyl({ path: 'test/expected/nested/staticpaths.html', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/nested/staticpaths.html') }); var stream = assetpaths({ oldDomain: 'www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'js', 'css'], templates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(expectedStaticNested.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should remove a prefix by passing an empty string for newDomain and docRoot', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/removeprefix.html', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/removeprefix.html') }); var expectedRemovePrefix = new Vinyl({ path: 'test/expected/removeprefix.html', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/removeprefix.html') }); var stream = assetpaths({ oldDomain: 'http://www.somedomain.com/prefix', newDomain: '', docRoot: '', filetypes: ['jpg', 'png', 'js', 'css'], templates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(expectedRemovePrefix.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should replace dynamic paths', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/dynamicpaths.html', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/dynamicpaths.html') }); var expectedDynamic = new Vinyl({ path: 'test/expected/staticpaths.html', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/dynamicpaths.html') }); var stream = assetpaths({ oldDomain: 'www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'css'], templates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(expectedDynamic.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should replace paths in compiled templates', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/nojs.html', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/templates.js') }); var expectedTemplates = new Vinyl({ path: 'test/expected/templates.js', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/templates.js') }); var stream = assetpaths({ oldDomain: 'www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'css'], templates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(expectedTemplates.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should not replace excluded css file type', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/nocss.css', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/nocss.css') }); var expectedNoCSS = new Vinyl({ path: 'test/expected/nocss.css', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/nocss.css') }); var stream = assetpaths({ oldDomain: 'www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'js'], noTemplates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(expectedNoCSS.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should not replace excluded js file type', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/nojs.html', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/nojs.html') }); var expectedNoJS = new Vinyl({ path: 'test/expected/nojs.html', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/nojs.html') }); var stream = assetpaths({ oldDomain: 'www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'css'], noTemplates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(expectedNoJS.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should allow relative path in oldDomain option', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/oldDomainRel.html', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/oldDomainRel.html') }); var oldDomainRel = new Vinyl({ path: 'test/expected/oldDomainRel.html', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/oldDomainRel.html') }); var stream = assetpaths({ oldDomain: '../assets', newDomain: '//www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'css'], templates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(oldDomainRel.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should change the paths in a json file', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/test.json', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/test.json') }); var expectedJSON = new Vinyl({ path: 'test/expected/test.json', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/test.json') }); var stream = assetpaths({ oldDomain: 'https://www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'css'], templates: true }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal( String(expectedJSON.contents) ); done(); }); stream.write(srcFile); stream.end(); }); it('should error on stream', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/dynamicpaths.html', cwd: 'test/', base: 'test/fixtures', contents: fs.createReadStream('test/fixtures/dynamicpaths.html') }); var stream = assetpaths({ oldDomain: 'www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'js', 'css'] }); stream.on('error', function(err) { should.exist(err); done(); }); stream.on('data', function(newFile) { newFile.contents.pipe( es.wait(function(err, data) { done(err); }) ); }); stream.write(srcFile); stream.end(); }); it('should replace custom attributes', function(done) { var srcFile = new Vinyl({ path: 'test/fixtures/customattrs.html', cwd: 'test/', base: 'test/fixtures', contents: fs.readFileSync('test/fixtures/customattrs.html') }); var expected = new Vinyl({ path: 'test/expected/customattrs.html', cwd: 'test/', base: 'test/expected', contents: fs.readFileSync('test/expected/customattrs.html') }); var stream = assetpaths({ oldDomain: 'www.oldDomain.com', newDomain: 'https://www.newDomain.com', docRoot: 'test', filetypes: ['jpg', 'png', 'js', 'css'], templates: true, customAttributes: ['data-custom'] }); stream.on('error', function(err) { should.exist(err); done(err); }); stream.on('data', function(newFile) { should.exist(newFile); should.exist(newFile.contents); String(newFile.contents).should.equal(String(expected.contents)); done(); }); stream.write(srcFile); stream.end(); }); });