mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 01:47:00 +01:00
Adding static icon names to test env file (#16078)
* Storing the icon name env var as a string and parsing to use with components * Moving icon env vars to jest specific env.js file * Updating snapshots
This commit is contained in:
parent
a5b81d8562
commit
3af83f8f98
Before Width: | Height: | Size: 196 B After Width: | Height: | Size: 196 B |
@ -1,3 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" id="icon-user-cirlce-add-filled" viewBox="0 0 512 512">
|
|
||||||
<path d="m448 70c-14-17-36-27-60-27-23 0-43 9-58 24-9 9-15 20-19 31-3 8-4 17-4 26 0 15 4 30 12 42 4 7 9 13 15 18 14 13 33 21 54 21 9 0 18-1 25-4 19-6 35-19 45-35 4-7 7-15 9-23 2-6 2-13 2-19 0-21-8-40-21-54z m-30 69l-15 0 0 16c0 8-7 15-15 15-8 0-15-7-15-15l0-16-15 0c-9 0-15-7-15-15 0-9 6-16 15-16l15 0 0-14c0-8 7-15 15-15 8 0 15 7 15 15l0 14 15 0c9 0 16 7 16 16 0 8-7 15-16 15z m31 127c0-26-5-52-15-75-6 4-13 8-21 10-2 1-4 1-6 2 7 19 12 41 12 63 0 47-20 90-50 121-6-7-14-14-23-20-55-37-145-37-201 0-8 6-16 13-22 20-31-31-50-74-50-121 0-95 78-173 173-173 22 0 43 5 63 12 0-2 1-4 2-7 2-7 6-14 10-20-23-10-49-15-75-15-112 0-203 91-203 203 0 59 25 112 65 149 0 0 0 0 0 1 2 2 5 3 7 5 1 1 2 2 3 3 4 3 8 6 12 9 1 1 2 2 4 3 4 2 8 5 12 7 1 1 3 2 4 3 4 2 9 4 13 6 2 0 3 1 5 2 4 2 9 3 13 5 2 0 4 1 5 1 5 2 10 3 15 4 1 1 3 1 4 1 6 1 12 2 18 3 0 0 1 0 2 0 7 1 14 1 21 1 7 0 14 0 20-1 1 0 2 0 3 0 6-1 11-2 17-3 1 0 3-1 5-1 4-1 9-2 14-4 2 0 3-1 5-1 5-2 9-3 13-5 2-1 4-2 5-2 5-2 9-4 13-6 2-1 3-2 5-3 4-3 8-5 12-7 1-1 2-2 4-3 4-3 8-6 11-9 2-1 3-2 4-3 2-2 4-3 6-5 0-1 0-1 0-1 41-37 66-90 66-149z m-203-103c-42 0-76 34-76 76 0 42 32 75 75 76 0 0 1 0 2 0 0 0 1 0 1 0 0 0 0 0 0 0 42-1 74-34 74-76 0-42-34-76-76-76z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.3 KiB |
@ -22,12 +22,12 @@ const getIconNameInSnakeCase = (fileName) =>
|
|||||||
.replace(/-/gu, '_')
|
.replace(/-/gu, '_')
|
||||||
.toUpperCase();
|
.toUpperCase();
|
||||||
|
|
||||||
const generateIconNames = async () => {
|
const generateIconNames = () => {
|
||||||
const iconNames = {};
|
const iconNames = {};
|
||||||
|
|
||||||
const svgIconsFolderPath = path.join(__dirname, `../${SVG_ICONS_FOLDER}`);
|
const svgIconsFolderPath = path.join(__dirname, `../${SVG_ICONS_FOLDER}`);
|
||||||
|
|
||||||
const fileList = await fs.promises.readdir(svgIconsFolderPath);
|
const fileList = fs.readdirSync(svgIconsFolderPath);
|
||||||
|
|
||||||
const svgIconsFileList = fileList.filter(
|
const svgIconsFileList = fileList.filter(
|
||||||
(fileName) => path.extname(fileName) === ASSET_EXT,
|
(fileName) => path.extname(fileName) === ASSET_EXT,
|
||||||
@ -39,7 +39,9 @@ const generateIconNames = async () => {
|
|||||||
getIconNameKebabCase(fileName)),
|
getIconNameKebabCase(fileName)),
|
||||||
);
|
);
|
||||||
|
|
||||||
return iconNames;
|
const iconNamesStringified = JSON.stringify(iconNames);
|
||||||
|
|
||||||
|
return iconNamesStringified;
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = { generateIconNames };
|
module.exports = { generateIconNames };
|
||||||
|
@ -41,7 +41,11 @@ module.exports = {
|
|||||||
// TODO: enable resetMocks
|
// TODO: enable resetMocks
|
||||||
// resetMocks: true,
|
// resetMocks: true,
|
||||||
restoreMocks: true,
|
restoreMocks: true,
|
||||||
setupFiles: ['<rootDir>/test/setup.js', '<rootDir>/test/env.js'],
|
setupFiles: [
|
||||||
|
'<rootDir>/test/setup.js',
|
||||||
|
'<rootDir>/test/env.js',
|
||||||
|
'<rootDir>/test/jest/env.js', // jest specific env vars that break mocha tests
|
||||||
|
],
|
||||||
setupFilesAfterEnv: ['<rootDir>/test/jest/setup.js'],
|
setupFilesAfterEnv: ['<rootDir>/test/jest/setup.js'],
|
||||||
testMatch: [
|
testMatch: [
|
||||||
'<rootDir>/ui/**/*.test.js',
|
'<rootDir>/ui/**/*.test.js',
|
||||||
|
@ -1,10 +1 @@
|
|||||||
process.env.METAMASK_ENV = 'test';
|
process.env.METAMASK_ENV = 'test';
|
||||||
|
|
||||||
/**
|
|
||||||
* Used for testing components that use the Icon component
|
|
||||||
* 'ui/components/component-library/icon/icon.js'
|
|
||||||
*/
|
|
||||||
process.env.ICON_NAMES = {
|
|
||||||
LOADING_FILLED: 'loading-filled',
|
|
||||||
CLOSE_OUTLINE: 'close-outline',
|
|
||||||
};
|
|
||||||
|
9
test/jest/env.js
Normal file
9
test/jest/env.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// jest specific env vars that break mocha tests
|
||||||
|
import { generateIconNames } from '../../development/generate-icon-names';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for testing components that use the Icon component
|
||||||
|
* 'ui/components/component-library/icon/icon.js'
|
||||||
|
*/
|
||||||
|
|
||||||
|
process.env.ICON_NAMES = generateIconNames();
|
@ -8,4 +8,4 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable prefer-destructuring*/ // process.env is not a standard JavaScript object, so we are not able to use object destructuring
|
/* eslint-disable prefer-destructuring*/ // process.env is not a standard JavaScript object, so we are not able to use object destructuring
|
||||||
export const ICON_NAMES = process.env.ICON_NAMES;
|
export const ICON_NAMES = JSON.parse(process.env.ICON_NAMES);
|
||||||
|
@ -2,21 +2,13 @@
|
|||||||
import { render } from '@testing-library/react';
|
import { render } from '@testing-library/react';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { SIZES, COLORS } from '../../../helpers/constants/design-system';
|
import { SIZES, COLORS } from '../../../helpers/constants/design-system';
|
||||||
|
import { ICON_NAMES } from './icon.constants';
|
||||||
import { Icon } from './icon';
|
import { Icon } from './icon';
|
||||||
|
|
||||||
// Icon names are stored in the ICON_NAMES environment variable
|
|
||||||
// mocking the environment variable here
|
|
||||||
const MOCK_ICON_NAMES = {
|
|
||||||
ADD_SQUARE_FILLED: 'add-square-filled',
|
|
||||||
BANK_FILLED: 'bank-filled',
|
|
||||||
BOOKMARK_FILLED: 'bookmark-filled',
|
|
||||||
CALCULATOR_FILLED: 'calculator-filled',
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('Icon', () => {
|
describe('Icon', () => {
|
||||||
it('should render correctly', () => {
|
it('should render correctly', () => {
|
||||||
const { getByTestId, container } = render(
|
const { getByTestId, container } = render(
|
||||||
<Icon name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED} data-testid="icon" />,
|
<Icon name={ICON_NAMES.ADD_SQUARE_FILLED} data-testid="icon" />,
|
||||||
);
|
);
|
||||||
expect(getByTestId('icon')).toBeDefined();
|
expect(getByTestId('icon')).toBeDefined();
|
||||||
expect(container.querySelector('svg')).toBeDefined();
|
expect(container.querySelector('svg')).toBeDefined();
|
||||||
@ -25,19 +17,16 @@ describe('Icon', () => {
|
|||||||
const { getByTestId } = render(
|
const { getByTestId } = render(
|
||||||
<>
|
<>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
data-testid="icon-add-square-filled"
|
data-testid="icon-add-square-filled"
|
||||||
/>
|
/>
|
||||||
|
<Icon name={ICON_NAMES.BANK_FILLED} data-testid="icon-bank-filled" />
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.BANK_FILLED}
|
name={ICON_NAMES.BOOKMARK_FILLED}
|
||||||
data-testid="icon-bank-filled"
|
|
||||||
/>
|
|
||||||
<Icon
|
|
||||||
name={MOCK_ICON_NAMES.BOOKMARK_FILLED}
|
|
||||||
data-testid="icon-bookmark-filled"
|
data-testid="icon-bookmark-filled"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.CALCULATOR_FILLED}
|
name={ICON_NAMES.CALCULATOR_FILLED}
|
||||||
data-testid="icon-calculator-filled"
|
data-testid="icon-calculator-filled"
|
||||||
/>
|
/>
|
||||||
</>,
|
</>,
|
||||||
@ -59,37 +48,37 @@ describe('Icon', () => {
|
|||||||
const { getByTestId } = render(
|
const { getByTestId } = render(
|
||||||
<>
|
<>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
size={SIZES.XXS}
|
size={SIZES.XXS}
|
||||||
data-testid="icon-xxs"
|
data-testid="icon-xxs"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
size={SIZES.XS}
|
size={SIZES.XS}
|
||||||
data-testid="icon-xs"
|
data-testid="icon-xs"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
size={SIZES.SM}
|
size={SIZES.SM}
|
||||||
data-testid="icon-sm"
|
data-testid="icon-sm"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
size={SIZES.MD}
|
size={SIZES.MD}
|
||||||
data-testid="icon-md"
|
data-testid="icon-md"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
size={SIZES.LG}
|
size={SIZES.LG}
|
||||||
data-testid="icon-lg"
|
data-testid="icon-lg"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
size={SIZES.XL}
|
size={SIZES.XL}
|
||||||
data-testid="icon-xl"
|
data-testid="icon-xl"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
size={SIZES.AUTO}
|
size={SIZES.AUTO}
|
||||||
data-testid="icon-auto"
|
data-testid="icon-auto"
|
||||||
/>
|
/>
|
||||||
@ -107,17 +96,17 @@ describe('Icon', () => {
|
|||||||
const { getByTestId } = render(
|
const { getByTestId } = render(
|
||||||
<>
|
<>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
color={COLORS.ICON_DEFAULT}
|
color={COLORS.ICON_DEFAULT}
|
||||||
data-testid="icon-color-default"
|
data-testid="icon-color-default"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
color={COLORS.ICON_ALTERNATIVE}
|
color={COLORS.ICON_ALTERNATIVE}
|
||||||
data-testid="icon-color-alternative"
|
data-testid="icon-color-alternative"
|
||||||
/>
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
name={MOCK_ICON_NAMES.ADD_SQUARE_FILLED}
|
name={ICON_NAMES.ADD_SQUARE_FILLED}
|
||||||
color={COLORS.ICON_MUTED}
|
color={COLORS.ICON_MUTED}
|
||||||
data-testid="icon-color-muted"
|
data-testid="icon-color-muted"
|
||||||
/>
|
/>
|
||||||
|
@ -18,7 +18,7 @@ exports[`PickerNetwork should render the label inside the PickerNetwork 1`] = `
|
|||||||
</p>
|
</p>
|
||||||
<div
|
<div
|
||||||
class="box mm-picker-network__arrow-down-icon icon icon--size-xs box--flex-direction-row box--color-icon-default"
|
class="box mm-picker-network__arrow-down-icon icon icon--size-xs box--flex-direction-row box--color-icon-default"
|
||||||
style="mask-image: url('./images/icons/icon-undefined.svg;"
|
style="mask-image: url('./images/icons/icon-arrow-down.svg;"
|
||||||
/>
|
/>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -12,7 +12,7 @@ exports[`TagUrl should render the label inside the TagUrl 1`] = `
|
|||||||
<div
|
<div
|
||||||
aria-label="avatar-favicon"
|
aria-label="avatar-favicon"
|
||||||
class="box icon icon--size-md box--flex-direction-row box--color-icon-default"
|
class="box icon icon--size-md box--flex-direction-row box--color-icon-default"
|
||||||
style="mask-image: url('./images/icons/icon-undefined.svg;"
|
style="mask-image: url('./images/icons/icon-global-filled.svg;"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<p
|
<p
|
||||||
|
Loading…
Reference in New Issue
Block a user