mirror of
https://github.com/moeacgx/Telegram-Panel.git
synced 2026-09-03 07:17:51 +08:00
## 本次版本主要更新 - 修复公开 issue 相关任务配置体验:消息换行、Bot start 链接、历史任务名称和活跃任务消息规则。 - 优化任务中心创建/编辑:支持自定义即时任务名称、移动端纵向排版、回复/转发/去重配置。 - 优化账号选择:账号显示用户可见编号,任务表单账号来源在“账号分类选择”和“账号编号填写”之间二选一。 - 优化账号分类、API 权重输入和批量任务并发设置即时生效。 Dev 已通过云端验收:commit db1a83d,dev-latest healthy,/ui/dashboard=200,/api/panel/auth/me version=1.31.57,任务页资源包含账号来源切换并移除旧合并文案。
91 lines
2.9 KiB
C#
91 lines
2.9 KiB
C#
using Microsoft.Data.Sqlite;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Logging.Abstractions;
|
|
using TelegramPanel.Core.Services;
|
|
using TelegramPanel.Data;
|
|
using TelegramPanel.Data.Entities;
|
|
using TelegramPanel.Data.Repositories;
|
|
using Xunit;
|
|
|
|
namespace TelegramPanel.Web.Tests;
|
|
|
|
public sealed class BatchTaskNamePersistenceTests
|
|
{
|
|
[Fact]
|
|
public async Task EditableDraftUpdate_canRenameAndClearBatchTaskName()
|
|
{
|
|
await using var connection = new SqliteConnection("Data Source=:memory:");
|
|
await connection.OpenAsync();
|
|
var options = new DbContextOptionsBuilder<AppDbContext>()
|
|
.UseSqlite(connection)
|
|
.Options;
|
|
|
|
int taskId;
|
|
await using (var db = new AppDbContext(options))
|
|
{
|
|
await db.Database.EnsureCreatedAsync();
|
|
db.BatchTasks.Add(new BatchTask
|
|
{
|
|
Name = "旧名称",
|
|
TaskType = "user_chat_active",
|
|
Status = "completed",
|
|
Total = 1,
|
|
Completed = 1,
|
|
Config = "{\"targets\":[]}",
|
|
CreatedAt = DateTime.UtcNow
|
|
});
|
|
await db.SaveChangesAsync();
|
|
taskId = db.BatchTasks.Single().Id;
|
|
}
|
|
|
|
await using (var db = new AppDbContext(options))
|
|
{
|
|
var service = CreateService(db);
|
|
var renamed = await service.TryUpdateEditableTaskDraftAsync(
|
|
taskId,
|
|
total: 2,
|
|
config: "{\"targets\":[\"@demo\"]}",
|
|
name: "新任务名称");
|
|
|
|
Assert.True(renamed);
|
|
}
|
|
|
|
await using (var db = new AppDbContext(options))
|
|
{
|
|
var renamedTask = await db.BatchTasks.AsNoTracking().SingleAsync();
|
|
Assert.Equal("新任务名称", renamedTask.Name);
|
|
Assert.Equal(2, renamedTask.Total);
|
|
Assert.Equal("{\"targets\":[\"@demo\"]}", renamedTask.Config);
|
|
}
|
|
|
|
await using (var db = new AppDbContext(options))
|
|
{
|
|
var service = CreateService(db);
|
|
var cleared = await service.TryUpdateEditableTaskDraftAsync(
|
|
taskId,
|
|
total: 3,
|
|
config: null,
|
|
name: null);
|
|
|
|
Assert.True(cleared);
|
|
}
|
|
|
|
await using (var db = new AppDbContext(options))
|
|
{
|
|
var clearedTask = await db.BatchTasks.AsNoTracking().SingleAsync();
|
|
Assert.Null(clearedTask.Name);
|
|
Assert.Equal(3, clearedTask.Total);
|
|
Assert.Null(clearedTask.Config);
|
|
}
|
|
}
|
|
|
|
private static BatchTaskManagementService CreateService(AppDbContext db)
|
|
{
|
|
return new BatchTaskManagementService(
|
|
new BatchTaskRepository(db),
|
|
new ConfigurationBuilder().Build(),
|
|
NullLogger<BatchTaskManagementService>.Instance);
|
|
}
|
|
}
|