From 39a6f85e9521ff1154f11b762a460e704a7460c1 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Mon, 17 Aug 2015 11:43:14 -0700 Subject: [PATCH] test(TestComponentBuilder): add tests for overriding child component's directive --- .../src/mock/directive_resolver_mock.ts | 0 .../test_lib/test_component_builder_spec.ts | 35 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 modules/angular2/src/mock/directive_resolver_mock.ts diff --git a/modules/angular2/src/mock/directive_resolver_mock.ts b/modules/angular2/src/mock/directive_resolver_mock.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/angular2/test/test_lib/test_component_builder_spec.ts b/modules/angular2/test/test_lib/test_component_builder_spec.ts index 8ba7c38651..911f140be8 100644 --- a/modules/angular2/test/test_lib/test_component_builder_spec.ts +++ b/modules/angular2/test/test_lib/test_component_builder_spec.ts @@ -45,6 +45,26 @@ class MyIfComp { showMore: boolean = false; } +@Component({selector: 'child-child-comp'}) +@View({template: `ChildChild`}) +@Injectable() +class ChildChildComp {} + +@Component({selector: 'child-comp'}) +@View({template: `Original {{childBinding}}()`, + directives: [ChildChildComp]}) +@Injectable() +class ChildWithChildComp { + childBinding: string; + constructor() { this.childBinding = 'Child'; } +} + +@Component({selector: 'child-child-comp'}) +@View({template: `ChildChild Mock`}) +@Injectable() +class MockChildChildComp {} + + export function main() { describe('test component builder', function() { it('should instantiate a component with valid DOM', @@ -112,5 +132,20 @@ export function main() { async.done(); }); })); + + + it("should override child component's dependencies", + inject([TestComponentBuilder, AsyncTestCompleter], (tcb, async) => { + + tcb.overrideDirective(ParentComp, ChildComp, ChildWithChildComp) + .overrideDirective(ChildWithChildComp, ChildChildComp, MockChildChildComp) + .createAsync(ParentComp) + .then((rootTestComponent) => { + rootTestComponent.detectChanges(); + expect(rootTestComponent.nativeElement).toHaveText('Parent(Original Child(ChildChild Mock))'); + + async.done(); + }); + })); }); }