feat: restore legacy drag events and Tornado launch integration

This commit is contained in:
2026-07-15 15:35:25 +09:00
parent 6e0c275fdd
commit 06a16e5741
32 changed files with 3096 additions and 101 deletions

View File

@@ -5,6 +5,40 @@ namespace MBN_STOCK_WEBVIEW.Core.Tests;
public sealed class LegacyThemeCatalogPersistenceServiceTests
{
[Theory]
[InlineData(ThemeMarket.Krx, DataSourceKind.Oracle, 0, false)]
[InlineData(ThemeMarket.Krx, DataSourceKind.Oracle, 2, true)]
[InlineData(ThemeMarket.Nxt, DataSourceKind.MariaDb, 0, false)]
[InlineData(ThemeMarket.Nxt, DataSourceKind.MariaDb, 2, true)]
public async Task ThemeNameExistsAsync_UsesOneParameterizedExactReadOnTheSelectedMarket(
ThemeMarket market,
DataSourceKind expectedSource,
long count,
bool expected)
{
var query = new CatalogRecordingQueryExecutor(_ => ThemeCountTable(count));
var service = new LegacyThemeCatalogPersistenceService(query);
var title = new string('가', 128);
var exists = await service.ThemeNameExistsAsync(market, title);
Assert.Equal(expected, exists);
var call = Assert.Single(query.Calls);
Assert.Equal(expectedSource, call.Source);
Assert.Equal(
market == ThemeMarket.Krx
? LegacyThemeCatalogPersistenceService.NameExistsKrxQueryName
: LegacyThemeCatalogPersistenceService.NameExistsNxtQueryName,
call.TableName);
Assert.Contains("COUNT(*) THEME_COUNT", call.Spec.Sql, StringComparison.Ordinal);
Assert.Contains("s.SB_TITLE = ", call.Spec.Sql, StringComparison.Ordinal);
Assert.DoesNotContain(title, call.Spec.Sql, StringComparison.Ordinal);
var parameter = Assert.Single(call.Spec.Parameters);
Assert.Equal("theme_title", parameter.Name);
Assert.Equal(title, parameter.Value);
Assert.Equal(DbType.String, parameter.DbType);
}
[Fact]
public async Task SuggestNextCodeAsync_UsesReadOnlyProviderSpecificQueries()
{
@@ -341,6 +375,14 @@ public sealed class LegacyThemeCatalogPersistenceServiceTests
private static CatalogRecordingQueryExecutor UnusedQuery() =>
new(_ => throw new InvalidOperationException("No read query was expected."));
private static DataTable ThemeCountTable(long count)
{
var table = new DataTable();
table.Columns.Add("THEME_COUNT", typeof(long));
table.Rows.Add(count);
return table;
}
private static OperatorCatalogDbParameter Parameter(
OperatorCatalogDbCommand command,
string name) =>