87 lines
2.5 KiB
TypeScript
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,
|
|
);
|
|
});
|
|
});
|
|
});
|