feat: enable initial-consonant search everywhere

This commit is contained in:
2026-07-27 01:48:32 +09:00
parent 8cad072cf0
commit e3b174eec7
22 changed files with 738 additions and 45 deletions

View File

@@ -54,6 +54,36 @@ public sealed class LegacyExpertWorkflowTests
() => controller.MaterializeSelectedAction("5074-caller-override"));
}
[Fact]
public async Task Search_AcceptsConservativeTruncationAfterInitialFiltering()
{
var service = new DelegateExpertService
{
Search = (query, _, _) => Task.FromResult(
SearchResult(query, Alpha) with { IsTruncated = true })
};
var controller = new LegacyExpertWorkflowController(service);
var searched = await controller.SearchAsync("ㄱㅈㅁ");
Assert.Equal(Alpha.ExpertName, Assert.Single(searched.Search.Results).ExpertName);
Assert.True(searched.Search.IsTruncated);
}
[Fact]
public async Task Search_StillRejectsImpossiblePartialTruncationForOrdinaryText()
{
var service = new DelegateExpertService
{
Search = (query, _, _) => Task.FromResult(
SearchResult(query, Alpha) with { IsTruncated = true })
};
var controller = new LegacyExpertWorkflowController(service);
await Assert.ThrowsAsync<ExpertSelectionDataException>(
() => controller.SearchAsync("Expert"));
}
[Theory]
[InlineData(1, false, 1)]
[InlineData(5, false, 1)]