blessing-skin-server/resources/assets/tests/components/Captcha.test.tsx
Zephyr Lykos 9524a234cf
cleanup: wip 3.1
mostly misc cleanups
2024-02-24 23:01:32 +08:00

67 lines
1.8 KiB
TypeScript

import {expect, vi, it} from 'vitest';
import React from 'react';
import {render, fireEvent} from '@testing-library/react';
import Reaptcha from 'reaptcha';
import {t} from '@/scripts/i18n';
import Captcha from '@/components/Captcha';
describe('picture captcha', () => {
it('retrieve value', async () => {
const reference = React.createRef<Captcha>();
const {getByPlaceholderText} = render(<Captcha ref={reference}/>);
fireEvent.input(getByPlaceholderText(t('auth.captcha')), {
target: {value: 'abc'},
});
expect(await reference.current?.execute()).toBe('abc');
});
it('refresh on click', () => {
const spy = vi.spyOn(Date, 'now');
const reference = React.createRef<Captcha>();
const {getByAltText} = render(<Captcha ref={reference}/>);
fireEvent.click(getByAltText(t('auth.captcha')));
expect(spy).toHaveBeenCalled();
});
it('refresh programatically', () => {
const spy = vi.spyOn(Date, 'now');
const reference = React.createRef<Captcha>();
render(<Captcha ref={reference}/>);
reference.current?.reset();
expect(spy).toHaveBeenCalled();
});
});
describe('recaptcha', () => {
beforeEach(() => {
window.blessing.extra = {recaptcha: 'sitekey', invisible: false};
});
it('retrieve value', async () => {
window.blessing.extra.invisible = true;
const spy = vi.spyOn(Reaptcha.prototype, 'execute');
const reference = React.createRef<Captcha>();
render(<Captcha ref={reference}/>);
const value = await reference.current?.execute();
expect(spy).toHaveBeenCalled();
expect(value).toBe('token');
});
it('refresh programatically', () => {
const spy = vi.spyOn(Reaptcha.prototype, 'reset');
const reference = React.createRef<Captcha>();
render(<Captcha ref={reference}/>);
reference.current?.reset();
expect(spy).toHaveBeenCalled();
});
});