import {expect, vi, it} from 'vitest';
import {render, waitFor, fireEvent} from '@testing-library/react';
import {t} from '@/scripts/i18n';
import * as fetch from '@/scripts/net';
import urls from '@/scripts/urls';
import Forgot from '@/views/auth/Forgot';
vi.mock('@/scripts/net');
describe('submit', () => {
it('succeeded', async () => {
fetch.post.mockResolvedValue({code: 0, message: 'ok'});
const {getByPlaceholderText, getByText, queryByText} = render();
fireEvent.input(getByPlaceholderText(t('auth.email')), {
target: {value: 'a@b.c'},
});
fireEvent.input(getByPlaceholderText(t('auth.captcha')), {
target: {value: 'abc'},
});
fireEvent.click(getByText(t('auth.send')));
await waitFor(() => {
expect(fetch.post).toBeCalledWith(urls.auth.forgot(), {
email: 'a@b.c',
captcha: 'abc',
});
},
);
expect(queryByText('ok')).toBeInTheDocument();
});
it('failed', async () => {
fetch.post.mockResolvedValue({code: 1, message: 'failed'});
const {getByPlaceholderText, getByText, queryByText} = render();
fireEvent.input(getByPlaceholderText(t('auth.email')), {
target: {value: 'a@b.c'},
});
fireEvent.input(getByPlaceholderText(t('auth.captcha')), {
target: {value: 'abc'},
});
fireEvent.click(getByText(t('auth.send')));
await waitFor(() => {
expect(fetch.post).toBeCalledWith(urls.auth.forgot(), {
email: 'a@b.c',
captcha: 'abc',
});
},
);
expect(queryByText('failed')).toBeInTheDocument();
});
});