Cockatrice/webclient/src/store/server/server.selectors.spec.ts
2026-04-14 14:39:46 -05:00

102 lines
3.9 KiB
TypeScript

import { Selectors } from './server.selectors';
import { ServerState } from './server.interfaces';
import {
makeDeckList,
makeReplayMatch,
makeServerState,
makeUser,
} from './__mocks__/server-fixtures';
import { StatusEnum } from 'types';
function rootState(server: ServerState) {
return { server };
}
describe('Selectors', () => {
it('getInitialized → returns initialized flag', () => {
const state = makeServerState({ initialized: true });
expect(Selectors.getInitialized(rootState(state))).toBe(true);
});
it('getMessage → returns info.message', () => {
const state = makeServerState({ info: { message: 'Welcome!', name: null, version: null } });
expect(Selectors.getMessage(rootState(state))).toBe('Welcome!');
});
it('getName → returns info.name', () => {
const state = makeServerState({ info: { message: null, name: 'Servatrice', version: null } });
expect(Selectors.getName(rootState(state))).toBe('Servatrice');
});
it('getVersion → returns info.version', () => {
const state = makeServerState({ info: { message: null, name: null, version: '2.9.0' } });
expect(Selectors.getVersion(rootState(state))).toBe('2.9.0');
});
it('getDescription → returns status.description', () => {
const state = makeServerState({ status: { connectionAttemptMade: false, state: StatusEnum.CONNECTED, description: 'ok' } });
expect(Selectors.getDescription(rootState(state))).toBe('ok');
});
it('getState → returns status.state', () => {
const state = makeServerState({ status: { connectionAttemptMade: false, state: StatusEnum.LOGGED_IN, description: null } });
expect(Selectors.getState(rootState(state))).toBe(StatusEnum.LOGGED_IN);
});
it('getConnectionAttemptMade → returns status.connectionAttemptMade', () => {
const state = makeServerState({ status: { connectionAttemptMade: true, state: StatusEnum.DISCONNECTED, description: null } });
expect(Selectors.getConnectionAttemptMade(rootState(state))).toBe(true);
});
it('getUser → returns user', () => {
const user = makeUser({ name: 'Alice' });
const state = makeServerState({ user });
expect(Selectors.getUser(rootState(state))).toBe(user);
});
it('getUsers → returns users array', () => {
const users = [makeUser(), makeUser({ name: 'Bob' })];
const state = makeServerState({ users });
expect(Selectors.getUsers(rootState(state))).toBe(users);
});
it('getLogs → returns logs object', () => {
const logs = { room: [], game: [], chat: [] };
const state = makeServerState({ logs });
expect(Selectors.getLogs(rootState(state))).toBe(logs);
});
it('getBuddyList → returns buddyList', () => {
const buddyList = [makeUser({ name: 'Carol' })];
const state = makeServerState({ buddyList });
expect(Selectors.getBuddyList(rootState(state))).toBe(buddyList);
});
it('getIgnoreList → returns ignoreList', () => {
const ignoreList = [makeUser({ name: 'Dave' })];
const state = makeServerState({ ignoreList });
expect(Selectors.getIgnoreList(rootState(state))).toBe(ignoreList);
});
it('getReplays → returns replays', () => {
const replays = [makeReplayMatch()];
const state = makeServerState({ replays });
expect(Selectors.getReplays(rootState(state))).toBe(replays);
});
it('getBackendDecks → returns backendDecks', () => {
const backendDecks = makeDeckList();
const state = makeServerState({ backendDecks });
expect(Selectors.getBackendDecks(rootState(state))).toBe(backendDecks);
});
it('getBackendDecks → returns null when not set', () => {
const state = makeServerState({ backendDecks: null });
expect(Selectors.getBackendDecks(rootState(state))).toBeNull();
});
it('getRegistrationError → returns registrationError', () => {
const state = makeServerState({ registrationError: 'bad input' });
expect(Selectors.getRegistrationError(rootState(state))).toBe('bad input');
});
});