added test for password viewer toggler

This commit is contained in:
Simon
2024-07-02 17:47:27 -04:00
parent dd3bee5887
commit 0c9479866a
4 changed files with 28 additions and 22 deletions

View File

@@ -4,18 +4,23 @@ import {
test
} from 'vitest';
import { render } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import {
PasswordField
} from './PasswordField'
describe('PasswordField', () => {
test('it renders', () => {
const { queryByTestId } = render(<PasswordField data-testid="test" value="" />)
expect(queryByTestId('test')).toBeTruthy()
const { queryByTestId } = render(<PasswordField data-testid="test-id" value="test-value" />)
expect(queryByTestId('test-id')).toBeTruthy()
})
test('User can update field', () => {
})
test('User can toggle between plain text view and password view', () => {
test('User can toggle between plain text view and password view', async () => {
const { getByTestId } = render(<PasswordField data-testid="test-id" value="test-value" />)
const user = userEvent.setup();
expect(getByTestId("password-text-indicator").textContent).toBe('😸');
await user.click(getByTestId('toggle-view-password-btn'));
expect(getByTestId("plain-text-indicator").textContent).toBe('🙀');
})
})

View File

@@ -49,12 +49,12 @@ export const PasswordField: React.FunctionComponent<TextFieldProps> = ({ ...prop
type={canViewPassword ? 'text' : 'password'}
InputProps={{
endAdornment: (
<InputAdornment position="end" style={{
<InputAdornment position="end" data-testid="toggle-view-password-btn" style={{
cursor: 'pointer'
}} onClick={() => {
setCanViewPassword((prevState) => !prevState)
}}>
{canViewPassword ? <span data-testid="eyes-opened">🙀</span> : <span data-testid="eyes-closed">😸</span>}
{canViewPassword ? <span data-testid="plain-text-indicator">🙀</span> : <span data-testid="password-text-indicator">😸</span>}
</InputAdornment>
)
}}