test: theme-picker
This commit is contained in:
parent
5d023ce7a2
commit
b0065c8150
2 changed files with 52 additions and 5 deletions
41
src/components/user/theme-picker.cy.tsx
Normal file
41
src/components/user/theme-picker.cy.tsx
Normal file
|
@ -0,0 +1,41 @@
|
|||
import React from 'react';
|
||||
import { ThemePicker } from '@/components/user/theme-picker';
|
||||
import { ThemeProvider } from '../theme-provider';
|
||||
|
||||
describe('<ThemePicker />', () => {
|
||||
it('renders', () => {
|
||||
cy.mount(<ThemePicker />);
|
||||
});
|
||||
|
||||
it('toggle open and close', () => {
|
||||
cy.mount(<ThemePicker />);
|
||||
cy.getBySel('theme-picker').click();
|
||||
cy.getBySel('theme-picker-content').should('exist');
|
||||
cy.get('html').click();
|
||||
cy.getBySel('theme-picker-content').should('not.exist');
|
||||
});
|
||||
|
||||
it('enable dark mode', () => {
|
||||
cy.mount(
|
||||
<ThemeProvider>
|
||||
<ThemePicker />
|
||||
</ThemeProvider>,
|
||||
);
|
||||
|
||||
cy.getBySel('theme-picker').click();
|
||||
cy.getBySel('dark-theme').click();
|
||||
cy.get('html').should('have.attr', 'data-theme', 'dark');
|
||||
});
|
||||
|
||||
it('enable light mode', () => {
|
||||
cy.mount(
|
||||
<ThemeProvider>
|
||||
<ThemePicker />
|
||||
</ThemeProvider>,
|
||||
);
|
||||
|
||||
cy.getBySel('theme-picker').click();
|
||||
cy.getBySel('light-theme').click();
|
||||
cy.get('html').should('have.attr', 'data-theme', 'light');
|
||||
});
|
||||
});
|
|
@ -18,20 +18,26 @@ export function ThemePicker() {
|
|||
return (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button variant='outline' size='icon'>
|
||||
<Button variant='outline' size='icon' data-cy='theme-picker'>
|
||||
<Sun className='h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0' />
|
||||
<Moon className='absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100' />
|
||||
<span className='sr-only'>Toggle theme</span>
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent align='end'>
|
||||
<DropdownMenuItem onClick={() => setTheme('light')}>
|
||||
<DropdownMenuContent align='end' data-cy='theme-picker-content'>
|
||||
<DropdownMenuItem
|
||||
onClick={() => setTheme('light')}
|
||||
data-cy='light-theme'
|
||||
>
|
||||
Light
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setTheme('dark')}>
|
||||
<DropdownMenuItem onClick={() => setTheme('dark')} data-cy='dark-theme'>
|
||||
Dark
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setTheme('system')}>
|
||||
<DropdownMenuItem
|
||||
onClick={() => setTheme('system')}
|
||||
data-cy='system-theme'
|
||||
>
|
||||
System
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue