Skip to content

Commit b5ca4c2

Browse files
committed
Assignable expressions test specification
1 parent 90f792d commit b5ca4c2

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed

test/AssigningSpec.js

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
/*global describe, beforeEach, module, it, expect */
2+
describe('uiScroll', function () {
3+
'use strict';
4+
5+
beforeEach(module('ui.scroll'));
6+
beforeEach(module('ui.scroll.test.datasources'));
7+
8+
var myApp = angular.module('myApp',[]);
9+
myApp.controller('MyTopController', function($scope) {
10+
$scope.name = 'MyTopController';
11+
});
12+
myApp.controller('MyInnerController', function($scope) {
13+
$scope.name = 'MyInnerController';
14+
});
15+
myApp.controller('MyBottomController', function($scope) {
16+
$scope.name = 'MyBottomController';
17+
});
18+
19+
beforeEach(module('myApp'));
20+
21+
var executeTest = function(template, ctrlSelector, scopeContainer) {
22+
inject(function($rootScope, $compile, $timeout) {
23+
// build and render
24+
var templateElement = angular.element(template);
25+
var scope = $rootScope.$new();
26+
angular.element(document).find('body').append(templateElement);
27+
$compile(templateElement)(scope);
28+
scope.$apply();
29+
$timeout.flush();
30+
31+
// find adapter element and scope container
32+
var adapterContainer;
33+
if(ctrlSelector) {
34+
var adapterElement;
35+
adapterElement = templateElement.find('[ng-controller="' + ctrlSelector + '"]');
36+
adapterContainer = adapterElement.scope();
37+
}
38+
else {
39+
adapterContainer = $rootScope;
40+
}
41+
if (scopeContainer) {
42+
adapterContainer = adapterContainer[scopeContainer];
43+
}
44+
45+
// expectations
46+
expect(!!adapterContainer.adapter).toBe(true);
47+
expect(angular.isString(adapterContainer.adapter.topVisible)).toBe(true);
48+
49+
// clean up
50+
templateElement.remove();
51+
});
52+
};
53+
54+
describe('Adapter assigning', function () {
55+
56+
it('should work in simplest case (viewport)', function () {
57+
var template =
58+
'<div ng-controller="MyTopController">' +
59+
'<div ng-controller="MyInnerController">' +
60+
'<div ng-controller="MyBottomController">' +
61+
'<div ui-scroll-viewport style="height: 200px">' +
62+
'<div ui-scroll="item in myMultipageDatasource" adapter="adapter">' +
63+
'{{$index}}: {{item}}' +
64+
'</div>' +
65+
'</div>' +
66+
'</div>' +
67+
'</div>' +
68+
'</div>';
69+
executeTest(template, 'MyBottomController');
70+
});
71+
72+
it('should work in simplest case (no viewport)', function () {
73+
var template =
74+
'<div ng-controller="MyTopController">' +
75+
'<div ng-controller="MyInnerController" ng-if="name">' +
76+
'<div ng-controller="MyBottomController" ng-if="name">' +
77+
'<div ui-scroll="item in myMultipageDatasource" adapter="adapter">' +
78+
'{{$index}}: {{item}}' +
79+
'</div>' +
80+
'</div>' +
81+
'</div>' +
82+
'</div>';
83+
executeTest(template);
84+
});
85+
86+
it('should work with additional container (viewport)', function () {
87+
var template =
88+
'<div ng-controller="MyTopController">' +
89+
'<div ng-controller="MyInnerController">' +
90+
'<div ng-controller="MyBottomController">' +
91+
'<div ui-scroll-viewport style="height: 200px">' +
92+
'<div ui-scroll="item in myMultipageDatasource" adapter="ctrl.adapter">' +
93+
'{{$index}}: {{item}}' +
94+
'</div>' +
95+
'</div>' +
96+
'</div>' +
97+
'</div>' +
98+
'</div>';
99+
executeTest(template, 'MyBottomController', 'ctrl');
100+
});
101+
102+
it('should work with additional container (no viewport)', function () {
103+
var template =
104+
'<div ng-controller="MyTopController">' +
105+
'<div ng-controller="MyInnerController" ng-if="name">' +
106+
'<div ng-controller="MyBottomController" ng-if="name">' +
107+
'<div ui-scroll="item in myMultipageDatasource" adapter="ctrl.adapter">' +
108+
'{{$index}}: {{item}}' +
109+
'</div>' +
110+
'</div>' +
111+
'</div>' +
112+
'</div>';
113+
executeTest(template, null, 'ctrl');
114+
});
115+
116+
it('should work for "on" syntax (viewport)', function () {
117+
var template =
118+
'<div ng-controller="MyTopController">' +
119+
'<div ng-controller="MyInnerController" ng-if="name">' +
120+
'<div ng-controller="MyBottomController" ng-if="name">' +
121+
'<div ui-scroll-viewport style="height: 200px" ng-if="name">' +
122+
'<div ui-scroll="item in myMultipageDatasource" adapter="adapter on MyInnerController">' +
123+
'{{$index}}: {{item}}' +
124+
'</div>' +
125+
'</div>' +
126+
'</div>' +
127+
'</div>' +
128+
'</div>';
129+
executeTest(template, 'MyInnerController');
130+
});
131+
132+
it('should work for "on" syntax (no viewport)', function () {
133+
var template =
134+
'<div ng-controller="MyTopController">' +
135+
'<div ng-controller="MyInnerController" ng-if="name">' +
136+
'<div ng-controller="MyBottomController" ng-if="name">' +
137+
'<div ui-scroll="item in myMultipageDatasource" adapter="adapter on MyInnerController">' +
138+
'{{$index}}: {{item}}' +
139+
'</div>' +
140+
'</div>' +
141+
'</div>' +
142+
'</div>';
143+
executeTest(template, 'MyInnerController');
144+
});
145+
146+
it('should work for "Controller As" syntax (viewport)', function () {
147+
var template =
148+
'<div ng-controller="MyTopController">' +
149+
'<div ng-controller="MyInnerController as ctrl" ng-if="name">' +
150+
'<div ng-controller="MyBottomController" ng-if="name">' +
151+
'<div ui-scroll-viewport style="height: 200px" ng-if="name">' +
152+
'<div ui-scroll="item in myMultipageDatasource" adapter="ctrl.adapter">' +
153+
'{{$index}}: {{item}}' +
154+
'</div>' +
155+
'</div>' +
156+
'</div>' +
157+
'</div>' +
158+
'</div>';
159+
executeTest(template, 'MyInnerController as ctrl', 'ctrl');
160+
});
161+
162+
it('should work for "Controller As" syntax (no viewport)', function () {
163+
var template =
164+
'<div ng-controller="MyTopController">' +
165+
'<div ng-controller="MyInnerController as ctrl" ng-if="name">' +
166+
'<div ng-controller="MyBottomController" ng-if="name">' +
167+
'<div ui-scroll="item in myMultipageDatasource" adapter="ctrl.adapter">' +
168+
'{{$index}}: {{item}}' +
169+
'</div>' +
170+
'</div>' +
171+
'</div>' +
172+
'</div>';
173+
executeTest(template, 'MyInnerController as ctrl', 'ctrl');
174+
});
175+
});
176+
177+
});

0 commit comments

Comments
 (0)