You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

163 lines
4.0 KiB

'use strict';
var path = require('path');
var grunt = require('grunt');
var EventEmitter = require('events').EventEmitter;
var BowerAssets = require('../tasks/lib/bower_assets');
/*
======== A Handy Little Nodeunit Reference ========
https://github.com/caolan/nodeunit
Test methods:
test.expect(numAssertions)
test.done()
Test assertions:
test.ok(value, [message])
test.equal(actual, expected, [message])
test.notEqual(actual, expected, [message])
test.deepEqual(actual, expected, [message])
test.notDeepEqual(actual, expected, [message])
test.strictEqual(actual, expected, [message])
test.notStrictEqual(actual, expected, [message])
test.throws(block, [error], [message])
test.doesNotThrow(block, [error], [message])
test.ifError(value)
*/
function verify(name, message, expected, test, bower) {
function setupBowerConfig(name) {
return new BowerAssets(bower, path.join(__dirname, 'fixtures', name));
}
var bowerAssets = setupBowerConfig(name);
bowerAssets.get()
.on('data', function(actual) {
test.deepEqual(actual, expected, message);
test.done();
})
.on('error', function(err) {
test.ok(false, err);
test.done();
});
}
exports.bower_assets = {
setUp: function(done) {
var bowerCommands = {
list: new EventEmitter()
};
this.bowerCommands = bowerCommands;
this.bower = {
commands: {
list: function() {
return bowerCommands.list;
}
},
config: {
json: 'component.json',
directory: 'components'
}
};
done();
},
tearDown: function(done) {
delete this.bowerCommands;
delete this.bower;
done();
},
currentStateOfBower: function(test) {
test.expect(1);
var expected = {
"__untyped__": {
"jquery": [path.normalize("components/jquery/jquery.js")]
}
};
verify(
'current_state_of_bower',
'should return all main paths in "__untyped__" group',
expected,
test,
this.bower);
this.bowerCommands.list.emit('data', {"jquery": path.normalize("components/jquery/jquery.js")});
},
extendedComponentJson: function(test) {
test.expect(1);
var expected = {
"__untyped__": {
"jquery": [ path.normalize("components/jquery/jquery.js") ]
},
"js": {
"bootstrap-sass": [
path.normalize("components/bootstrap-sass/js/bootstrap-affix.js"),
path.normalize("components/bootstrap-sass/js/bootstrap-modal.js")
]
},
"scss": {
"bootstrap-sass": [ path.normalize("components/bootstrap-sass/lib/_mixins.scss") ]
}
};
verify(
'extended_component_json',
'should return extended set of paths in "js" and "scss" groups',
expected,
test,
this.bower);
this.bowerCommands.list.emit('data', {
"bootstrap-sass": [
path.normalize("components/bootstrap-sass/docs/assets/js/bootstrap.js"),
path.normalize("components/bootstrap-sass/docs/assets/css/bootstrap.css")
],
"jquery": path.normalize("components/jquery/jquery.js")
});
},
overrideHonoringNativeBowerConfiguration: function(test) {
test.expect(1);
var expected = {
"__untyped__": {
"jquery": [ path.normalize("bo_co/jquery/jquery.js") ]
},
"js": {
"bootstrap": [
path.normalize("bo_co/bootstrap/js/bootstrap-affix.js")
]
},
"scss": {
"bootstrap": [ path.normalize("bo_co/bootstrap/lib/_mixins.scss") ]
}
};
this.bower.config.directory = 'bo_co';
verify(
'honor_bowerrc',
'should honor native Bower configuration while overriding packages',
expected,
test,
this.bower);
this.bowerCommands.list.emit('data', {
"bootstrap": [
path.normalize("bo_co/bootstrap/docs/assets/js/bootstrap.js"),
path.normalize("bo_co/bootstrap/docs/assets/css/bootstrap.css")
],
"jquery": path.normalize("bo_co/jquery/jquery.js")
});
}
};