angular-docs-cn/modules/angular1_router/test/util.es5.js

86 lines
1.9 KiB
JavaScript

/*
* Helpers to keep tests DRY
*/
function componentTemplatePath(name) {
return './components/' + dashCase(name) + '/' + dashCase(name) + '.html';
}
function componentControllerName(name) {
return name[0].toUpperCase() + name.substr(1) + 'Controller';
}
function dashCase(str) {
return str.replace(/([A-Z])/g, function ($1) {
return '-' + $1.toLowerCase();
});
}
function boringController (model, value) {
return function () {
this[model] = value;
};
}
function provideHelpers(fn, preInject) {
return function () {
var elt,
$compile,
$rootScope,
$router,
$templateCache,
$controllerProvider;
module('ng');
module('ngNewRouter');
module(function(_$controllerProvider_) {
$controllerProvider = _$controllerProvider_;
});
inject(function(_$compile_, _$rootScope_, _$router_, _$templateCache_) {
$compile = _$compile_;
$rootScope = _$rootScope_;
$router = _$router_;
$templateCache = _$templateCache_;
});
function registerComponent(name, template, config) {
if (!template) {
template = '';
}
var ctrl;
if (!config) {
ctrl = function () {};
} else if (angular.isArray(config)) {
ctrl = function () {};
ctrl.$routeConfig = config;
} else if (typeof config === 'function') {
ctrl = config;
} else {
ctrl = function () {};
ctrl.prototype = config;
}
$controllerProvider.register(componentControllerName(name), ctrl);
put(name, template);
}
function put (name, template) {
$templateCache.put(componentTemplatePath(name), [200, template, {}]);
}
function compile(template) {
var elt = $compile('<div>' + template + '</div>')($rootScope);
$rootScope.$digest();
return elt;
}
fn({
registerComponent: registerComponent,
$router: $router,
put: put,
compile: compile
})
}
}