"use strict"; const test = require("node:test"); const assert = require("node:assert/strict"); const fs = require("node:fs"); const path = require("node:path"); const foreign = require("../../Web/legacy-foreign-index-candle-workflow.js"); const legacyRows = require("../../Web/legacy-named-row-workflow.js"); const namedPlaylists = require("../../Web/named-playlist-workflow.js"); const root = path.resolve(__dirname, "../.."); const app = fs.readFileSync(path.join(root, "Web/app.js"), "utf8"); const index = fs.readFileSync(path.join(root, "Web/index.html"), "utf8"); const bridge = fs.readFileSync( path.join(root, "MainWindow.NamedForeignIndexCandleRestore.cs"), "utf8"); const namedBridge = fs.readFileSync(path.join(root, "MainWindow.NamedPlaylists.cs"), "utf8"); const core = fs.readFileSync( path.join(root, "src/MBN_STOCK_WEBVIEW.Core/Data/LegacyForeignIndexCandleRestore.cs"), "utf8"); function rawRow(period = "240일", enabled = false) { return { itemIndex: 0, enabled, groupCode: "해외지수", subject: "다우존스", graphicType: "캔들그래프", subtype: period, pageText: "1/1", dataCode: "" }; } function resolved(pending) { return { requestId: "foreign-load-1", retrievedAt: "2026-07-12T12:34:56+09:00", totalRowCount: 1, rows: [{ itemIndex: pending.itemIndex, status: "resolved", targetKey: pending.targetKey, inputName: pending.inputName, symbol: pending.symbol, nationCode: "US", foreignDomesticCode: "0", sceneCode: "s8010", valueType: "PRICE", periodDays: pending.periodDays, cutCode: pending.cutCode }] }; } test("named load performs one correlated exact foreign-index candle batch", () => { assert.match(index, /