Skip to content

Commit 5c9e53a

Browse files
committed
chore(testbed): migrate dynamic component loader spec to testcomponentbuilder
Part of angular#2354
1 parent ba9fecd commit 5c9e53a

1 file changed

Lines changed: 82 additions & 76 deletions

File tree

modules/angular2/test/core/compiler/dynamic_component_loader_spec.ts

Lines changed: 82 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ import {
1313
it,
1414
xit,
1515
viewRootNodes,
16-
TestComponentBuilder
16+
TestComponentBuilder,
17+
RootTestComponent,
18+
inspectElement
1719
} from 'angular2/test_lib';
1820

19-
import {TestBed, ViewProxy} from 'angular2/src/test_lib/test_bed';
2021
import {Injector} from 'angular2/di';
2122
import {Component, View, onDestroy} from 'angular2/annotations';
2223
import * as viewAnn from 'angular2/src/core/annotations_impl/view';
@@ -107,98 +108,103 @@ export function main() {
107108
});
108109

109110
describe("loading next to a location", () => {
110-
it('should work',
111-
inject([DynamicComponentLoader, TestBed, AsyncTestCompleter], (loader, tb: TestBed,
112-
async) => {
113-
tb.overrideView(
114-
MyComp,
115-
new viewAnn.View(
116-
{template: '<div><location #loc></location></div>', directives: [Location]}));
117-
118-
tb.createView(MyComp).then((view) => {
119-
var location = view.rawView.locals.get("loc");
120-
121-
loader.loadNextToLocation(DynamicallyLoaded, location.elementRef)
122-
.then(ref => {
123-
expect(view.rootNodes).toHaveText("Location;DynamicallyLoaded;");
124-
async.done();
125-
});
126-
});
127-
}));
111+
it('should work', inject([DynamicComponentLoader, TestComponentBuilder, AsyncTestCompleter],
112+
(loader, tcb: TestComponentBuilder, async) => {
113+
tcb.overrideView(MyComp, new viewAnn.View({
114+
template: '<div><location #loc></location></div>',
115+
directives: [Location]
116+
}))
117+
.createAsync(MyComp)
118+
.then((tc) => {
119+
loader.loadNextToLocation(DynamicallyLoaded, tc.elementRef)
120+
.then(ref => {
121+
expect(tc.domElement).toHaveText("Location;");
122+
expect(DOM.nextSibling(tc.domElement))
123+
.toHaveText('DynamicallyLoaded;');
124+
125+
async.done();
126+
});
127+
});
128+
}));
128129

129130
it('should return a disposable component ref',
130-
inject([DynamicComponentLoader, TestBed, AsyncTestCompleter], (loader, tb: TestBed,
131-
async) => {
132-
tb.overrideView(
133-
MyComp,
134-
new viewAnn.View(
135-
{template: '<div><location #loc></location></div>', directives: [Location]}));
136-
137-
tb.createView(MyComp).then((view) => {
138-
var location = view.rawView.locals.get("loc");
139-
loader.loadNextToLocation(DynamicallyLoaded, location.elementRef)
140-
.then(ref => {
141-
loader.loadNextToLocation(DynamicallyLoaded2, location.elementRef)
142-
.then(ref2 => {
143-
expect(view.rootNodes)
144-
.toHaveText("Location;DynamicallyLoaded;DynamicallyLoaded2;")
145-
146-
ref2.dispose();
147-
148-
expect(view.rootNodes)
149-
.toHaveText("Location;DynamicallyLoaded;")
150-
151-
async.done();
152-
});
153-
});
154-
});
155-
}));
131+
inject([DynamicComponentLoader, TestComponentBuilder, AsyncTestCompleter],
132+
(loader, tcb: TestComponentBuilder, async) => {
133+
tcb.overrideView(MyComp, new viewAnn.View({
134+
template: '<div><location #loc></location></div>',
135+
directives: [Location]
136+
}))
137+
.
138+
139+
createAsync(MyComp)
140+
.then((tc) => {
141+
loader.loadNextToLocation(DynamicallyLoaded, tc.elementRef)
142+
.then(ref => {
143+
loader.loadNextToLocation(DynamicallyLoaded2, tc.elementRef)
144+
.then(ref2 => {
145+
var firstSibling = DOM.nextSibling(tc.domElement);
146+
var secondSibling = DOM.nextSibling(firstSibling);
147+
expect(tc.domElement).toHaveText("Location;");
148+
expect(firstSibling).toHaveText("DynamicallyLoaded;");
149+
expect(secondSibling).toHaveText("DynamicallyLoaded2;");
150+
151+
ref2.dispose();
152+
153+
firstSibling = DOM.nextSibling(tc.domElement);
154+
secondSibling = DOM.nextSibling(firstSibling);
155+
expect(secondSibling).toBeNull();
156+
157+
async.done();
158+
});
159+
});
160+
});
161+
}));
156162

157163
it('should update host properties',
158-
inject([DynamicComponentLoader, TestBed, AsyncTestCompleter], (loader, tb: TestBed,
159-
async) => {
160-
tb.overrideView(
161-
MyComp,
162-
new viewAnn.View(
163-
{template: '<div><location #loc></location></div>', directives: [Location]}));
164-
165-
tb.createView(MyComp).then((view) => {
166-
var location = view.rawView.locals.get("loc");
167-
168-
loader.loadNextToLocation(DynamicallyLoadedWithHostProps, location.elementRef)
169-
.then(ref => {
170-
ref.instance.id = "new value";
171-
172-
view.detectChanges();
173-
174-
var newlyInsertedElement = DOM.childNodesAsList(view.rootNodes[0])[1];
175-
expect(newlyInsertedElement.id)
176-
.toEqual("new value")
177-
178-
async.done();
179-
});
180-
});
181-
}));
164+
inject([DynamicComponentLoader, TestComponentBuilder, AsyncTestCompleter],
165+
(loader, tcb: TestComponentBuilder, async) => {
166+
tcb.overrideView(MyComp, new viewAnn.View({
167+
template: '<div><location #loc></location></div>',
168+
directives: [Location]
169+
}))
170+
171+
.createAsync(MyComp)
172+
.then((tc) => {
173+
174+
loader.loadNextToLocation(DynamicallyLoadedWithHostProps, tc.elementRef)
175+
.then(ref => {
176+
ref.instance.id = "new value";
177+
178+
tc.detectChanges();
179+
180+
var newlyInsertedElement = DOM.nextSibling(tc.domElement);
181+
expect(newlyInsertedElement.id)
182+
.toEqual("new value")
183+
184+
async.done();
185+
});
186+
});
187+
}));
182188
});
183189

184190
describe('loadAsRoot', () => {
185191
it('should allow to create, update and destroy components',
186-
inject([TestBed, AsyncTestCompleter, DynamicComponentLoader, DOCUMENT_TOKEN, Injector],
187-
(tb: TestBed, async, dcl, doc, injector) => {
192+
inject([AsyncTestCompleter, DynamicComponentLoader, DOCUMENT_TOKEN, Injector],
193+
(async, loader, doc, injector) => {
188194
var rootEl = el('<child-cmp></child-cmp>');
189195
DOM.appendChild(doc.body, rootEl);
190-
dcl.loadAsRoot(ChildComp, null, injector)
196+
loader.loadAsRoot(ChildComp, null, injector)
191197
.then((componentRef) => {
192-
var view = new ViewProxy(componentRef);
198+
var el = new RootTestComponent(componentRef);
193199
expect(rootEl.parentNode).toBe(doc.body);
194200

195-
view.detectChanges();
201+
el.detectChanges();
196202

197203
expect(rootEl).toHaveText('hello');
198204

199205
componentRef.instance.ctxProp = 'new';
200206

201-
view.detectChanges();
207+
el.detectChanges();
202208

203209
expect(rootEl).toHaveText('new');
204210

0 commit comments

Comments
 (0)