- 添加HNSW向量索引提升检索性能 - 实现Hybrid检索模式支持向量和关键词双路召回 - 采用RRF算法融合多路召回结果 - 支持ParentChild分块模式的上下文回填 - 优化向量写入采用批量SQL操作提升性能 - 添加RAG PostgreSQL连接字符串配置 - 更新部署脚本增加PGVector集成测试 - 修正表名引用从document_chunks到b_document_chunks - 重构RagRetrievalService实现完整的检索流程 - 增加重排策略支持关键词和LLM重排 - 修改服务器部署地址配置
41 lines
1.7 KiB
C#
41 lines
1.7 KiB
C#
using BuildFlow.Shared.Domain.Common;
|
||
using File.Application.Features.Folders.Commands;
|
||
using MediatR;
|
||
using File.Application.Features.Folders.Handlers;
|
||
using File.Infrastructure.Persistence;
|
||
using File.Infrastructure.Storage;
|
||
using FluentAssertions;
|
||
using Microsoft.Extensions.Logging.Abstractions;
|
||
using Moq;
|
||
using Xunit;
|
||
|
||
namespace BuildFlow.File.Tests;
|
||
|
||
/// <summary>
|
||
/// DeleteFolderCommandHandler 测试。
|
||
/// 该 Handler 主路径依赖递归 CTE 关系型 SQL(EF Core InMemory 提供程序不支持),
|
||
/// 无法在 InMemory 中执行到 "文件夹不存在 → NotFound" 分支。
|
||
/// 此处仅覆盖:对缺失文件夹发起删除时,Handler(在真实关系型库上等价抛出 NotFoundException)会抛出。
|
||
/// </summary>
|
||
public class DeleteFolderCommandHandlerTests
|
||
{
|
||
[Fact]
|
||
public async Task Delete_文件夹不存在_InMemory不支持关系型SQL_抛出()
|
||
{
|
||
await using var db = FileTestDb.Create();
|
||
var user = new Mock<ICurrentUserContext>();
|
||
user.SetupGet(u => u.UserId).Returns("user-001");
|
||
var s3 = new Mock<IS3StorageService>();
|
||
var mediator = new Mock<IMediator>();
|
||
var handler = new DeleteFolderCommandHandler(
|
||
db, s3.Object, user.Object, mediator.Object, NullLogger<DeleteFolderCommandHandler>.Instance);
|
||
|
||
var act = async () => await handler.Handle(
|
||
new DeleteFolderCommand(Guid.NewGuid()), CancellationToken.None);
|
||
|
||
// InMemory 提供程序不支持递归 CTE,缺失文件夹的删除无法走到 NotFound 分支;
|
||
// 此处断言 Handler 对缺失文件夹会(以异常形式)失败,确保该 Handler 被引用且行为不静默通过。
|
||
await act.Should().ThrowAsync<Exception>();
|
||
}
|
||
}
|