You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.2 KiB

import { Theme } from '@ant-design/cssinjs';
import * as React from 'react';
import { render, renderHook } from '../../../tests/utils';
import ConfigProvider from '../../config-provider';
import theme from '../export';
const { useToken } = theme;
describe('Theme', () => {
it('useTheme', () => {
const result = renderHook(() => useToken());
expect(result.current.theme instanceof Theme).toBeTruthy();
expect(result.current.hashId).toBeFalsy();
expect(result.current.token).toEqual(
expect.objectContaining({
colorPrimary: '#1890ff',
}),
);
});
it('ConfigProvider with seed', () => {
const Demo = React.forwardRef((_, ref: any) => {
const themeObj = useToken();
ref.current = themeObj;
return null;
});
const themeRef = React.createRef<ReturnType<typeof useToken>>();
render(
<ConfigProvider
theme={{
token: {
colorPrimary: 'red',
},
}}
>
<Demo ref={themeRef} />
</ConfigProvider>,
);
expect(themeRef.current!.token).toEqual(
expect.objectContaining({
colorPrimary: 'red',
colorPrimaryHover: '#ff3029', // It's safe to modify if theme logic changed
}),
);
});
});