angular-cn/modules/angular1_router/test/component_mapper_spec.js

78 lines
2.0 KiB
JavaScript

'use strict';
describe('$componentMapper', function () {
var elt,
$compile,
$rootScope,
$router,
$templateCache;
function Ctrl() {
this.message = 'howdy';
}
beforeEach(function() {
module('ng');
module('ngComponentRouter');
module(function ($controllerProvider) {
$controllerProvider.register('myComponentController', Ctrl);
});
});
it('should convert a component name to a controller name', inject(function ($componentMapper) {
expect($componentMapper.controllerName('foo')).toBe('FooController');
}));
it('should convert a controller name to a component name', inject(function ($componentMapper) {
expect($componentMapper.component('FooController')).toBe('foo');
}));
it('should convert a component name to a template URL', inject(function ($componentMapper) {
expect($componentMapper.template('foo')).toBe('./components/foo/foo.html');
}));
it('should work with a controller constructor fn and a template url', inject(function ($componentMapper) {
var routes = {};
$componentMapper.setCtrlNameMapping(function (name) {
return routes[name].controller;
});
$componentMapper.setTemplateMapping(function (name) {
return routes[name].templateUrl;
});
$componentMapper.setCtrlAsMapping(function (name) {
return 'ctrl';
});
routes.myComponent = {
controller: Ctrl,
templateUrl: '/foo'
};
inject(function(_$compile_, _$rootScope_, _$router_, _$templateCache_) {
$compile = _$compile_;
$rootScope = _$rootScope_;
$router = _$router_;
$templateCache = _$templateCache_;
});
$templateCache.put('/foo', [200, '{{ctrl.message}}', {}]);
compile('<ng-outlet></ng-outlet>');
$router.config([
{ path: '/', component: Ctrl }
]);
$router.navigate('/');
$rootScope.$digest();
expect(elt.text()).toBe('howdy');
}));
function compile(template) {
elt = $compile('<div>' + template + '</div>')($rootScope);
$rootScope.$digest();
return elt;
}
});