Files
Telegram-Panel/tests/TelegramPanel.Web.Tests/BatchTaskNamePersistenceTests.cs
jack 2da09468d8 release: 发布 v1.31.57 公开 issue 修复与账号体验优化
## 本次版本主要更新

- 修复公开 issue 相关任务配置体验:消息换行、Bot start 链接、历史任务名称和活跃任务消息规则。
- 优化任务中心创建/编辑:支持自定义即时任务名称、移动端纵向排版、回复/转发/去重配置。
- 优化账号选择:账号显示用户可见编号,任务表单账号来源在“账号分类选择”和“账号编号填写”之间二选一。
- 优化账号分类、API 权重输入和批量任务并发设置即时生效。

Dev 已通过云端验收:commit db1a83d,dev-latest healthy,/ui/dashboard=200,/api/panel/auth/me version=1.31.57,任务页资源包含账号来源切换并移除旧合并文案。
2026-08-17 01:23:30 +08:00

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);
}
}