'use strict'; describe('router', function () { var elt, $compile, $rootScope, $router, $compileProvider; beforeEach(function () { module('ng'); module('ngComponentRouter'); module(function($provide) { $provide.value('$routerRootComponent', 'app'); }); module(function (_$compileProvider_) { $compileProvider = _$compileProvider_; }); inject(function (_$compile_, _$rootScope_, _$router_) { $compile = _$compile_; $rootScope = _$rootScope_; $router = _$router_; }); }); it('should work with a provided root component', inject(function($location) { registerComponent('homeCmp', { template: 'Home' }); registerComponent('app', { template: '
', $routeConfig: [ { path: '/', component: 'homeCmp' } ] }); compile(''); $location.path('/'); $rootScope.$digest(); expect(elt.text()).toBe('Home'); })); function registerComponent(name, options) { var controller = options.controller || function () {}; ['$onActivate', '$onDeactivate', '$onReuse', '$canReuse', '$canDeactivate'].forEach(function (hookName) { if (options[hookName]) { controller.prototype[hookName] = options[hookName]; } }); function factory() { return { template: options.template || '', controllerAs: name, controller: controller }; } if (options.$canActivate) { factory.$canActivate = options.$canActivate; } if (options.$routeConfig) { factory.$routeConfig = options.$routeConfig; } $compileProvider.directive(name, factory); } function compile(template) { elt = $compile('
' + template + '
')($rootScope); $rootScope.$digest(); return elt; } });