mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-10 08:14:47 -07:00
PR review changes
This commit is contained in:
parent
ef6cea6f6c
commit
b103db681b
35 changed files with 640 additions and 125 deletions
|
|
@ -63,4 +63,32 @@ describe('admin commands', () => {
|
|||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
|
||||
it('reloadConfig sends command and resolves on RespOk', () => {
|
||||
connectAndLogin();
|
||||
|
||||
AdminCommands.reloadConfig();
|
||||
|
||||
const { cmdId } = findLastAdminCommand(Data.Command_ReloadConfig_ext);
|
||||
expect(cmdId).toBeGreaterThan(0);
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
|
||||
it('updateServerMessage sends command and resolves on RespOk', () => {
|
||||
connectAndLogin();
|
||||
|
||||
AdminCommands.updateServerMessage();
|
||||
|
||||
const { cmdId } = findLastAdminCommand(Data.Command_UpdateServerMessage_ext);
|
||||
expect(cmdId).toBeGreaterThan(0);
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
});
|
||||
|
|
@ -64,6 +64,73 @@ describe('deck operations', () => {
|
|||
expect(downloaded?.deckId).toBe(42);
|
||||
expect(downloaded?.deck).toContain('Lightning Bolt');
|
||||
});
|
||||
|
||||
it('deckUpload sends payload and dispatches uploadServerDeck on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
SessionCommands.deckUpload('/folder', 0, '4 Counterspell\n20 Island');
|
||||
|
||||
const { cmdId, value } = findLastSessionCommand(Data.Command_DeckUpload_ext);
|
||||
expect(value.path).toBe('/folder');
|
||||
expect(value.deckList).toContain('Counterspell');
|
||||
|
||||
const newFile = create(Data.ServerInfo_DeckStorage_TreeItemSchema, {
|
||||
id: 7,
|
||||
name: 'CounterDeck.cod',
|
||||
});
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
ext: Data.Response_DeckUpload_ext,
|
||||
value: create(Data.Response_DeckUploadSchema, { newFile }),
|
||||
})));
|
||||
// No state assertion: backendDecks is keyed by full tree, not single
|
||||
// upload — the integration verifies the dispatcher is reached, not the
|
||||
// tree-merge logic which lives in the reducer.
|
||||
});
|
||||
|
||||
it('deckDel sends deckId and resolves on RespOk', () => {
|
||||
connectAndLogin();
|
||||
|
||||
SessionCommands.deckDel(13);
|
||||
|
||||
const { cmdId, value } = findLastSessionCommand(Data.Command_DeckDel_ext);
|
||||
expect(value.deckId).toBe(13);
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
|
||||
it('deckNewDir sends path + dirName payload and resolves on RespOk', () => {
|
||||
connectAndLogin();
|
||||
|
||||
SessionCommands.deckNewDir('/parent', 'NewFolder');
|
||||
|
||||
const { cmdId, value } = findLastSessionCommand(Data.Command_DeckNewDir_ext);
|
||||
expect(value.path).toBe('/parent');
|
||||
expect(value.dirName).toBe('NewFolder');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
|
||||
it('deckDelDir sends path payload and resolves on RespOk', () => {
|
||||
connectAndLogin();
|
||||
|
||||
SessionCommands.deckDelDir('/folder/to/remove');
|
||||
|
||||
const { cmdId, value } = findLastSessionCommand(Data.Command_DeckDelDir_ext);
|
||||
expect(value.path).toBe('/folder/to/remove');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
});
|
||||
|
||||
describe('replay operations', () => {
|
||||
|
|
|
|||
|
|
@ -101,4 +101,111 @@ describe('moderator commands', () => {
|
|||
|
||||
expect(store.getState().server.banUser).toBe('baduser');
|
||||
});
|
||||
|
||||
it('getWarnHistory dispatches with the response warnList', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.getWarnHistory('baduser');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_GetWarnHistory_ext);
|
||||
expect(value.userName).toBe('baduser');
|
||||
|
||||
const warning = create(Data.ServerInfo_WarningSchema, {
|
||||
adminName: 'Admin',
|
||||
reason: 'spamming',
|
||||
});
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
ext: Data.Response_WarnHistory_ext,
|
||||
value: create(Data.Response_WarnHistorySchema, { warnList: [warning] }),
|
||||
})));
|
||||
|
||||
const history = store.getState().server.warnHistory.baduser;
|
||||
expect(history).toHaveLength(1);
|
||||
expect(history[0].reason).toBe('spamming');
|
||||
});
|
||||
|
||||
it('getWarnList dispatches the warn-list options on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.getWarnList('mod', 'troublemaker', 'client-1');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_GetWarnList_ext);
|
||||
expect(value.modName).toBe('mod');
|
||||
expect(value.userName).toBe('troublemaker');
|
||||
expect(value.userClientid).toBe('client-1');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
ext: Data.Response_WarnList_ext,
|
||||
value: create(Data.Response_WarnListSchema, { warning: ['spam', 'abuse'] }),
|
||||
})));
|
||||
|
||||
expect(store.getState().server.warnListOptions.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('forceActivateUser sends command and resolves on RespOk', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.forceActivateUser('inactive', 'mod');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_ForceActivateUser_ext);
|
||||
expect(value.usernameToActivate).toBe('inactive');
|
||||
expect(value.moderatorName).toBe('mod');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
|
||||
it('getAdminNotes populates server.adminNotes on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.getAdminNotes('subject');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_GetAdminNotes_ext);
|
||||
expect(value.userName).toBe('subject');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
ext: Data.Response_GetAdminNotes_ext,
|
||||
value: create(Data.Response_GetAdminNotesSchema, { notes: 'prior offenses' }),
|
||||
})));
|
||||
|
||||
expect(store.getState().server.adminNotes.subject).toBe('prior offenses');
|
||||
});
|
||||
|
||||
it('updateAdminNotes sends notes payload and resolves on RespOk', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.updateAdminNotes('subject', 'updated notes text');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_UpdateAdminNotes_ext);
|
||||
expect(value.userName).toBe('subject');
|
||||
expect(value.notes).toBe('updated notes text');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
|
||||
it('grantReplayAccess sends command and resolves on RespOk', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.grantReplayAccess(42, 'mod');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_GrantReplayAccess_ext);
|
||||
expect(value.replayId).toBe(42);
|
||||
expect(value.moderatorName).toBe('mod');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue