test(ngcc): add missing `UmdReflectionHost#getExportsOfModule()` tests (#35312)
Support for re-exports in UMD were added in e9fb5fdb8
. This commit adds
some tests for re-exports (similar to the ones used for
`CommonJsReflectionHost`).
PR Close #35312
This commit is contained in:
parent
dcb8d6740e
commit
5f57376899
|
@ -1919,6 +1919,63 @@ runInEachFileSystem(() => {
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should handle wildcard re-exports of other modules (with emitted helpers)', () => {
|
||||||
|
loadFakeCore(getFileSystem());
|
||||||
|
loadTestFiles(EXPORTS_FILES);
|
||||||
|
const bundle = makeTestBundleProgram(_('/index.js'));
|
||||||
|
const host = new UmdReflectionHost(new MockLogger(), false, bundle);
|
||||||
|
const file = getSourceFileOrError(bundle.program, _('/wildcard_reexports.js'));
|
||||||
|
const exportDeclarations = host.getExportsOfModule(file);
|
||||||
|
expect(exportDeclarations).not.toBe(null);
|
||||||
|
expect(Array.from(exportDeclarations !.entries())
|
||||||
|
.map(entry => [entry[0], entry[1].node !.getText(), entry[1].viaModule]))
|
||||||
|
.toEqual([
|
||||||
|
['Directive', `Directive: FnWithArg<(clazz: any) => any>`, _('/b_module')],
|
||||||
|
['a', `a = 'a'`, _('/b_module')],
|
||||||
|
['b', `b = a_module.a`, _('/b_module')],
|
||||||
|
['c', `a = 'a'`, _('/b_module')],
|
||||||
|
['d', `b = a_module.a`, _('/b_module')],
|
||||||
|
['e', `e = 'e'`, _('/b_module')],
|
||||||
|
['DirectiveX', `Directive: FnWithArg<(clazz: any) => any>`, _('/b_module')],
|
||||||
|
[
|
||||||
|
'SomeClass',
|
||||||
|
`SomeClass = (function() {\n function SomeClass() {}\n return SomeClass;\n }())`,
|
||||||
|
_('/b_module')
|
||||||
|
],
|
||||||
|
['xtra1', `xtra1 = 'xtra1'`, _('/xtra_module')],
|
||||||
|
['xtra2', `xtra2 = 'xtra2'`, _('/xtra_module')],
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle wildcard re-exports of other modules (with imported helpers)', () => {
|
||||||
|
loadFakeCore(getFileSystem());
|
||||||
|
loadTestFiles(EXPORTS_FILES);
|
||||||
|
const bundle = makeTestBundleProgram(_('/index.js'));
|
||||||
|
const host = new UmdReflectionHost(new MockLogger(), false, bundle);
|
||||||
|
const file =
|
||||||
|
getSourceFileOrError(bundle.program, _('/wildcard_reexports_imported_helpers.js'));
|
||||||
|
const exportDeclarations = host.getExportsOfModule(file);
|
||||||
|
expect(exportDeclarations).not.toBe(null);
|
||||||
|
expect(Array.from(exportDeclarations !.entries())
|
||||||
|
.map(entry => [entry[0], entry[1].node !.getText(), entry[1].viaModule]))
|
||||||
|
.toEqual([
|
||||||
|
['Directive', `Directive: FnWithArg<(clazz: any) => any>`, _('/b_module')],
|
||||||
|
['a', `a = 'a'`, _('/b_module')],
|
||||||
|
['b', `b = a_module.a`, _('/b_module')],
|
||||||
|
['c', `a = 'a'`, _('/b_module')],
|
||||||
|
['d', `b = a_module.a`, _('/b_module')],
|
||||||
|
['e', `e = 'e'`, _('/b_module')],
|
||||||
|
['DirectiveX', `Directive: FnWithArg<(clazz: any) => any>`, _('/b_module')],
|
||||||
|
[
|
||||||
|
'SomeClass',
|
||||||
|
`SomeClass = (function() {\n function SomeClass() {}\n return SomeClass;\n }())`,
|
||||||
|
_('/b_module')
|
||||||
|
],
|
||||||
|
['xtra1', `xtra1 = 'xtra1'`, _('/xtra_module')],
|
||||||
|
['xtra2', `xtra2 = 'xtra2'`, _('/xtra_module')],
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
it('should handle inline exports', () => {
|
it('should handle inline exports', () => {
|
||||||
loadFakeCore(getFileSystem());
|
loadFakeCore(getFileSystem());
|
||||||
loadTestFiles([INLINE_EXPORT_FILE]);
|
loadTestFiles([INLINE_EXPORT_FILE]);
|
||||||
|
@ -1932,17 +1989,6 @@ runInEachFileSystem(() => {
|
||||||
expect(decl.node).toBeNull();
|
expect(decl.node).toBeNull();
|
||||||
expect(decl.expression).toBeDefined();
|
expect(decl.expression).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Currently we do not support UMD versions of `export * from 'x';`
|
|
||||||
// because it gets compiled to something like:
|
|
||||||
//
|
|
||||||
// __export(m) {
|
|
||||||
// for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
|
||||||
// }
|
|
||||||
// __export(x);
|
|
||||||
//
|
|
||||||
// So far all UMD formatted entry-points are flat so this should not occur.
|
|
||||||
// If it does later then we should implement parsing.
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('getClassSymbol()', () => {
|
describe('getClassSymbol()', () => {
|
||||||
|
|
Loading…
Reference in New Issue