blessing-skin-server/resources/assets/tests/views/user/profile/nickname.test.ts
Zephyr Lykos 9524a234cf
cleanup: wip 3.1
mostly misc cleanups
2024-02-24 23:01:32 +08:00

38 lines
1.1 KiB
TypeScript

import {expect, vi, test} from 'vitest';
import {flushPromises} from '../../../utils';
import {showModal} from '@/scripts/notify';
import {post} from '@/scripts/net';
import handler from '@/views/user/profile/nickname';
vi.mock('@/scripts/notify');
vi.mock('@/scripts/net');
test('change nickname', async () => {
document.body.innerHTML = '<span data-mark="nickname"></span>';
post
.mockResolvedValueOnce({code: 1, message: 'w'})
.mockResolvedValue({code: 0, message: 'o'});
const form = document.createElement('form');
form.addEventListener('submit', handler);
const nickname = document.createElement('input');
nickname.name = 'nickname';
nickname.value = 'nickname';
form.append(nickname);
form.nickname = nickname;
const event = new Event('submit');
form.dispatchEvent(event);
await flushPromises();
expect(post).toBeCalledWith('/user/profile?action=nickname', {
new_nickname: 'nickname',
});
expect(showModal).toBeCalledWith({mode: 'alert', text: 'w'});
form.dispatchEvent(event);
await flushPromises();
expect(showModal).toBeCalledWith({mode: 'alert', text: 'o'});
expect(document.querySelector('span')!.textContent).toBe('nickname');
});