feat: enable initial-consonant search everywhere
This commit is contained in:
@@ -366,6 +366,62 @@ public sealed class LegacyThemeWorkflowTests
|
||||
Assert.Equal("theme-result-5000", snapshot.SearchResults[^1].ResultId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SearchAsync_AcceptsConservativeTruncationAfterInitialFiltering()
|
||||
{
|
||||
var service = new FakeThemeSelectionService
|
||||
{
|
||||
SearchHandler = (query, session) => new ThemeSearchResult(
|
||||
query,
|
||||
session,
|
||||
DateTimeOffset.UtcNow,
|
||||
[
|
||||
Selector(
|
||||
ThemeMarket.Krx,
|
||||
ThemeSession.NotApplicable,
|
||||
"삼성 테마",
|
||||
"00000001")
|
||||
],
|
||||
IsTruncated: true)
|
||||
};
|
||||
var workflow = new LegacyThemeWorkflow(service);
|
||||
|
||||
var snapshot = await workflow.SearchAsync(
|
||||
workflow.CreateInitial(),
|
||||
"ㅅㅅ",
|
||||
ThemeSession.PreMarket);
|
||||
|
||||
Assert.Equal("삼성 테마", Assert.Single(snapshot.SearchResults).DisplayTitle);
|
||||
Assert.True(snapshot.SearchIsTruncated);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SearchAsync_StillRejectsImpossiblePartialTruncationForOrdinaryText()
|
||||
{
|
||||
var service = new FakeThemeSelectionService
|
||||
{
|
||||
SearchHandler = (query, session) => new ThemeSearchResult(
|
||||
query,
|
||||
session,
|
||||
DateTimeOffset.UtcNow,
|
||||
[
|
||||
Selector(
|
||||
ThemeMarket.Krx,
|
||||
ThemeSession.NotApplicable,
|
||||
"AI",
|
||||
"00000001")
|
||||
],
|
||||
IsTruncated: true)
|
||||
};
|
||||
var workflow = new LegacyThemeWorkflow(service);
|
||||
|
||||
await Assert.ThrowsAsync<LegacyThemeWorkflowDataException>(() =>
|
||||
workflow.SearchAsync(
|
||||
workflow.CreateInitial(),
|
||||
"AI",
|
||||
ThemeSession.PreMarket));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SelectAsync_UsesOpaqueResultIdAndCopiesValidatedPreview()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user