summaryrefslogtreecommitdiffstats
path: root/js/vendor/angular-ui/modules/directives/route/test/routeSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/vendor/angular-ui/modules/directives/route/test/routeSpec.js')
-rw-r--r--js/vendor/angular-ui/modules/directives/route/test/routeSpec.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/js/vendor/angular-ui/modules/directives/route/test/routeSpec.js b/js/vendor/angular-ui/modules/directives/route/test/routeSpec.js
new file mode 100644
index 000000000..d16bafbfe
--- /dev/null
+++ b/js/vendor/angular-ui/modules/directives/route/test/routeSpec.js
@@ -0,0 +1,98 @@
+/*global describe, beforeEach, module, inject, it, spyOn, expect, $ */
+describe('uiRoute', function () {
+ 'use strict';
+
+ var scope, $compile, $location;
+ beforeEach(module('ui.directives'));
+ beforeEach(inject(function (_$rootScope_, _$compile_, _$window_, _$location_) {
+ scope = _$rootScope_.$new();
+ $compile = _$compile_;
+ $location = _$location_;
+ }));
+
+ function setPath(path) {
+ $location.path(path);
+ scope.$broadcast('$routeChangeSuccess');
+ scope.$apply();
+ }
+
+ describe('model is null', function() {
+ runTests();
+ });
+ describe('model is set', function() {
+ runTests('pizza');
+ });
+
+ function runTests(routeModel) {
+ function compileRoute(template) {
+ var elm = $(template);
+ if (routeModel) elm.attr('ng-model', routeModel);
+ return $compile(elm[0])(scope);
+ }
+ var modelProp = routeModel || '$uiRoute';
+ describe('with uiRoute defined', function(){
+ it('should use the uiRoute property', function(){
+ compileRoute('<div ui-route="/foo">');
+ });
+ it('should update model on $observe', function(){
+ setPath('/bar');
+ scope.$apply('foobar = "foo"');
+ compileRoute('<div ui-route="/{{foobar}}">');
+ expect(scope[modelProp]).toBeFalsy();
+ scope.$apply('foobar = "bar"');
+ expect(scope[modelProp]).toBe(true);
+ scope.$apply('foobar = "foo"');
+ expect(scope[modelProp]).toBe(false);
+ });
+ it('should support regular expression', function(){
+ setPath('/foo/123');
+ compileRoute('<div ui-route="/foo/[0-9]*">');
+ expect(scope[modelProp]).toBe(true);
+ });
+ });
+
+ describe('with ngHref defined', function(){
+
+ it('should use the ngHref property', function(){
+ setPath('/foo');
+ compileRoute('<a ng-href="/foo" ui-route>');
+ expect(scope[modelProp]).toBe(true);
+ });
+ it('should update model on $observe', function(){
+ setPath('/bar');
+ scope.$apply('foobar = "foo"');
+ compileRoute('<a ng-href="/{{foobar}}" ui-route>');
+ expect(scope[modelProp]).toBeFalsy();
+ scope.$apply('foobar = "bar"');
+ expect(scope[modelProp]).toBe(true);
+ scope.$apply('foobar = "foo"');
+ expect(scope[modelProp]).toBe(false);
+ });
+ });
+
+ describe('with href defined', function(){
+
+ it('should use the href property', function(){
+ setPath('/foo');
+ compileRoute('<a href="/foo" ui-route>');
+ expect(scope[modelProp]).toBe(true);
+ });
+ });
+
+ it('should throw an error if no route property available', function(){
+ expect(function(){
+ compileRoute('<div ui-route>');
+ }).toThrow();
+ });
+
+ it('should update model on route change', function(){
+ setPath('/bar');
+ compileRoute('<div ui-route="/foo">');
+ expect(scope[modelProp]).toBeFalsy();
+ setPath('/foo');
+ expect(scope[modelProp]).toBe(true);
+ setPath('/bar');
+ expect(scope[modelProp]).toBe(false);
+ });
+ }
+});