Cockatrice/webclient/src/websocket/commands/admin/adminCommands.spec.ts

93 lines
2.8 KiB
TypeScript

vi.mock('../../WebClient');
import { makeCallbackHelpers } from '../../__mocks__/callbackHelpers';
import { WebClient } from '../../WebClient';
import { adjustMod } from './adjustMod';
import { reloadConfig } from './reloadConfig';
import { shutdownServer } from './shutdownServer';
import { updateServerMessage } from './updateServerMessage';
import {
Command_AdjustMod_ext,
Command_ReloadConfig_ext,
Command_ShutdownServer_ext,
Command_UpdateServerMessage_ext,
} from '@app/generated';
import { Mock } from 'vitest';
const { invokeOnSuccess } = makeCallbackHelpers(
WebClient.instance.protobuf.sendAdminCommand as Mock,
2
);
describe('adjustMod', () => {
it('calls sendAdminCommand with Command_AdjustMod extension and fields', () => {
adjustMod('alice', true, false);
expect(WebClient.instance.protobuf.sendAdminCommand).toHaveBeenCalledWith(
Command_AdjustMod_ext,
expect.objectContaining({ userName: 'alice', shouldBeMod: true, shouldBeJudge: false }),
expect.any(Object)
);
});
it('onSuccess calls response.admin.adjustMod', () => {
adjustMod('alice', true, false);
invokeOnSuccess();
expect(WebClient.instance.response.admin.adjustMod).toHaveBeenCalledWith('alice', true, false);
});
});
describe('reloadConfig', () => {
it('calls sendAdminCommand with Command_ReloadConfig extension', () => {
reloadConfig();
expect(WebClient.instance.protobuf.sendAdminCommand).toHaveBeenCalledWith(
Command_ReloadConfig_ext,
expect.any(Object),
expect.any(Object)
);
});
it('onSuccess calls response.admin.reloadConfig', () => {
reloadConfig();
invokeOnSuccess();
expect(WebClient.instance.response.admin.reloadConfig).toHaveBeenCalled();
});
});
describe('shutdownServer', () => {
it('calls sendAdminCommand with Command_ShutdownServer extension and fields', () => {
shutdownServer('maintenance', 10);
expect(WebClient.instance.protobuf.sendAdminCommand).toHaveBeenCalledWith(
Command_ShutdownServer_ext,
expect.objectContaining({ reason: 'maintenance', minutes: 10 }),
expect.any(Object)
);
});
it('onSuccess calls response.admin.shutdownServer', () => {
shutdownServer('maintenance', 10);
invokeOnSuccess();
expect(WebClient.instance.response.admin.shutdownServer).toHaveBeenCalled();
});
});
describe('updateServerMessage', () => {
it('calls sendAdminCommand with Command_UpdateServerMessage extension', () => {
updateServerMessage();
expect(WebClient.instance.protobuf.sendAdminCommand).toHaveBeenCalledWith(
Command_UpdateServerMessage_ext,
expect.any(Object),
expect.any(Object)
);
});
it('onSuccess calls response.admin.updateServerMessage', () => {
updateServerMessage();
invokeOnSuccess();
expect(WebClient.instance.response.admin.updateServerMessage).toHaveBeenCalled();
});
});