mirror of
https://github.com/Such-Software/wownerogue.git
synced 2026-10-18 14:51:26 +02:00
51 lines
2.2 KiB
JavaScript
51 lines
2.2 KiB
JavaScript
const AddressManager = require('../src/network/addressManager');
|
|
const { AppError } = require('../src/utils/errors');
|
|
|
|
describe('AddressManager', () => {
|
|
const sampleAddress = 'WW3UyJFX6GPKdM21APyVYjGhfX3ebyHvPPgtFC3wHxkYTCGg8k2UM9DLTCzcgoaLHSKnvJKRtCPgJ1sxvgYiFCoK19vLk83Jn';
|
|
|
|
function createManager({ existingAddress = null } = {}) {
|
|
const emitMock = jest.fn();
|
|
const toMock = jest.fn().mockReturnValue({ emit: emitMock });
|
|
const broadcastMock = { sendStatusUpdate: jest.fn() };
|
|
const gameModeManager = {
|
|
setUserPayoutAddress: jest.fn().mockResolvedValue(true),
|
|
getOrCreateUser: jest.fn().mockResolvedValue({ payout_address: existingAddress })
|
|
};
|
|
|
|
const manager = new AddressManager({
|
|
gameModeManager,
|
|
broadcastManager: broadcastMock,
|
|
io: { to: toMock },
|
|
debugManager: { CONSOLE_LOGGING: false },
|
|
onConfirmed: jest.fn()
|
|
});
|
|
|
|
return { manager, emitMock, toMock, broadcastMock, gameModeManager };
|
|
}
|
|
|
|
test('saveAddress persists and emits confirmation', async () => {
|
|
const { manager, emitMock, gameModeManager } = createManager();
|
|
|
|
await manager.saveAddress('socket-1', sampleAddress);
|
|
|
|
expect(gameModeManager.setUserPayoutAddress).toHaveBeenCalledWith('socket-1', sampleAddress);
|
|
expect(emitMock).toHaveBeenCalledWith('address_confirmed', expect.objectContaining({ address: sampleAddress }));
|
|
});
|
|
|
|
test('saveAddress rejects invalid address input', async () => {
|
|
const { manager } = createManager();
|
|
await expect(manager.saveAddress('socket-2', 'not-an-address')).rejects.toBeInstanceOf(AppError);
|
|
});
|
|
|
|
test('handleDetection skips confirmation when address already set', async () => {
|
|
const { manager, emitMock, gameModeManager } = createManager({ existingAddress: sampleAddress });
|
|
|
|
await manager.handleDetection('socket-3', sampleAddress);
|
|
|
|
expect(gameModeManager.getOrCreateUser).toHaveBeenCalled();
|
|
expect(manager.pending.has('socket-3')).toBe(false);
|
|
expect(emitMock).toHaveBeenCalledWith('address_confirmed', expect.objectContaining({ message: expect.stringContaining('already set') }));
|
|
});
|
|
});
|