diff --git a/packages/@lwc/integration-karma/test/component/default-export/index.spec.js b/packages/@lwc/integration-karma/test/component/default-export/index.spec.js index 6c7410b8cd..7849553f37 100644 --- a/packages/@lwc/integration-karma/test/component/default-export/index.spec.js +++ b/packages/@lwc/integration-karma/test/component/default-export/index.spec.js @@ -1,6 +1,13 @@ import Component from 'x/component'; import { createElement } from 'lwc'; import { extractDataIds } from 'test-utils'; +import ExportAsDefault from 'x/exportAsDefault'; +import ExportAsDefaultWithOtherExports, { + exportee as exporteeAsDefault, +} from 'x/exportAsDefaultWithOtherExports'; +import ExportDefaultClassWithOtherExports, { + exportee as exporteeDefaultClass, +} from 'x/exportDefaultClassWithOtherExports'; describe('default export', () => { it('should work when a module exports non-components as default', () => { @@ -13,4 +20,33 @@ describe('default export', () => { expect(nodes.zero.textContent).toEqual('0'); expect(nodes.string.textContent).toEqual('"bar"'); }); + + it('should work with `export default class` syntax and other exports', async () => { + expect(exporteeDefaultClass).toBe('foo'); + const elm = createElement('x-export-default-class-with-other-exports', { + is: ExportDefaultClassWithOtherExports, + }); + document.body.appendChild(elm); + await Promise.resolve(); + expect(elm.shadowRoot.querySelector('h1').textContent).toBe('hello world'); + }); + + // TODO [#4020]: support additional syntax for default export + xit('should work with `export { ... as default }` syntax', async () => { + const elm = createElement('x-export-as-default', { is: ExportAsDefault }); + document.body.appendChild(elm); + await Promise.resolve(); + expect(elm.shadowRoot.querySelector('h1').textContent).toBe('hello world'); + }); + + // TODO [#4020]: support additional syntax for default export + xit('should work with `export { ... as default }` syntax and other exports', async () => { + expect(exporteeAsDefault).toBe('foo'); + const elm = createElement('x-export-as-default-with-other-exports', { + is: ExportAsDefaultWithOtherExports, + }); + document.body.appendChild(elm); + await Promise.resolve(); + expect(elm.shadowRoot.querySelector('h1').textContent).toBe('hello world'); + }); }); diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.html b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.html new file mode 100644 index 0000000000..c60ec17d7c --- /dev/null +++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.html @@ -0,0 +1,3 @@ + diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.js b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.js new file mode 100644 index 0000000000..8d30934569 --- /dev/null +++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.js @@ -0,0 +1,5 @@ +import { LightningElement } from 'lwc'; + +class ExportAsDefault extends LightningElement {} + +export { ExportAsDefault as default }; diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.html b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.html new file mode 100644 index 0000000000..c60ec17d7c --- /dev/null +++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.html @@ -0,0 +1,3 @@ + diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.js b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.js new file mode 100644 index 0000000000..dd0a5d7de9 --- /dev/null +++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.js @@ -0,0 +1,7 @@ +import { LightningElement } from 'lwc'; + +const exportee = 'foo'; + +class ExportAsDefaultWithOtherExports extends LightningElement {} + +export { ExportAsDefaultWithOtherExports as default, exportee }; diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.html b/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.html new file mode 100644 index 0000000000..c60ec17d7c --- /dev/null +++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.html @@ -0,0 +1,3 @@ + diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.js b/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.js new file mode 100644 index 0000000000..0f3b33f578 --- /dev/null +++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.js @@ -0,0 +1,7 @@ +import { LightningElement } from 'lwc'; + +const exportee = 'foo'; + +export default class ExportDefaultClassWithOtherExports extends LightningElement {} + +export { exportee };