complete unit testing of redux and api layers

This commit is contained in:
seavor 2026-04-12 12:53:51 -05:00
parent 367852866f
commit 3001925430
19 changed files with 2808 additions and 5 deletions

View file

@ -0,0 +1,98 @@
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('getConnectOptions → returns connectOptions', () => {
const connectOptions = { host: 'localhost', port: '4747' };
const state = makeServerState({ connectOptions });
expect(Selectors.getConnectOptions(rootState(state))).toBe(connectOptions);
});
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: { state: StatusEnum.CONNECTED, description: 'ok' } });
expect(Selectors.getDescription(rootState(state))).toBe('ok');
});
it('getState → returns status.state', () => {
const state = makeServerState({ status: { state: StatusEnum.LOGGED_IN, description: null } });
expect(Selectors.getState(rootState(state))).toBe(StatusEnum.LOGGED_IN);
});
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();
});
});