feat: 新增数据库持久化支持并完善后台管理功能
- 引入dotenv加载环境变量,新增数据库同步配置项 - 为用户服务、管理员服务、数据服务添加数据库持久化逻辑 - 新增管理员用户邮箱字段,完善权限校验逻辑 - 添加数据库初始化与种子数据脚本 - 新增e2e测试验证管理员数据持久化
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { AdminService } from '../src/modules/admin/admin.service';
|
||||
import { DataService } from '../src/modules/data/data.service';
|
||||
import { TikTokDataProvider } from '../src/modules/data/providers/tiktok-data.provider';
|
||||
import { PublishStatus } from '../src/modules/dramas/drama-status.enum';
|
||||
@@ -48,6 +49,48 @@ function createDataSource(repositories: Record<string, unknown>) {
|
||||
}
|
||||
|
||||
describe('database-backed persistence', () => {
|
||||
it('persists permissions and admin profile changes through TypeORM repositories', async () => {
|
||||
const permissionRepository = createRepository();
|
||||
const roleRepository = createRepository();
|
||||
const adminUserRepository = createRepository();
|
||||
const dataSource = createDataSource({
|
||||
Permission: permissionRepository,
|
||||
Role: roleRepository,
|
||||
AdminUser: adminUserRepository,
|
||||
});
|
||||
const service = new AdminService(
|
||||
{ signAsync: jest.fn() } as never,
|
||||
dataSource as never,
|
||||
);
|
||||
|
||||
await service.onModuleInit();
|
||||
|
||||
const permissions = await service.listPermissions({ page: 1, pageSize: 50 });
|
||||
expect(permissions.list).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({ code: 'permission:read', name: '查看权限' }),
|
||||
expect.objectContaining({ code: 'data:read', name: '查看数据' }),
|
||||
]),
|
||||
);
|
||||
|
||||
const updated = await service.updateProfile(1, {
|
||||
nickname: '数据库管理员',
|
||||
email: 'db-admin@example.com',
|
||||
});
|
||||
|
||||
expect(updated).toMatchObject({
|
||||
id: 1,
|
||||
nickname: '数据库管理员',
|
||||
email: 'db-admin@example.com',
|
||||
});
|
||||
expect(adminUserRepository.save).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
nickname: '数据库管理员',
|
||||
email: 'db-admin@example.com',
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it('persists app users through TypeORM repositories when a DataSource is configured', async () => {
|
||||
const userRepository = createRepository();
|
||||
const dataSource = createDataSource({ User: userRepository });
|
||||
|
||||
Reference in New Issue
Block a user