Skip to content

Commit ae8d4b5

Browse files
committed
Add tests for button
1 parent 23a5bba commit ae8d4b5

File tree

2 files changed

+83
-2
lines changed

2 files changed

+83
-2
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import * as React from 'react';
2+
import { render, screen } from '@testing-library/react';
3+
import expect from 'expect';
4+
import polyglotI18nProvider from 'ra-i18n-polyglot';
5+
import englishMessages from 'ra-language-english';
6+
import {
7+
ReactNodeLabel,
8+
SimpleStringLabel,
9+
TranslationKeyLabel,
10+
} from './Button.stories';
11+
12+
describe('<DeleteButton />', () => {
13+
it('should allow simple string as label', async () => {
14+
const i18nProvider = polyglotI18nProvider(() => englishMessages, 'en');
15+
const translate = jest.spyOn(i18nProvider, 'translate');
16+
render(<SimpleStringLabel i18nProvider={i18nProvider} />);
17+
await screen.findByText('A non translated string');
18+
expect(translate).toHaveBeenCalledWith('A non translated string', {
19+
_: 'A non translated string',
20+
});
21+
});
22+
it('should allow translation keys as label', async () => {
23+
const i18nProvider = polyglotI18nProvider(() => englishMessages, 'en');
24+
const translate = jest.spyOn(i18nProvider, 'translate');
25+
render(<TranslationKeyLabel i18nProvider={i18nProvider} />);
26+
await screen.findByText('Create');
27+
expect(translate).toHaveBeenCalledWith('ra.action.create', {
28+
_: 'ra.action.create',
29+
});
30+
});
31+
it('should ReactNode as label', async () => {
32+
const i18nProvider = polyglotI18nProvider(() => englishMessages, 'en');
33+
const translate = jest.spyOn(i18nProvider, 'translate');
34+
render(<ReactNodeLabel i18nProvider={i18nProvider} />);
35+
await screen.findByText('A ReactNode');
36+
expect(translate).not.toHaveBeenCalled();
37+
});
38+
});

packages/ra-ui-materialui/src/button/Button.stories.tsx

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import { ReactNode } from 'react';
33
import { createTheme, ThemeProvider, Stack } from '@mui/material';
44
import type { PaletteColor } from '@mui/material';
55
import AddIcon from '@mui/icons-material/Add';
6-
6+
import polyglotI18nProvider from 'ra-i18n-polyglot';
7+
import englishMessages from 'ra-language-english';
8+
import { I18nContextProvider, I18nProvider } from 'ra-core';
79
import { Button } from './Button';
810
import { defaultTheme } from '../theme/defaultTheme';
911

@@ -25,6 +27,47 @@ export const Basic = () => (
2527
</ThemeProvider>
2628
);
2729

30+
const defaultI18nProvider = polyglotI18nProvider(() => englishMessages, 'en');
31+
export const SimpleStringLabel = ({
32+
i18nProvider = defaultI18nProvider,
33+
}: {
34+
i18nProvider?: I18nProvider;
35+
}) => (
36+
<I18nContextProvider value={i18nProvider}>
37+
<ThemeProvider theme={createTheme(defaultTheme)}>
38+
<UIWrapper>
39+
<Button label="A non translated string" />
40+
</UIWrapper>
41+
</ThemeProvider>
42+
</I18nContextProvider>
43+
);
44+
export const TranslationKeyLabel = ({
45+
i18nProvider = defaultI18nProvider,
46+
}: {
47+
i18nProvider?: I18nProvider;
48+
}) => (
49+
<I18nContextProvider value={i18nProvider}>
50+
<ThemeProvider theme={createTheme(defaultTheme)}>
51+
<UIWrapper>
52+
<Button label="ra.action.create" variant="outlined" />
53+
</UIWrapper>
54+
</ThemeProvider>
55+
</I18nContextProvider>
56+
);
57+
export const ReactNodeLabel = ({
58+
i18nProvider = defaultI18nProvider,
59+
}: {
60+
i18nProvider?: I18nProvider;
61+
}) => (
62+
<I18nContextProvider value={i18nProvider}>
63+
<ThemeProvider theme={createTheme(defaultTheme)}>
64+
<UIWrapper>
65+
<Button label={<>A ReactNode</>} variant="contained" />
66+
</UIWrapper>
67+
</ThemeProvider>
68+
</I18nContextProvider>
69+
);
70+
2871
export const WithIcon = () => (
2972
<ThemeProvider theme={createTheme(defaultTheme)}>
3073
<UIWrapper>
@@ -49,7 +92,7 @@ export const WithThemeProps = () => (
4992
// @ts-ignore
5093
RaButton: {
5194
defaultProps: {
52-
size: 'normal',
95+
size: 'large',
5396
color: 'secondary',
5497
},
5598
},

0 commit comments

Comments
 (0)