Skip to content

Commit 6d057f3

Browse files
committed
feat(expect): Move JQuery.text to Expect.toHaveText() and element.text
For dart-archive#219
1 parent 894c98f commit 6d057f3

8 files changed

+127
-120
lines changed

test/_specs.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class Expect {
5151
toBeNotNull() => unit.expect(actual, unit.isNotNull);
5252

5353
toHaveHtml(expected) => unit.expect(_toHtml(actual), unit.equals(expected));
54+
toHaveText(expected) => unit.expect(_elementText(actual), unit.equals(expected));
5455

5556
toHaveBeenCalled() => unit.expect(actual.called, true, reason: 'method not called');
5657
toHaveBeenCalledOnce() => unit.expect(actual.count, 1, reason: 'method invoked ${actual.count} expected once');
@@ -117,6 +118,14 @@ class Expect {
117118
}
118119
}
119120

121+
_elementText(node) {
122+
if (node is List) {
123+
var acc = '';
124+
node.forEach((n) { acc += _elementText(n); });
125+
return acc;
126+
}
127+
return node.text;
128+
}
120129
}
121130

122131
class NotExpect {
@@ -222,7 +231,6 @@ class JQuery extends DelegatingList<Node> {
222231
(n, v) => n.setInnerHtml(v, treeSanitizer: new NullTreeSanitizer()),
223232
html);
224233
val([String text]) => accessor((n) => n.value, (n, v) => n.value = v);
225-
text([String text]) => accessor((n) => n.text, (n, v) => n.text = v, text);
226234
contents() => fold(new JQuery(), (jq, node) => jq..addAll(node.nodes));
227235
eq(num childIndex) => $(this[childIndex]);
228236
remove(_) => forEach((n) => n.remove());

test/_specs_spec.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ main() {
2222
it('should return the shadowRoot if one exists', () {
2323
var elts = $('<div></div>');
2424
elts[0].createShadowRoot().innerHtml = "Hello shadow";
25-
expect(elts.shadowRoot().text()).toEqual("Hello shadow");
25+
expect(elts.shadowRoot()[0].text).toEqual("Hello shadow");
2626
});
2727

2828
it('should return empty list if there is no shadowRoot', () {

test/core_dom/compiler_spec.dart

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ void main() {
4545
beforeEach(inject((TestBed tb) => _ = tb));
4646

4747
it('should compile basic hello world', () {
48-
var element = $(_.compile('<div ng-bind="name"></div>'));
48+
var element = _.compile('<div ng-bind="name"></div>');
4949

5050
_.rootScope.context['name'] = 'angular';
5151

52-
expect(element.text()).toEqual('');
52+
expect(element.text).toEqual('');
5353
_.rootScope.apply();
54-
expect(element.text()).toEqual('angular');
54+
expect(element.text).toEqual('angular');
5555
});
5656

5757
it('should not throw on an empty list', () {
@@ -69,13 +69,13 @@ void main() {
6969
});
7070

7171
it('should compile a directive in a child', () {
72-
var element = $(_.compile('<div><div ng-bind="name"></div></div>'));
72+
var element = _.compile('<div><div ng-bind="name"></div></div>');
7373

7474
_.rootScope.context['name'] = 'angular';
7575

76-
expect(element.text()).toEqual('');
76+
expect(element.text).toEqual('');
7777
_.rootScope.apply();
78-
expect(element.text()).toEqual('angular');
78+
expect(element.text).toEqual('angular');
7979
});
8080

8181
it('should compile repeater', () {
@@ -93,12 +93,12 @@ void main() {
9393
});
9494

9595
it('should compile a text child of a basic repeater', () {
96-
var element = $(_.compile(
96+
var element = _.compile(
9797
'<div ng-show="true">' +
9898
'<span ng-repeat="r in [1, 2]">{{r}}</span>' +
99-
'</div>'));
99+
'</div>');
100100
_.rootScope.apply();
101-
expect(element.text()).toEqual('12');
101+
expect(element.text).toEqual('12');
102102
});
103103

104104
it('should compile a text child of a repeat with a directive', () {
@@ -109,14 +109,14 @@ void main() {
109109
});
110110

111111
it('should compile a sibling template directive', () {
112-
var element = $(_.compile(
112+
var element = _.compile(
113113
'<div ng-model="selected">'
114114
'<option value="">blank</option>'
115115
'<div ng-repeat="value in [1,2]" ng-value="value">{{value}}</div>'
116-
'</div>'));
116+
'</div>');
117117

118118
_.rootScope.apply();
119-
expect(element.text()).toEqual('blank12');
119+
expect(element.text).toEqual('blank12');
120120
});
121121

122122
it('should compile repeater with children', (Compiler $compile) {
@@ -134,26 +134,26 @@ void main() {
134134
});
135135

136136
it('should compile text', (Compiler $compile) {
137-
var element = $(_.compile('<div>{{name}}<span>!</span></div>'));
137+
var element = _.compile('<div>{{name}}<span>!</span></div>');
138138
_.rootScope.context['name'] = 'OK';
139139

140140
microLeap();
141141
_.rootScope.apply();
142-
expect(element.text()).toEqual('OK!');
142+
expect(element.text).toEqual('OK!');
143143
});
144144

145145
it('should compile nested repeater', (Compiler $compile) {
146-
var element = $(_.compile(
146+
var element = _.compile(
147147
'<div>' +
148148
'<ul ng-repeat="lis in uls">' +
149149
'<li ng-repeat="li in lis">{{li}}</li>' +
150150
'</ul>' +
151-
'</div>'));
151+
'</div>');
152152

153153
_.rootScope.context['uls'] = [['A'], ['b']];
154154

155155
_.rootScope.apply();
156-
expect(element.text()).toEqual('Ab');
156+
expect(element.text).toEqual('Ab');
157157
});
158158

159159
it('should compile two directives with the same selector', (Logger log) {
@@ -189,12 +189,12 @@ void main() {
189189
});
190190

191191
it('should interpolate text nodes', () {
192-
var element = $(_.compile('<div>{{name}}</div>'));
192+
var element = _.compile('<div>{{name}}</div>');
193193

194194
_.rootScope.context['name'] = 'angular';
195195

196196
_.rootScope.apply();
197-
expect(element.text()).toEqual('angular');
197+
expect(element.text).toEqual('angular');
198198
});
199199
});
200200

@@ -445,11 +445,11 @@ void main() {
445445
}));
446446

447447
it('should publish directive controller into the scope', async((NgZone zone) {
448-
var element = $(_.compile(r'<div><div publish-me>{{ctrlName.value}}</div></div>'));
448+
var element = _.compile(r'<div><div publish-me>{{ctrlName.value}}</div></div>');
449449

450450
microLeap();
451451
_.rootScope.apply();
452-
expect(element.text()).toEqual('WORKED');
452+
expect(element.text).toEqual('WORKED');
453453
}));
454454

455455
it('should "publish" controller to injector under provided publishTypes', () {

test/core_dom/ng_mustache_spec.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ main() {
1111
beforeEach(inject((TestBed tb) => _ = tb));
1212

1313
it('should replace {{}} in text', inject((Compiler $compile, Scope rootScope, Injector injector, DirectiveMap directives) {
14-
var element = $('<div>{{name}}<span>!</span></div>');
14+
var element = es('<div>{{name}}<span>!</span></div>');
1515
var template = $compile(element, directives);
1616

1717
rootScope.context['name'] = 'OK';
1818
var view = template(injector);
1919

20-
element = $(view.nodes);
20+
element = view.nodes;
2121

2222
rootScope.apply();
23-
expect(element.text()).toEqual('OK!');
23+
expect(element).toHaveText('OK!');
2424
}));
2525

2626

test/core_dom/view_spec.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ main() {
113113
anchor.insert(a);
114114
anchor.insert(b, insertAfter: a);
115115

116-
expect($rootElement.text()).toEqual('AaBb');
116+
expect($rootElement[0].text).toEqual('AaBb');
117117
});
118118

119119
it('should remove the last view', () {
@@ -163,11 +163,11 @@ main() {
163163
// view after the <!--start--> element.
164164
outerAnchor.insert(outterBoundViewFactory(null));
165165

166-
expect($rootElement.text()).toEqual('text');
166+
expect($rootElement[0].text).toEqual('text');
167167

168168
anchor.remove(outerView);
169169

170-
expect($rootElement.text()).toEqual('');
170+
expect($rootElement[0].text).toEqual('');
171171
});
172172
});
173173

@@ -177,7 +177,7 @@ main() {
177177
anchor.insert(a);
178178
anchor.insert(b, insertAfter: a);
179179

180-
expect($rootElement.text()).toEqual('AaBb');
180+
expect($rootElement[0].text).toEqual('AaBb');
181181
});
182182

183183

test/directive/ng_bind_spec.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ main() {
99
beforeEach((TestBed tb) => _ = tb);
1010

1111
it('should set.text', (Scope scope, Injector injector, Compiler compiler, DirectiveMap directives) {
12-
var element = $('<div ng-bind="a"></div>');
13-
compiler(element, directives)(injector, element);
12+
var element = e('<div ng-bind="a"></div>');
13+
compiler([element], directives)(injector, [element]);
1414
scope.context['a'] = "abc123";
1515
scope.apply();
16-
expect(element.text()).toEqual('abc123');
16+
expect(element.text).toEqual('abc123');
1717
});
1818

1919

test/directive/ng_non_bindable_spec.dart

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ main() {
1010

1111
it('should set ignore all other markup/directives on the descendent nodes',
1212
(Scope scope, Injector injector, Compiler compiler, DirectiveMap directives) {
13-
var element = $('<div>' +
13+
Element element = e('<div>' +
1414
' <span id="s1">{{a}}</span>' +
1515
' <span id="s2" ng-bind="b"></span>' +
1616
' <div foo="{{a}}" ng-non-bindable>' +
@@ -19,21 +19,21 @@ main() {
1919
' <span id="s3">{{a}}</span>' +
2020
' <span id="s4" ng-bind="b"></span>' +
2121
'</div>');
22-
compiler(element, directives)(injector, element);
22+
compiler([element], directives)(injector, [element]);
2323
scope.context['a'] = "one";
2424
scope.context['b'] = "two";
2525
scope.apply();
2626
// Bindings not contained by ng-non-bindable should resolve.
27-
expect(element.find("#s1").text().trim()).toEqual('one');
28-
expect(element.find("#s2").text().trim()).toEqual('two');
29-
expect(element.find("#s3").text().trim()).toEqual('one');
30-
expect(element.find("#s4").text().trim()).toEqual('two');
27+
expect(element.querySelector("#s1").text.trim()).toEqual('one');
28+
expect(element.querySelector("#s2").text.trim()).toEqual('two');
29+
expect(element.querySelector("#s3").text.trim()).toEqual('one');
30+
expect(element.querySelector("#s4").text.trim()).toEqual('two');
3131
// Bindings contained by ng-non-bindable should be left alone.
32-
var nonBindableDiv = element.find("div");
33-
expect(nonBindableDiv[0]).toHaveHtml('<span ng-bind="a"></span>{{b}}');
34-
expect(nonBindableDiv.text().trim()).toEqual('{{b}}');
32+
var nonBindableDiv = element.querySelector("div");
33+
expect(nonBindableDiv).toHaveHtml('<span ng-bind="a"></span>{{b}}');
34+
expect(nonBindableDiv.text.trim()).toEqual('{{b}}');
3535
// Bindings on the same node are processed.
36-
expect(nonBindableDiv.attr('foo')).toEqual('one');
36+
expect(nonBindableDiv.attributes['foo']).toEqual('one');
3737
});
3838
});
3939
}

0 commit comments

Comments
 (0)