Skip to content

Commit ef3e12e

Browse files
ttowncompiledtbosch
authored andcommitted
refactor (test/directives): ts'ify test/directives
Translate all of the AtScript code in .../test/directives to TypeScript. Closes angular#2167
1 parent 5fe88d6 commit ef3e12e

File tree

10 files changed

+845
-820
lines changed

10 files changed

+845
-820
lines changed

modules/angular2/test/directives/class_spec.js

Lines changed: 0 additions & 152 deletions
This file was deleted.
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
import {
2+
AsyncTestCompleter,
3+
beforeEach,
4+
beforeEachBindings,
5+
ddescribe,
6+
xdescribe,
7+
describe,
8+
el,
9+
expect,
10+
iit,
11+
inject,
12+
it,
13+
xit,
14+
} from 'angular2/test_lib';
15+
16+
import {StringMapWrapper} from 'angular2/src/facade/collection';
17+
18+
import {Component, View} from 'angular2/angular2';
19+
20+
import {TestBed} from 'angular2/src/test_lib/test_bed';
21+
22+
import {CSSClass} from 'angular2/src/directives/class';
23+
24+
export function main() {
25+
describe('binding to CSS class list', () => {
26+
27+
it('should add classes specified in an object literal',
28+
inject([TestBed, AsyncTestCompleter], (tb, async) => {
29+
var template = '<div [class]="{foo: true, bar: false}"></div>';
30+
31+
tb.createView(TestComponent, {html: template})
32+
.then((view) => {
33+
view.detectChanges();
34+
expect(view.rootNodes[0].className).toEqual('ng-binding foo');
35+
36+
async.done();
37+
});
38+
}));
39+
40+
it('should add and remove classes based on changes in object literal values',
41+
inject([TestBed, AsyncTestCompleter], (tb, async) => {
42+
var template = '<div [class]="{foo: condition, bar: !condition}"></div>';
43+
44+
tb.createView(TestComponent, {html: template})
45+
.then((view) => {
46+
view.detectChanges();
47+
expect(view.rootNodes[0].className).toEqual('ng-binding foo');
48+
49+
view.context.condition = false;
50+
view.detectChanges();
51+
expect(view.rootNodes[0].className).toEqual('ng-binding bar');
52+
53+
async.done();
54+
});
55+
}));
56+
57+
it('should add and remove classes based on changes to the expression object',
58+
inject([TestBed, AsyncTestCompleter], (tb, async) => {
59+
var template = '<div [class]="expr"></div>';
60+
61+
tb.createView(TestComponent, {html: template})
62+
.then((view) => {
63+
view.detectChanges();
64+
expect(view.rootNodes[0].className).toEqual('ng-binding foo');
65+
66+
StringMapWrapper.set(view.context.expr, 'bar', true);
67+
view.detectChanges();
68+
expect(view.rootNodes[0].className).toEqual('ng-binding foo bar');
69+
70+
StringMapWrapper.set(view.context.expr, 'baz', true);
71+
view.detectChanges();
72+
expect(view.rootNodes[0].className).toEqual('ng-binding foo bar baz');
73+
74+
StringMapWrapper.delete(view.context.expr, 'bar');
75+
view.detectChanges();
76+
expect(view.rootNodes[0].className).toEqual('ng-binding foo baz');
77+
78+
async.done();
79+
});
80+
}));
81+
82+
it('should retain existing classes when expression evaluates to null',
83+
inject([TestBed, AsyncTestCompleter], (tb, async) => {
84+
var template = '<div [class]="expr"></div>';
85+
86+
tb.createView(TestComponent, {html: template})
87+
.then((view) => {
88+
view.detectChanges();
89+
expect(view.rootNodes[0].className).toEqual('ng-binding foo');
90+
91+
view.context.expr = null;
92+
view.detectChanges();
93+
expect(view.rootNodes[0].className).toEqual('ng-binding foo');
94+
95+
view.context.expr = {
96+
'foo': false,
97+
'bar': true
98+
};
99+
view.detectChanges();
100+
expect(view.rootNodes[0].className).toEqual('ng-binding bar');
101+
102+
async.done();
103+
});
104+
}));
105+
106+
it('should co-operate with the class attribute',
107+
inject([TestBed, AsyncTestCompleter], (tb, async) => {
108+
var template = '<div [class]="expr" class="init foo"></div>';
109+
110+
tb.createView(TestComponent, {html: template})
111+
.then((view) => {
112+
StringMapWrapper.set(view.context.expr, 'bar', true);
113+
view.detectChanges();
114+
expect(view.rootNodes[0].className).toEqual('init foo ng-binding bar');
115+
116+
StringMapWrapper.set(view.context.expr, 'foo', false);
117+
view.detectChanges();
118+
expect(view.rootNodes[0].className).toEqual('init ng-binding bar');
119+
120+
async.done();
121+
});
122+
}));
123+
124+
it('should co-operate with the class attribute and class.name binding',
125+
inject([TestBed, AsyncTestCompleter], (tb, async) => {
126+
var template = '<div class="init foo" [class]="expr" [class.baz]="condition"></div>';
127+
128+
tb.createView(TestComponent, {html: template})
129+
.then((view) => {
130+
view.detectChanges();
131+
expect(view.rootNodes[0].className).toEqual('init foo ng-binding baz');
132+
133+
StringMapWrapper.set(view.context.expr, 'bar', true);
134+
view.detectChanges();
135+
expect(view.rootNodes[0].className).toEqual('init foo ng-binding baz bar');
136+
137+
StringMapWrapper.set(view.context.expr, 'foo', false);
138+
view.detectChanges();
139+
expect(view.rootNodes[0].className).toEqual('init ng-binding baz bar');
140+
141+
view.context.condition = false;
142+
view.detectChanges();
143+
expect(view.rootNodes[0].className).toEqual('init ng-binding bar');
144+
145+
async.done();
146+
});
147+
}));
148+
})
149+
}
150+
151+
@Component({selector: 'test-cmp'})
152+
@View({directives: [CSSClass]})
153+
class TestComponent {
154+
condition: boolean;
155+
expr;
156+
constructor() {
157+
this.condition = true;
158+
this.expr = {'foo': true, 'bar': false};
159+
}
160+
}

0 commit comments

Comments
 (0)