test(ivy): @Injectable is required on type providers (#28331)
PR Close #28331
This commit is contained in:
parent
7033f39c61
commit
fd8dbd5e40
@ -11,7 +11,6 @@ ts_library(
|
|||||||
"//packages/platform-browser",
|
"//packages/platform-browser",
|
||||||
"//packages/platform-browser-dynamic",
|
"//packages/platform-browser-dynamic",
|
||||||
"//packages/platform-browser/testing",
|
"//packages/platform-browser/testing",
|
||||||
"//packages/private/testing",
|
|
||||||
"//packages/upgrade",
|
"//packages/upgrade",
|
||||||
"//packages/upgrade/static",
|
"//packages/upgrade/static",
|
||||||
"@rxjs",
|
"@rxjs",
|
||||||
|
@ -10,7 +10,6 @@ import {Component, Directive, ElementRef, Injector, Input, NgModule, NgZone, Sim
|
|||||||
import {async} from '@angular/core/testing';
|
import {async} from '@angular/core/testing';
|
||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
import {fixmeIvy} from '@angular/private/testing';
|
|
||||||
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
||||||
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ import {Component, Directive, ElementRef, Injector, Input, NgModule, destroyPlat
|
|||||||
import {async} from '@angular/core/testing';
|
import {async} from '@angular/core/testing';
|
||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
import {fixmeIvy} from '@angular/private/testing';
|
|
||||||
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
||||||
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ import {ChangeDetectionStrategy, ChangeDetectorRef, Compiler, Component, Compone
|
|||||||
import {async, fakeAsync, tick} from '@angular/core/testing';
|
import {async, fakeAsync, tick} from '@angular/core/testing';
|
||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
import {fixmeIvy} from '@angular/private/testing';
|
|
||||||
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
||||||
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ import {async, fakeAsync, tick} from '@angular/core/testing';
|
|||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
|
import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
|
||||||
import {fixmeIvy} from '@angular/private/testing';
|
|
||||||
import {UpgradeComponent, downgradeComponent, downgradeModule} from '@angular/upgrade/static';
|
import {UpgradeComponent, downgradeComponent, downgradeModule} from '@angular/upgrade/static';
|
||||||
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
||||||
import {$EXCEPTION_HANDLER, $ROOT_SCOPE, INJECTOR_KEY, LAZY_MODULE_REF} from '@angular/upgrade/static/src/common/constants';
|
import {$EXCEPTION_HANDLER, $ROOT_SCOPE, INJECTOR_KEY, LAZY_MODULE_REF} from '@angular/upgrade/static/src/common/constants';
|
||||||
@ -590,64 +589,63 @@ withEachNg1Version(() => {
|
|||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
fixmeIvy('FW-718: upgraded service not being initialized correctly on the injector')
|
it('should support using an upgraded service', async(() => {
|
||||||
.it('should support using an upgraded service', async(() => {
|
@Injectable()
|
||||||
class Ng2Service {
|
class Ng2Service {
|
||||||
constructor(@Inject('ng1Value') private ng1Value: string) {}
|
constructor(@Inject('ng1Value') private ng1Value: string) {}
|
||||||
getValue = () => `${this.ng1Value}-bar`;
|
getValue = () => `${this.ng1Value}-bar`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({selector: 'ng2', template: '{{ value }}'})
|
@Component({selector: 'ng2', template: '{{ value }}'})
|
||||||
class Ng2Component {
|
class Ng2Component {
|
||||||
value: string;
|
value: string;
|
||||||
constructor(ng2Service: Ng2Service) { this.value = ng2Service.getValue(); }
|
constructor(ng2Service: Ng2Service) { this.value = ng2Service.getValue(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [Ng2Component],
|
declarations: [Ng2Component],
|
||||||
entryComponents: [Ng2Component],
|
entryComponents: [Ng2Component],
|
||||||
imports: [BrowserModule],
|
imports: [BrowserModule],
|
||||||
providers: [
|
providers: [
|
||||||
Ng2Service,
|
Ng2Service,
|
||||||
{
|
{
|
||||||
provide: 'ng1Value',
|
provide: 'ng1Value',
|
||||||
useFactory: (i: angular.IInjectorService) => i.get('ng1Value'),
|
useFactory: (i: angular.IInjectorService) => i.get('ng1Value'),
|
||||||
deps: ['$injector'],
|
deps: ['$injector'],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
class Ng2Module {
|
class Ng2Module {
|
||||||
ngDoBootstrap() {}
|
ngDoBootstrap() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
const bootstrapFn = (extraProviders: StaticProvider[]) =>
|
const bootstrapFn = (extraProviders: StaticProvider[]) =>
|
||||||
platformBrowserDynamic(extraProviders).bootstrapModule(Ng2Module);
|
platformBrowserDynamic(extraProviders).bootstrapModule(Ng2Module);
|
||||||
const lazyModuleName = downgradeModule<Ng2Module>(bootstrapFn);
|
const lazyModuleName = downgradeModule<Ng2Module>(bootstrapFn);
|
||||||
const ng1Module =
|
const ng1Module =
|
||||||
angular.module('ng1', [lazyModuleName])
|
angular.module('ng1', [lazyModuleName])
|
||||||
.directive(
|
.directive('ng2', downgradeComponent({component: Ng2Component, propagateDigest}))
|
||||||
'ng2', downgradeComponent({component: Ng2Component, propagateDigest}))
|
.value('ng1Value', 'foo');
|
||||||
.value('ng1Value', 'foo');
|
|
||||||
|
|
||||||
const element = html('<div><ng2 ng-if="loadNg2"></ng2></div>');
|
const element = html('<div><ng2 ng-if="loadNg2"></ng2></div>');
|
||||||
const $injector = angular.bootstrap(element, [ng1Module.name]);
|
const $injector = angular.bootstrap(element, [ng1Module.name]);
|
||||||
const $rootScope = $injector.get($ROOT_SCOPE) as angular.IRootScopeService;
|
const $rootScope = $injector.get($ROOT_SCOPE) as angular.IRootScopeService;
|
||||||
|
|
||||||
expect(element.textContent).toBe('');
|
expect(element.textContent).toBe('');
|
||||||
expect(() => $injector.get(INJECTOR_KEY)).toThrowError();
|
expect(() => $injector.get(INJECTOR_KEY)).toThrowError();
|
||||||
|
|
||||||
$rootScope.$apply('loadNg2 = true');
|
$rootScope.$apply('loadNg2 = true');
|
||||||
expect(element.textContent).toBe('');
|
expect(element.textContent).toBe('');
|
||||||
expect(() => $injector.get(INJECTOR_KEY)).toThrowError();
|
expect(() => $injector.get(INJECTOR_KEY)).toThrowError();
|
||||||
|
|
||||||
// Wait for the module to be bootstrapped.
|
// Wait for the module to be bootstrapped.
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
expect(() => $injector.get(INJECTOR_KEY)).not.toThrow();
|
expect(() => $injector.get(INJECTOR_KEY)).not.toThrow();
|
||||||
|
|
||||||
// Wait for `$evalAsync()` to propagate inputs.
|
// Wait for `$evalAsync()` to propagate inputs.
|
||||||
setTimeout(() => expect(element.textContent).toBe('foo-bar'));
|
setTimeout(() => expect(element.textContent).toBe('foo-bar'));
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should create components inside the Angular zone', async(() => {
|
it('should create components inside the Angular zone', async(() => {
|
||||||
@Component({selector: 'ng2', template: 'In the zone: {{ inTheZone }}'})
|
@Component({selector: 'ng2', template: 'In the zone: {{ inTheZone }}'})
|
||||||
|
@ -10,7 +10,6 @@ import {Component, Directive, ElementRef, Injector, Input, NgModule, destroyPlat
|
|||||||
import {async} from '@angular/core/testing';
|
import {async} from '@angular/core/testing';
|
||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
import {fixmeIvy} from '@angular/private/testing';
|
|
||||||
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
||||||
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ import {Component, Directive, ElementRef, ErrorHandler, EventEmitter, Inject, In
|
|||||||
import {async, fakeAsync, tick} from '@angular/core/testing';
|
import {async, fakeAsync, tick} from '@angular/core/testing';
|
||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
import {fixmeIvy} from '@angular/private/testing';
|
|
||||||
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
import {UpgradeComponent, UpgradeModule, downgradeComponent} from '@angular/upgrade/static';
|
||||||
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
import * as angular from '@angular/upgrade/static/src/common/angular1';
|
||||||
import {$EXCEPTION_HANDLER, $SCOPE} from '@angular/upgrade/static/src/common/constants';
|
import {$EXCEPTION_HANDLER, $SCOPE} from '@angular/upgrade/static/src/common/constants';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user