Files
MemeMind-Server/src/modules/wechat-game/wechat-game.service.spec.ts
richarjiang 6413d4f34c init
2026-03-15 11:35:39 +08:00

87 lines
2.5 KiB
TypeScript

import { Test, TestingModule } from '@nestjs/testing';
import { WechatGameService } from './wechat-game.service';
import { GameConfigRepository } from './repositories/game-config.repository';
import { NotFoundException } from '@nestjs/common';
import { GameConfig } from './entities/game-config.entity';
describe('WechatGameService', () => {
let service: WechatGameService;
let repository: GameConfigRepository;
const mockGameConfig: GameConfig = {
id: 'test-uuid',
configKey: 'game_speed',
configValue: '1.5',
description: 'Game speed multiplier',
isActive: true,
createdAt: new Date(),
updatedAt: new Date(),
};
const mockRepository = {
findActiveConfigs: jest.fn(),
findByKey: jest.fn(),
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
WechatGameService,
{
provide: GameConfigRepository,
useValue: mockRepository,
},
],
}).compile();
service = module.get<WechatGameService>(WechatGameService);
repository = module.get<GameConfigRepository>(GameConfigRepository);
});
afterEach(() => {
jest.clearAllMocks();
});
describe('getAllConfigs', () => {
it('should return all active configs', async () => {
mockRepository.findActiveConfigs.mockResolvedValue([mockGameConfig]);
const result = await service.getAllConfigs();
expect(result.configs).toHaveLength(1);
expect(result.total).toBe(1);
expect(result.configs[0].configKey).toBe('game_speed');
expect(mockRepository.findActiveConfigs).toHaveBeenCalled();
});
it('should return empty array when no configs found', async () => {
mockRepository.findActiveConfigs.mockResolvedValue([]);
const result = await service.getAllConfigs();
expect(result.configs).toHaveLength(0);
expect(result.total).toBe(0);
});
});
describe('getConfigByKey', () => {
it('should return config by key', async () => {
mockRepository.findByKey.mockResolvedValue(mockGameConfig);
const result = await service.getConfigByKey('game_speed');
expect(result.configKey).toBe('game_speed');
expect(result.configValue).toBe('1.5');
expect(mockRepository.findByKey).toHaveBeenCalledWith('game_speed');
});
it('should throw NotFoundException when config not found', async () => {
mockRepository.findByKey.mockResolvedValue(null);
await expect(service.getConfigByKey('nonexistent')).rejects.toThrow(
NotFoundException,
);
});
});
});