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

71 lines
1.9 KiB
TypeScript

import {Stdio} from './stdio';
import * as fetch from '@/scripts/net';
import apt from '@/scripts/cli/AptCommand';
vi.mock('@/scripts/net');
describe('install plugin', () => {
it('succeeded', async () => {
fetch.post.mockResolvedValue({code: 0, message: 'ok'});
const stdio = new Stdio();
await apt(stdio, ['install', 'test']);
expect(fetch.post).toBeCalledWith('/admin/plugins/market/download', {
name: 'test',
});
expect(stdio.getStdout()).toInclude('ok');
});
it('failed with reasons', async () => {
fetch.post.mockResolvedValue({
code: 1,
message: 'failed',
data: {reason: ['unresolved']},
});
const stdio = new Stdio();
await apt(stdio, ['install', 'test']);
expect(fetch.post).toBeCalledWith('/admin/plugins/market/download', {
name: 'test',
});
expect(stdio.getStdout()).toInclude('failed');
expect(stdio.getStdout()).toInclude('- unresolved');
});
it('use `upgrade` command', async () => {
fetch.post.mockResolvedValue({code: 0, message: 'ok'});
const stdio = new Stdio();
await apt(stdio, ['upgrade', 'test']);
expect(fetch.post).toBeCalledWith('/admin/plugins/market/download', {
name: 'test',
});
expect(stdio.getStdout()).toInclude('ok');
});
});
describe('remove plugin', () => {
beforeAll(() => vi.useRealTimers());
it('cancelled', async () => {
const stdio = new Stdio();
setTimeout(() => process.stdin.emit('keypress', 'n', 'n'), 0);
await apt(stdio, ['remove', 'test']);
expect(fetch.post).not.toBeCalled();
});
it('succeeded', async () => {
fetch.post.mockResolvedValue({code: 0, message: 'ok'});
const stdio = new Stdio();
setTimeout(() => process.stdin.emit('keypress', 'y', 'y'), 0);
await apt(stdio, ['remove', 'test']);
expect(fetch.post).toBeCalledWith('/admin/plugins/manage', {
action: 'delete',
name: 'test',
});
expect(stdio.getStdout()).toInclude('ok');
});
});