import * as React from 'react';
import { expect } from 'chai';
import { createRenderer, fireEvent, screen } from '@mui/internal-test-utils';
import { ThemeProvider, createTheme, useColorScheme } from '@mui/material/styles';
import Box from '@mui/material/Box';
import { THEME_ID as JOY_THEME_ID, extendTheme } from '@mui/joy/styles';
import Button from '@mui/joy/Button';
import { DemoInstanceThemeProvider } from './theming';
function DarkMode() {
const { mode, setMode } = useColorScheme();
return ;
}
function UpperProvider({ children }: React.PropsWithChildren) {
return (
{children}
);
}
describe('docs demo theming', () => {
const { render } = createRenderer();
it('should inherit the theme.palette.mode from upper theme', () => {
render(
({
mixBlendMode: theme.palette.mode === 'dark' ? 'darken' : 'lighten',
})}
/>
,
);
expect(screen.getByRole('button')).to.have.text('light');
expect(screen.getByTestId('foo')).toHaveComputedStyle({ mixBlendMode: 'lighten' });
fireEvent.click(screen.getByRole('button'));
expect(screen.getByRole('button')).to.have.text('dark');
expect(screen.getByTestId('foo')).toHaveComputedStyle({ mixBlendMode: 'darken' });
});
it('able to render Joy components if upper theme of Joy UI is scoped', () => {
const materialTheme = createTheme({ cssVariables: true });
expect(() =>
render(
,
),
).not.to.throw();
});
});