From b707b7cb1edc201185a05d67899b35c54530c795 Mon Sep 17 00:00:00 2001 From: Austin Green Date: Wed, 5 Dec 2018 14:12:36 -0800 Subject: [PATCH 1/5] chore: add export testing to all packages --- package.json | 1 + packages/autocomplete/src/index.spec.js | 27 ++++++++++++++++++++++ packages/avatars/src/index.spec.js | 27 ++++++++++++++++++++++ packages/breadcrumbs/src/index.spec.js | 27 ++++++++++++++++++++++ packages/buttons/src/index.spec.js | 27 ++++++++++++++++++++++ packages/checkboxes/src/index.spec.js | 27 ++++++++++++++++++++++ packages/chrome/src/index.spec.js | 27 ++++++++++++++++++++++ packages/grid/src/index.spec.js | 27 ++++++++++++++++++++++ packages/loaders/src/index.spec.js | 27 ++++++++++++++++++++++ packages/menus/src/index.spec.js | 27 ++++++++++++++++++++++ packages/modals/src/index.spec.js | 27 ++++++++++++++++++++++ packages/notifications/src/index.spec.js | 27 ++++++++++++++++++++++ packages/pagination/src/index.spec.js | 27 ++++++++++++++++++++++ packages/radios/src/index.spec.js | 27 ++++++++++++++++++++++ packages/ranges/src/index.spec.js | 27 ++++++++++++++++++++++ packages/select/src/index.spec.js | 27 ++++++++++++++++++++++ packages/selection/src/index.spec.js | 27 ++++++++++++++++++++++ packages/tables/src/index.spec.js | 27 ++++++++++++++++++++++ packages/tabs/src/index.spec.js | 27 ++++++++++++++++++++++ packages/tags/src/index.spec.js | 27 ++++++++++++++++++++++ packages/testing/src/index.spec.js | 27 ++++++++++++++++++++++ packages/textfields/src/index.spec.js | 27 ++++++++++++++++++++++ packages/theming/src/index.spec.js | 27 ++++++++++++++++++++++ packages/toggles/src/index.spec.js | 27 ++++++++++++++++++++++ packages/tooltips/src/index.spec.js | 29 ++++++++++++++++++++++++ packages/typography/src/index.spec.js | 27 ++++++++++++++++++++++ packages/utilities/src/index.spec.js | 27 ++++++++++++++++++++++ yarn.lock | 3 ++- 28 files changed, 707 insertions(+), 1 deletion(-) create mode 100644 packages/autocomplete/src/index.spec.js create mode 100644 packages/avatars/src/index.spec.js create mode 100644 packages/breadcrumbs/src/index.spec.js create mode 100644 packages/buttons/src/index.spec.js create mode 100644 packages/checkboxes/src/index.spec.js create mode 100644 packages/chrome/src/index.spec.js create mode 100644 packages/grid/src/index.spec.js create mode 100644 packages/loaders/src/index.spec.js create mode 100644 packages/menus/src/index.spec.js create mode 100644 packages/modals/src/index.spec.js create mode 100644 packages/notifications/src/index.spec.js create mode 100644 packages/pagination/src/index.spec.js create mode 100644 packages/radios/src/index.spec.js create mode 100644 packages/ranges/src/index.spec.js create mode 100644 packages/select/src/index.spec.js create mode 100644 packages/selection/src/index.spec.js create mode 100644 packages/tables/src/index.spec.js create mode 100644 packages/tabs/src/index.spec.js create mode 100644 packages/tags/src/index.spec.js create mode 100644 packages/testing/src/index.spec.js create mode 100644 packages/textfields/src/index.spec.js create mode 100644 packages/theming/src/index.spec.js create mode 100644 packages/toggles/src/index.spec.js create mode 100644 packages/tooltips/src/index.spec.js create mode 100644 packages/typography/src/index.spec.js create mode 100644 packages/utilities/src/index.spec.js diff --git a/package.json b/package.json index aa4b6ca05b2..bc35ac591ec 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "fs-extra": "7.0.1", "gh-pages": "2.0.1", "github-markdown-css": "2.10.0", + "glob": "7.1.3", "handlebars": "4.0.12", "handlebars-helpers": "0.10.0", "html-loader": "0.5.5", diff --git a/packages/autocomplete/src/index.spec.js b/packages/autocomplete/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/autocomplete/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/avatars/src/index.spec.js b/packages/avatars/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/avatars/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/breadcrumbs/src/index.spec.js b/packages/breadcrumbs/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/breadcrumbs/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/buttons/src/index.spec.js b/packages/buttons/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/buttons/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/checkboxes/src/index.spec.js b/packages/checkboxes/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/checkboxes/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/chrome/src/index.spec.js b/packages/chrome/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/chrome/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/grid/src/index.spec.js b/packages/grid/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/grid/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/loaders/src/index.spec.js b/packages/loaders/src/index.spec.js new file mode 100644 index 00000000000..a1e2e7b507e --- /dev/null +++ b/packages/loaders/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('[A-Z]!(*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/menus/src/index.spec.js b/packages/menus/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/menus/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/modals/src/index.spec.js b/packages/modals/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/modals/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/notifications/src/index.spec.js b/packages/notifications/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/notifications/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/pagination/src/index.spec.js b/packages/pagination/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/pagination/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/radios/src/index.spec.js b/packages/radios/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/radios/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/ranges/src/index.spec.js b/packages/ranges/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/ranges/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/select/src/index.spec.js b/packages/select/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/select/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/selection/src/index.spec.js b/packages/selection/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/selection/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/tables/src/index.spec.js b/packages/tables/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/tables/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/tabs/src/index.spec.js b/packages/tabs/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/tabs/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/tags/src/index.spec.js b/packages/tags/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/tags/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/testing/src/index.spec.js b/packages/testing/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/testing/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/textfields/src/index.spec.js b/packages/textfields/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/textfields/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/theming/src/index.spec.js b/packages/theming/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/theming/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/toggles/src/index.spec.js b/packages/toggles/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/toggles/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/tooltips/src/index.spec.js b/packages/tooltips/src/index.spec.js new file mode 100644 index 00000000000..2f0c4b436d9 --- /dev/null +++ b/packages/tooltips/src/index.spec.js @@ -0,0 +1,29 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; +import * as gardenPlacements from './utils/gardenPlacements'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/[A-Z]!(*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .concat(Object.keys(gardenPlacements)) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/typography/src/index.spec.js b/packages/typography/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/typography/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/packages/utilities/src/index.spec.js b/packages/utilities/src/index.spec.js new file mode 100644 index 00000000000..16b30e42e4d --- /dev/null +++ b/packages/utilities/src/index.spec.js @@ -0,0 +1,27 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', done => { + glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { + const mappedFiles = files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); + + expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); + done(); + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index 9365f000d4f..b4ad60c4b74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5194,9 +5194,10 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2: +glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" From 32a5968b591b0b78fff384ae75f3af6513f17ced Mon Sep 17 00:00:00 2001 From: Austin Green Date: Thu, 6 Dec 2018 08:35:47 -0800 Subject: [PATCH 2/5] Refactor matchExports to react-testing library --- package.json | 1 - packages/autocomplete/src/index.spec.js | 18 ++------ packages/avatars/src/index.spec.js | 18 ++------ packages/breadcrumbs/src/index.spec.js | 18 ++------ packages/buttons/src/index.spec.js | 18 ++------ packages/checkboxes/src/index.spec.js | 18 ++------ packages/chrome/src/index.spec.js | 18 ++------ packages/grid/src/index.spec.js | 18 ++------ packages/loaders/src/index.spec.js | 20 +++------ packages/menus/src/index.spec.js | 18 ++------ packages/modals/src/index.spec.js | 18 ++------ packages/notifications/src/index.spec.js | 18 ++------ packages/pagination/src/index.spec.js | 18 ++------ packages/radios/src/index.spec.js | 18 ++------ packages/ranges/src/index.spec.js | 18 ++------ packages/select/src/index.spec.js | 18 ++------ packages/selection/src/index.spec.js | 18 ++------ packages/tables/src/index.spec.js | 18 ++------ packages/tabs/src/index.spec.js | 18 ++------ packages/tags/src/index.spec.js | 18 ++------ packages/testing/package.json | 3 +- packages/testing/src/index.js | 1 + packages/testing/src/index.spec.js | 18 ++------ packages/testing/src/utils/matchExports.js | 49 ++++++++++++++++++++++ packages/textfields/src/index.spec.js | 18 ++------ packages/theming/src/index.spec.js | 18 ++------ packages/toggles/src/index.spec.js | 18 ++------ packages/tooltips/src/index.spec.js | 32 +++++++------- packages/typography/src/index.spec.js | 18 ++------ packages/utilities/src/index.spec.js | 18 ++------ yarn.lock | 2 +- 31 files changed, 148 insertions(+), 392 deletions(-) create mode 100644 packages/testing/src/utils/matchExports.js diff --git a/package.json b/package.json index bc35ac591ec..aa4b6ca05b2 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,6 @@ "fs-extra": "7.0.1", "gh-pages": "2.0.1", "github-markdown-css": "2.10.0", - "glob": "7.1.3", "handlebars": "4.0.12", "handlebars-helpers": "0.10.0", "html-loader": "0.5.5", diff --git a/packages/autocomplete/src/index.spec.js b/packages/autocomplete/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/autocomplete/src/index.spec.js +++ b/packages/autocomplete/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/avatars/src/index.spec.js b/packages/avatars/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/avatars/src/index.spec.js +++ b/packages/avatars/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/breadcrumbs/src/index.spec.js b/packages/breadcrumbs/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/breadcrumbs/src/index.spec.js +++ b/packages/breadcrumbs/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/buttons/src/index.spec.js b/packages/buttons/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/buttons/src/index.spec.js +++ b/packages/buttons/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/checkboxes/src/index.spec.js b/packages/checkboxes/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/checkboxes/src/index.spec.js +++ b/packages/checkboxes/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/chrome/src/index.spec.js b/packages/chrome/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/chrome/src/index.spec.js +++ b/packages/chrome/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/grid/src/index.spec.js b/packages/grid/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/grid/src/index.spec.js +++ b/packages/grid/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/loaders/src/index.spec.js b/packages/loaders/src/index.spec.js index a1e2e7b507e..ec2acb847cf 100644 --- a/packages/loaders/src/index.spec.js +++ b/packages/loaders/src/index.spec.js @@ -5,23 +5,15 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('[A-Z]!(*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); + it('exports all components and utilities', () => { + return matchExports({ + globPath: '[A-Z]!(*.spec).js', + cwd: __dirname, + keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/menus/src/index.spec.js b/packages/menus/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/menus/src/index.spec.js +++ b/packages/menus/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/modals/src/index.spec.js b/packages/modals/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/modals/src/index.spec.js +++ b/packages/modals/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/notifications/src/index.spec.js b/packages/notifications/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/notifications/src/index.spec.js +++ b/packages/notifications/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/pagination/src/index.spec.js b/packages/pagination/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/pagination/src/index.spec.js +++ b/packages/pagination/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/radios/src/index.spec.js b/packages/radios/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/radios/src/index.spec.js +++ b/packages/radios/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/ranges/src/index.spec.js b/packages/ranges/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/ranges/src/index.spec.js +++ b/packages/ranges/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/select/src/index.spec.js b/packages/select/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/select/src/index.spec.js +++ b/packages/select/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/selection/src/index.spec.js b/packages/selection/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/selection/src/index.spec.js +++ b/packages/selection/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/tables/src/index.spec.js b/packages/tables/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/tables/src/index.spec.js +++ b/packages/tables/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/tabs/src/index.spec.js b/packages/tabs/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/tabs/src/index.spec.js +++ b/packages/tabs/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/tags/src/index.spec.js b/packages/tags/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/tags/src/index.spec.js +++ b/packages/tags/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/testing/package.json b/packages/testing/package.json index bc285d8fc82..fb74c2f7d07 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -25,7 +25,8 @@ "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" }, "devDependencies": { - "@zendeskgarden/react-theming": "^3.2.1" + "@zendeskgarden/react-theming": "^3.2.1", + "glob": "7.1.3" }, "keywords": [ "components", diff --git a/packages/testing/src/index.js b/packages/testing/src/index.js index dc5c976f8ac..afe73ca7413 100644 --- a/packages/testing/src/index.js +++ b/packages/testing/src/index.js @@ -8,3 +8,4 @@ export { default as mountWithTheme } from './utils/mountWithTheme.js'; export { default as renderWithTheme } from './utils/renderWithTheme.js'; export { default as shallowWithTheme } from './utils/shallowWithTheme.js'; +export { default as matchExports } from './utils/matchExports.js'; diff --git a/packages/testing/src/index.spec.js b/packages/testing/src/index.spec.js index 16b30e42e4d..1daa0a382f2 100644 --- a/packages/testing/src/index.spec.js +++ b/packages/testing/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import matchExports from './utils/matchExports'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/testing/src/utils/matchExports.js b/packages/testing/src/utils/matchExports.js new file mode 100644 index 00000000000..7fd36a8aaf5 --- /dev/null +++ b/packages/testing/src/utils/matchExports.js @@ -0,0 +1,49 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import glob from 'glob'; + +/** + * defaultFileMapper + * @param {*} files + */ +function defaultFileMapper(files) { + return files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .sort(); +} + +/** + * matchExports + * @param {*} options + */ +function matchExports({ + globPath = '**/!(index|*.spec).js', + cwd, + keys, + fileMapper = defaultFileMapper +} = {}) { + return new Promise((resolve, reject) => { + glob(globPath, { cwd }, (error, files) => { + if (error) { + reject(error); + } + + const mappedFiles = fileMapper(files); + + expect(keys).toEqual(mappedFiles); + resolve(); + }); + }); +} + +export default matchExports; diff --git a/packages/textfields/src/index.spec.js b/packages/textfields/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/textfields/src/index.spec.js +++ b/packages/textfields/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/theming/src/index.spec.js b/packages/theming/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/theming/src/index.spec.js +++ b/packages/theming/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/toggles/src/index.spec.js b/packages/toggles/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/toggles/src/index.spec.js +++ b/packages/toggles/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/tooltips/src/index.spec.js b/packages/tooltips/src/index.spec.js index 2f0c4b436d9..d38fca6b8ae 100644 --- a/packages/tooltips/src/index.spec.js +++ b/packages/tooltips/src/index.spec.js @@ -5,25 +5,27 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; import * as gardenPlacements from './utils/gardenPlacements'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/[A-Z]!(*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .concat(Object.keys(gardenPlacements)) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); + it('exports all components and utilities', () => { + return matchExports({ + globPath: '**/[A-Z]!(*.spec).js', + cwd: __dirname, + keys: Object.keys(rootIndex).sort(), + fileMapper: files => { + return files + .map(entry => + entry + .replace(/\.js$/u, '') + .split('/') + .pop() + ) + .concat(Object.keys(gardenPlacements)) + .sort(); + } }); }); }); diff --git a/packages/typography/src/index.spec.js b/packages/typography/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/typography/src/index.spec.js +++ b/packages/typography/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/packages/utilities/src/index.spec.js b/packages/utilities/src/index.spec.js index 16b30e42e4d..16b7080b7b0 100644 --- a/packages/utilities/src/index.spec.js +++ b/packages/utilities/src/index.spec.js @@ -5,23 +5,11 @@ * found at http://www.apache.org/licenses/LICENSE-2.0. */ -import glob from 'glob'; +import { matchExports } from '@zendeskgarden/react-testing'; import * as rootIndex from './'; describe('Index', () => { - it('exports all components and utilities', done => { - glob('**/!(index|*.spec).js', { cwd: __dirname }, (er, files) => { - const mappedFiles = files - .map(entry => - entry - .replace(/\.js$/u, '') - .split('/') - .pop() - ) - .sort(); - - expect(Object.keys(rootIndex).sort()).toEqual(mappedFiles); - done(); - }); + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); }); }); diff --git a/yarn.lock b/yarn.lock index b4ad60c4b74..d5082e6e4bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5194,7 +5194,7 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== From fdc071462680f09daf8260385ceb96b39b5135f5 Mon Sep 17 00:00:00 2001 From: Austin Green Date: Thu, 6 Dec 2018 08:38:09 -0800 Subject: [PATCH 3/5] Updated templates --- .github/PULL_REQUEST_TEMPLATE.md | 1 - packages/.template/src/index.spec.js | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 packages/.template/src/index.spec.js diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4097624ddd3..d80fce45609 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -26,5 +26,4 @@ * [ ] :globe_with_meridians: Styleguidist demo is up-to-date (`yarn start`) * [ ] :arrow_left: renders as expected with reversed (RTL) direction * [ ] :guardsman: includes new unit and snapshot tests -* [ ] :ledger: any new files are included in the packages `src/index.js` export * [ ] :memo: tested in Chrome, Firefox, Safari, Edge, and IE11 diff --git a/packages/.template/src/index.spec.js b/packages/.template/src/index.spec.js new file mode 100644 index 00000000000..16b7080b7b0 --- /dev/null +++ b/packages/.template/src/index.spec.js @@ -0,0 +1,15 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +import { matchExports } from '@zendeskgarden/react-testing'; +import * as rootIndex from './'; + +describe('Index', () => { + it('exports all components and utilities', () => { + return matchExports({ cwd: __dirname, keys: Object.keys(rootIndex).sort() }); + }); +}); From f97a90938c97ac44390ec682b7cf9a80e4adfeb3 Mon Sep 17 00:00:00 2001 From: Austin Green Date: Thu, 6 Dec 2018 08:56:43 -0800 Subject: [PATCH 4/5] Update webpack to handle react-testing fs --- packages/testing/package.json | 6 ++++-- utils/build/webpack.base.js | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/testing/package.json b/packages/testing/package.json index fb74c2f7d07..964db316877 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -18,6 +18,9 @@ "build:demo": "../../utils/scripts/build-demo.sh", "start": "../../utils/scripts/start.sh" }, + "dependencies": { + "glob": "7.1.3" + }, "peerDependencies": { "@zendeskgarden/react-theming": "^1.0.0 || ^2.0.0 || ^3.0.0", "enzyme": "^3.0.0", @@ -25,8 +28,7 @@ "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" }, "devDependencies": { - "@zendeskgarden/react-theming": "^3.2.1", - "glob": "7.1.3" + "@zendeskgarden/react-theming": "^3.2.1" }, "keywords": [ "components", diff --git a/utils/build/webpack.base.js b/utils/build/webpack.base.js index 77896eeed7c..fad86f77565 100644 --- a/utils/build/webpack.base.js +++ b/utils/build/webpack.base.js @@ -17,6 +17,9 @@ const options = { mode: 'production', entry: path.resolve('src', 'index.js'), devtool: 'source-map', + node: { + fs: 'empty' + }, optimization: { minimizer: [ new OptimizeCSSAssetsPlugin({ From ce887fcee75898c66379b90fa2fc0ca082a5acd3 Mon Sep 17 00:00:00 2001 From: Austin Green Date: Thu, 6 Dec 2018 09:07:45 -0800 Subject: [PATCH 5/5] Add node webpack target --- packages/testing/package.json | 2 +- utils/build/webpack.base.js | 3 --- utils/build/webpack.node.js | 19 +++++++++++++++++++ utils/scripts/build-node.sh | 6 ++++++ utils/test/jest.config.js | 5 +++-- 5 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 utils/build/webpack.node.js create mode 100755 utils/scripts/build-node.sh diff --git a/packages/testing/package.json b/packages/testing/package.json index 964db316877..b8b842c81a9 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -14,7 +14,7 @@ "dist" ], "scripts": { - "build": "../../utils/scripts/build.sh", + "build": "../../utils/scripts/build-node.sh", "build:demo": "../../utils/scripts/build-demo.sh", "start": "../../utils/scripts/start.sh" }, diff --git a/utils/build/webpack.base.js b/utils/build/webpack.base.js index fad86f77565..77896eeed7c 100644 --- a/utils/build/webpack.base.js +++ b/utils/build/webpack.base.js @@ -17,9 +17,6 @@ const options = { mode: 'production', entry: path.resolve('src', 'index.js'), devtool: 'source-map', - node: { - fs: 'empty' - }, optimization: { minimizer: [ new OptimizeCSSAssetsPlugin({ diff --git a/utils/build/webpack.node.js b/utils/build/webpack.node.js new file mode 100644 index 00000000000..c4a14dc2254 --- /dev/null +++ b/utils/build/webpack.node.js @@ -0,0 +1,19 @@ +/** + * Copyright Zendesk, Inc. + * + * Use of this source code is governed under the Apache License, Version 2.0 + * found at http://www.apache.org/licenses/LICENSE-2.0. + */ + +const path = require('path'); +const merge = require('webpack-merge'); +const baseConfig = require('./webpack.base'); + +module.exports = merge(baseConfig, { + target: 'node', + output: { + path: path.resolve('dist'), + filename: 'index.js', + libraryTarget: 'commonjs' + } +}); diff --git a/utils/scripts/build-node.sh b/utils/scripts/build-node.sh new file mode 100755 index 00000000000..c4a951322ca --- /dev/null +++ b/utils/scripts/build-node.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -x +set -e + +rimraf dist +webpack --config ../../utils/build/webpack.node.js --hide-modules diff --git a/utils/test/jest.config.js b/utils/test/jest.config.js index 8148d6dbc27..f81e1cfe142 100644 --- a/utils/test/jest.config.js +++ b/utils/test/jest.config.js @@ -26,10 +26,11 @@ module.exports = { '\\.(svg)$': '/utils/test/svg-mock.js' }, collectCoverageFrom: [ - '/packages/*/src/**/*.{js,jsx}', + '/packages/*!(.template)/src/**/*.{js,jsx}', '!/packages/*/src/index.js', '!**/node_modules/**', '!**/vendor/**' ], - coverageDirectory: '/demo/coverage' + coverageDirectory: '/demo/coverage', + testPathIgnorePatterns: ['/node_modules/', '/packages/.template'] };