2225231f by Adam Heath

Add missing deps, jasmine is mostly working; the specs aren't committed

yet, tho.
1 parent 72920506
......@@ -50,4 +50,88 @@ module.exports = function(grunt) {
var montyPython = require('grunt-monty-python')(grunt);
montyPython.createConfig(config);
var _ = require('lodash');
var jasmineRequirejsTemplateOptions = function(withInstanbul) {
/* global requirejs */
var callback;
if (withInstanbul) {
callback = function() {
var oldLoad = requirejs.load;
requirejs.load = function (context, moduleName, url) {
//console.log('context=' + JSON.stringify(arguments), 'moduleName=' + moduleName, 'url=' + url);
var parts = url.split('/');
for (var i = 0; i < parts.length; ) {
var part = parts[i];
if (part === '.') {
parts.splice(i, 1);
} else if (part === '') {
parts.splice(i, 1);
} else if (part === '..') {
if (i > 0) {
i--;
parts.splice(i, 2);
} else {
parts.splice(i, 1);
}
} else {
i++;
}
}
url = parts.join('/');
if (url.indexOf('src/scripts/') === 0) {
url = './.grunt/grunt-contrib-jasmine/' + url;
}
if (url.indexOf('test/specs/') === 0) {
url = './.grunt/grunt-contrib-jasmine/' + url;
}
//console.log('url=' + url);
return oldLoad.apply(this, [context, moduleName, url]);
};
};
}
return {
requireConfigFile: 'src/scripts/config.js',
requireConfig: {
baseUrl: 'src/scripts',
callback: callback
}
};
};
var jasmineInstanbulTemplateOptions = function(template, nestedOptions) {
return {
coverage: 'bin/coverage/coverage.json',
report: 'bin/coverage',
replace: false,
template: template,
templateOptions: nestedOptions
};
};
var jasmineOptions = function(withCoverage, options) {
var defaultOptions = {};
defaultOptions.template = require('grunt-template-jasmine-requirejs');
defaultOptions.templateOptions = jasmineRequirejsTemplateOptions(withCoverage);
if (withCoverage) {
defaultOptions.templateOptions = jasmineInstanbulTemplateOptions(defaultOptions.template, defaultOptions.templateOptions);
defaultOptions.template = require('grunt-template-jasmine-istanbul');
}
return _.extend(defaultOptions, options);
};
grunt.initConfig({
jasmine: {
all: {
src: [
'src/scripts/{,**/}*.js',
'!src/scripts/main.js',
'test/specs/**/*.js',
],
options: jasmineOptions(false, null),
},
},
});
};
......
......@@ -14,7 +14,9 @@
"tests"
],
"dependencies": {
"jquery": "",
"backbone": "~1.1.2",
"backbone-nested-models": "git@gitlab.brainfood.com:brainfood/backbone-nested-models.git",
"underscore": "~1",
"requirejs": "~2.1.17"
}
......
......@@ -10,6 +10,10 @@
"dependencies": {
},
"devDependencies": {
"grunt-contrib-jasmine": "~0",
"jasmine-jquery": "^2.0.6",
"grunt-template-jasmine-istanbul": "~0",
"grunt-template-jasmine-requirejs": "~0",
"grunt": "~0",
"grunt-monty-python": "git+ssh://git@gitlab.brainfood.com:brainfood/grunt-monty-python.git"
},
......
......@@ -6,9 +6,21 @@ require = (function() {
var require = {
baseUrl: 'scripts',
deps: ['main'],
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone',
},
'backbone-validation': {
deps: ['backbone'],
},
},
paths: {
'jquery': '../lib/bower/jquery/dist/jquery',
'backbone': '../lib/bower/backbone/backbone',
'underscore': '../lib/bower/underscore/underscore',
'backbone-nested-models': '../lib/bower/backbone-nested-models/src/scripts/backbone-nested-models',
'backbone-validation': '../lib/bower/backbone-validation/src/backbone-validation',
},
};
return require;
......
define(function() {
'use strict';
});
......@@ -24,11 +24,11 @@ define(function(require) {
}
function mergeStaticProps(startPtr, endPtr, obj, fieldName) {
return mergeStaticFunc(startPtr, endPtr, obj, fieldName, _.identity);
return mergeStatic(startPtr, endPtr, obj, fieldName, _.identity);
}
function mergeStaticSets(startPtr, endPtr, obj, fieldName) {
return _.keys(mergeStaticFunc(startPtr, endPtr, obj, fieldName, function arrayToMap(array) {
return _.keys(mergeStatic(startPtr, endPtr, obj, fieldName, function arrayToMap(array) {
var result = {};
_.each(array, function(value) {
result[value] = true;
......