78 lines
2.0 KiB
JavaScript
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;
|
||
|
}
|
||
|
});
|