fix bugs, more tests
This commit is contained in:
parent
0a44f24813
commit
cc4952ac7c
11 changed files with 309 additions and 104 deletions
|
|
@ -1,3 +1,3 @@
|
|||
'use strict';
|
||||
|
||||
require('mocha-jshint')(['lib']);
|
||||
require('mocha-jshint')(['lib','example']);
|
||||
|
|
|
|||
|
|
@ -5,37 +5,50 @@ var fs = require('fs-extra');
|
|||
var assert = require("assert");
|
||||
var assets = require("../lib/node-ff-assets");
|
||||
|
||||
var testDataCss = function (testName) {
|
||||
function createTestAssembler(suite) {
|
||||
var assetAssembler = new assets.AssetAssembler({
|
||||
linkMapping: {'/static-test/': 'test/data/'+suite.title+'/'},
|
||||
linkTarget: '/static-test/output.css',
|
||||
linkSources: [
|
||||
'/static-test/input0.css',
|
||||
'/static-test/input1.css',
|
||||
],
|
||||
});
|
||||
assetAssembler.on ('log',function (logLevel, logMessage) {
|
||||
var level = (logLevel+' ').substring(0,6);
|
||||
console.log(' '+ level + ' ' + suite.title + ' ' +logMessage);
|
||||
});
|
||||
return assetAssembler;
|
||||
}
|
||||
|
||||
function createTestData(suite) {
|
||||
var testName = suite.title;
|
||||
var outputFile = 'test/data/'+testName+'/output.css';
|
||||
var dataCss0 = 'test/data/'+testName+'/input0.css';
|
||||
var dataCss1 = 'test/data/'+testName+'/input1.css';
|
||||
fs.ensureFileSync(dataCss0);
|
||||
fs.writeFileSync(dataCss0,'');
|
||||
fs.appendFile(dataCss0,'input__0');
|
||||
fs.ensureFileSync(dataCss1);
|
||||
fs.writeFileSync(dataCss1,'');
|
||||
fs.appendFile(dataCss1,'input__1');
|
||||
if (fs.existsSync(outputFile)) {
|
||||
fs.writeFileSync(outputFile,'');
|
||||
}
|
||||
return outputFile;
|
||||
}
|
||||
|
||||
var testName = '';
|
||||
describe('lib/asset-assembler.js', function() {
|
||||
|
||||
testName = 'test-aggregate-two';
|
||||
describe(testName, function() {
|
||||
describe('config-null', function() {
|
||||
this.timeout(10000);
|
||||
var outputFile = testDataCss(testName);
|
||||
var assetAssembler = new assets.AssetAssembler({
|
||||
linkMapping: {'/static-test/': 'test/data/'+testName+'/'},
|
||||
linkTarget: '/static-test/output.css',
|
||||
linkSources: [
|
||||
'/static-test/input0.css',
|
||||
'/static-test/input1.css',
|
||||
],
|
||||
});
|
||||
try {
|
||||
new assets.AssetAssembler();
|
||||
assert.ok(false);
|
||||
} catch (err) {
|
||||
assert.ok(err !== undefined);
|
||||
}
|
||||
});
|
||||
|
||||
describe('aggregate-two', function() {
|
||||
this.timeout(10000);
|
||||
var outputFile = createTestData(this);
|
||||
var assetAssembler = createTestAssembler(this);
|
||||
it('run builder and check output', function (done) {
|
||||
assetAssembler.run(function (err) {
|
||||
try {
|
||||
|
|
@ -54,25 +67,19 @@ describe('lib/asset-assembler.js', function() {
|
|||
});
|
||||
});
|
||||
|
||||
testName = 'test-aggregate-two-and-remote';
|
||||
describe(testName, function() {
|
||||
describe('aggregate-two-and-remote', function() {
|
||||
this.timeout(10000);
|
||||
var outputFile = testDataCss(testName);
|
||||
var assetAssembler = new assets.AssetAssembler({
|
||||
linkMapping: {'/static-test/': 'test/data/'+testName+'/'},
|
||||
linkTarget: '/static-test/output.css',
|
||||
linkSources: [
|
||||
'/static-test/input0.css',
|
||||
'/static-test/input1.css',
|
||||
'/static-test/fonts-sans-pro.css@http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700',
|
||||
],
|
||||
});
|
||||
var remoteFile = 'test/data/'+this.title+'/fonts-sans-pro.css'
|
||||
var outputFile = createTestData(this);
|
||||
var assetAssembler = createTestAssembler(this);
|
||||
assetAssembler.config.linkSources.push('/static-test/fonts-sans-pro.css@http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700');
|
||||
|
||||
it('run builder and check output', function (done) {
|
||||
assetAssembler.run(function (err) {
|
||||
try {
|
||||
assert.ok(true);
|
||||
assert.equal(true, fs.existsSync(outputFile));
|
||||
assert.equal(true, fs.existsSync('test/data/'+testName+'/fonts-sans-pro.css'));
|
||||
assert.equal(true, fs.existsSync(remoteFile));
|
||||
|
||||
var outputData = ''+fs.readFileSync(outputFile);
|
||||
assert.equal(true, outputData.indexOf('input__0') > 0);
|
||||
|
|
@ -81,10 +88,75 @@ describe('lib/asset-assembler.js', function() {
|
|||
|
||||
done();
|
||||
} catch (err) {
|
||||
console.log('sdf: '+Object.keys(err));
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('remote-404', function() {
|
||||
this.timeout(10000);
|
||||
var remoteFile = 'test/data/'+this.title+'/font-404.css';
|
||||
var outputFile = createTestData(this);
|
||||
var assetAssembler = createTestAssembler(this);
|
||||
assetAssembler.config.linkSources.push('/static-test/font-404.css@http://fonts.googleapis.com/404');
|
||||
|
||||
it('run builder and check output', function (done) {
|
||||
assetAssembler.run(function (err) {
|
||||
try {
|
||||
assert.ok(err !== undefined);
|
||||
assert.equal(true, err.message.indexOf('404') >= 0);
|
||||
assert.equal(true, fs.existsSync(outputFile));
|
||||
assert.equal(true, fs.existsSync(remoteFile));
|
||||
|
||||
var outputData = ''+fs.readFileSync(outputFile);
|
||||
assert.equal(true, outputData.length !== 0);
|
||||
assert.equal(true, outputData.indexOf('input__0') === -1);
|
||||
assert.equal(true, outputData.indexOf('input__1') === -1);
|
||||
assert.equal(true, outputData.indexOf('Source Sans Pro') === -1);
|
||||
|
||||
var remoteData = ''+fs.readFileSync(remoteFile);
|
||||
assert.equal(true, remoteData.indexOf('404') > 0);
|
||||
|
||||
done();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('remote-closed', function() {
|
||||
this.timeout(10000);
|
||||
var remoteFile = 'test/data/'+this.title+'/font-closed.css'
|
||||
var outputFile = createTestData(this);
|
||||
var assetAssembler = createTestAssembler(this);
|
||||
assetAssembler.config.linkSources.push('/static-test/font-closed.css@http://localhost:12345/closed');
|
||||
|
||||
it('run builder and check output', function (done) {
|
||||
assetAssembler.run(function (err) {
|
||||
try {
|
||||
assert.ok(err !== undefined);
|
||||
assert.equal(true, err.message.indexOf('REFUSED') >= 0);
|
||||
|
||||
assert.equal(true, fs.existsSync(outputFile));
|
||||
assert.equal(true, fs.existsSync(remoteFile));
|
||||
|
||||
var outputData = ''+fs.readFileSync(outputFile);
|
||||
assert.equal(true, outputData.indexOf('input__0') === -1);
|
||||
assert.equal(true, outputData.indexOf('input__1') === -1);
|
||||
|
||||
var remoteData = ''+fs.readFileSync(remoteFile);
|
||||
assert.equal(true, remoteData.length === 0);
|
||||
|
||||
done();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
|
|
|||
94
test/test-assets-builder.js
Normal file
94
test/test-assets-builder.js
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
'use strict';
|
||||
|
||||
var u = require('underscore');
|
||||
var fs = require('fs-extra');
|
||||
var assert = require("assert");
|
||||
var assets = require("../lib/node-ff-assets");
|
||||
|
||||
function createTestConfig(suite,type) {
|
||||
|
||||
var inputFile0 = 'test/data/'+suite.title+'/'+type+'/input0.'+type;
|
||||
fs.ensureFileSync(inputFile0);
|
||||
fs.appendFile(inputFile0,'\n// input0__'+suite.title+'__'+type);
|
||||
var inputFile1 = 'test/data/'+suite.title+'/'+type+'/input1.'+type;
|
||||
fs.ensureFileSync(inputFile1);
|
||||
fs.appendFile(inputFile1,'\n// input0__'+suite.title+'__'+type);
|
||||
|
||||
return function (callback) {
|
||||
var linkMapping = {};
|
||||
linkMapping['/static-test/'+type+'/'] = 'test/data/'+suite.title+'/'+type+'/';
|
||||
callback(null, {
|
||||
linkMapping: linkMapping,
|
||||
linkTarget: '/static-test/'+type+'/output.'+type,
|
||||
linkSources: [
|
||||
'/static-test/'+type+'/input0.'+type,
|
||||
'/static-test/'+type+'/input1.'+type,
|
||||
],
|
||||
assetType: type,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function createTestBuilder(suite) {
|
||||
var testConfig = {
|
||||
assemblerFill: function (assembler, callback) {
|
||||
var serverResultKey = 'ff_assets_'+assembler.config.assetType;
|
||||
assembler.on ('log',function (logLevel, logMessage) {
|
||||
var level = (logLevel+' ').substring(0,6);
|
||||
console.log(' '+ level + ' ' + suite.title + ' assembler ' +logMessage); // == -2 space from asm
|
||||
});
|
||||
callback();
|
||||
},
|
||||
assets: {
|
||||
js: {
|
||||
configCreate: createTestConfig(suite,'js'),
|
||||
},
|
||||
css: {
|
||||
configCreate: createTestConfig(suite,'css'),
|
||||
}
|
||||
}
|
||||
};
|
||||
var assetsBuilder = new assets.AssetsBuilder(testConfig);
|
||||
assetsBuilder.on ('log',function (logLevel, logMessage) {
|
||||
var level = (logLevel+' ').substring(0,6);
|
||||
console.log(' '+ level + ' ' + suite.title + ' builder ' +logMessage); // == -1 space from asm
|
||||
});
|
||||
return assetsBuilder;
|
||||
}
|
||||
|
||||
describe('lib/assets-builder.js', function() {
|
||||
|
||||
describe('config-null', function() {
|
||||
this.timeout(10000);
|
||||
try {
|
||||
new assets.AssetsBuilder();
|
||||
assert.ok(false);
|
||||
} catch (err) {
|
||||
assert.ok(err !== undefined);
|
||||
}
|
||||
});
|
||||
|
||||
describe('run-all', function() {
|
||||
this.timeout(10000);
|
||||
var assetsBuilder = createTestBuilder(this);
|
||||
it('run builder and check output', function (done) {
|
||||
assetsBuilder.runAll(function (err) {
|
||||
if (err) {
|
||||
done(err);
|
||||
return;
|
||||
}
|
||||
var outputFileJs = 'test/data/run-all/js/output.js';
|
||||
var outputFileCss = 'test/data/run-all/css/output.css';
|
||||
try {
|
||||
assert.ok(true);
|
||||
assert.equal(true, fs.existsSync(outputFileJs));
|
||||
assert.equal(true, fs.existsSync(outputFileCss));
|
||||
done();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue