25546b5f44
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
58 lines
2.0 KiB
TypeScript
58 lines
2.0 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { ItemRegistry, type ItemDefinition } from '../itemRegistry.js';
|
|
|
|
describe('ItemRegistry', () => {
|
|
it('registers and retrieves an item', () => {
|
|
const registry = new ItemRegistry();
|
|
const item: ItemDefinition = {
|
|
id: 'log',
|
|
name: 'Log',
|
|
description: 'A wooden log',
|
|
category: 'resource',
|
|
source: 'seed',
|
|
};
|
|
registry.register(item);
|
|
expect(registry.get('log')).toEqual(item);
|
|
});
|
|
|
|
it('returns undefined for unknown items', () => {
|
|
const registry = new ItemRegistry();
|
|
expect(registry.get('nonexistent')).toBeUndefined();
|
|
});
|
|
|
|
it('prevents duplicate registration', () => {
|
|
const registry = new ItemRegistry();
|
|
const item: ItemDefinition = {
|
|
id: 'log',
|
|
name: 'Log',
|
|
description: 'A wooden log',
|
|
category: 'resource',
|
|
source: 'seed',
|
|
};
|
|
registry.register(item);
|
|
expect(() => registry.register(item)).toThrow('already registered');
|
|
});
|
|
|
|
it('lists all registered items', () => {
|
|
const registry = new ItemRegistry();
|
|
registry.register({ id: 'log', name: 'Log', description: '', category: 'resource', source: 'seed' });
|
|
registry.register({ id: 'stone', name: 'Stone', description: '', category: 'resource', source: 'seed' });
|
|
expect(registry.getAll()).toHaveLength(2);
|
|
});
|
|
|
|
it('finds items by category', () => {
|
|
const registry = new ItemRegistry();
|
|
registry.register({ id: 'log', name: 'Log', description: '', category: 'resource', source: 'seed' });
|
|
registry.register({ id: 'axe', name: 'Axe', description: '', category: 'tool', source: 'seed' });
|
|
expect(registry.getByCategory('resource')).toHaveLength(1);
|
|
expect(registry.getByCategory('resource')[0].id).toBe('log');
|
|
});
|
|
|
|
it('createDefault registers seed resources', () => {
|
|
const registry = ItemRegistry.createDefault();
|
|
expect(registry.get('log')).toBeDefined();
|
|
expect(registry.get('stone')).toBeDefined();
|
|
expect(registry.get('water')).toBeDefined();
|
|
});
|
|
});
|