test(ivy): add compiler.getModuleId support in R3TestBed (#28097)

This update brings `getModuleId` function support to R3TestBed-specific Compiler instance.

PR Close #28097
This commit is contained in:
Andrew Kushnir 2019-01-11 21:19:55 -08:00
parent 9a81f0d9a8
commit da1d19b40f
3 changed files with 38 additions and 34 deletions

View File

@ -634,6 +634,11 @@ export class TestBedRender3 implements Injector, TestBed {
return Object.keys(overrides).length ? {...meta, ...overrides} : meta;
}
/**
* @internal
*/
_getModuleResolver() { return this._resolvers.module; }
/**
* @internal
*/
@ -764,5 +769,8 @@ class R3TestCompiler implements Compiler {
clearCacheFor(type: Type<any>): void {}
getModuleId(moduleType: Type<any>): string|undefined { return undefined; }
getModuleId(moduleType: Type<any>): string|undefined {
const meta = this.testBed._getModuleResolver().resolve(moduleType);
return meta && meta.id || undefined;
}
}

View File

@ -80,20 +80,19 @@ if (isBrowser) {
});
describe('Compiler', () => {
fixmeIvy('FW-855: TestBed.get(Compiler) should return TestBed-specific Compiler instance')
.it('should return NgModule id when asked', () => {
@NgModule({
id: 'test-module',
})
class TestModule {
}
it('should return NgModule id when asked', () => {
@NgModule({
id: 'test-module',
})
class TestModule {
}
TestBed.configureTestingModule({
imports: [TestModule],
});
const compiler = TestBed.get(Compiler) as Compiler;
expect(compiler.getModuleId(TestModule)).toBe('test-module');
});
TestBed.configureTestingModule({
imports: [TestModule],
});
const compiler = TestBed.get(Compiler) as Compiler;
expect(compiler.getModuleId(TestModule)).toBe('test-module');
});
});
describe('errors', () => {

View File

@ -457,28 +457,25 @@ class CompWithUrlTemplate {
expect(TestBed.get('a')).toBe('mockA: depValue');
});
fixmeIvy('FW-855: TestBed.get(Compiler) should return TestBed-specific Compiler instance')
.it('should support SkipSelf', () => {
@NgModule({
providers: [
{provide: 'a', useValue: 'aValue'},
{provide: 'dep', useValue: 'depValue'},
]
})
class MyModule {
}
it('should support SkipSelf', () => {
@NgModule({
providers: [
{provide: 'a', useValue: 'aValue'},
{provide: 'dep', useValue: 'depValue'},
]
})
class MyModule {
}
TestBed.overrideProvider(
'a',
{useFactory: (dep: any) => `mockA: ${dep}`, deps: [[new SkipSelf(), 'dep']]});
TestBed.configureTestingModule(
{providers: [{provide: 'dep', useValue: 'parentDepValue'}]});
TestBed.overrideProvider(
'a', {useFactory: (dep: any) => `mockA: ${dep}`, deps: [[new SkipSelf(), 'dep']]});
TestBed.configureTestingModule(
{providers: [{provide: 'dep', useValue: 'parentDepValue'}]});
const compiler = TestBed.get(Compiler) as Compiler;
const modFactory = compiler.compileModuleSync(MyModule);
expect(modFactory.create(getTestBed()).injector.get('a'))
.toBe('mockA: parentDepValue');
});
const compiler = TestBed.get(Compiler) as Compiler;
const modFactory = compiler.compileModuleSync(MyModule);
expect(modFactory.create(getTestBed()).injector.get('a')).toBe('mockA: parentDepValue');
});
it('should keep imported NgModules eager', () => {
let someModule: SomeModule|undefined;