Files
MBN_STOCK_WEBVIEW/tests/LegacyParityWeb/expert-null-parity.test.cjs

31 lines
1.4 KiB
JavaScript

"use strict";
const assert = require("node:assert/strict");
const fs = require("node:fs");
const path = require("node:path");
const test = require("node:test");
const repositoryRoot = path.resolve(__dirname, "..", "..");
const app = fs.readFileSync(path.join(repositoryRoot, "src",
"MBN_STOCK_WEBVIEW.LegacyParityApp", "Web", "app.js"), "utf8");
test("expert preview renders a legacy NULL buy amount as an empty value", () => {
const start = app.indexOf("function expertRecommendationText");
const end = app.indexOf("function renderExpert", start);
assert.ok(start >= 0 && end > start);
const source = app.slice(start, end);
const format = new Function(`${source}; return expertRecommendationText;`)();
assert.equal(format({ stockName: "삼성전자", buyAmount: null }), "삼성전자 · ");
assert.equal(format({ stockName: "카카오", buyAmount: 42000 }), "카카오 · 42000");
assert.doesNotMatch(source, /\+\s*row\.buyAmount/);
});
test("EList editor keeps NULL blank and sends NULL back without inventing a value", () => {
assert.match(app, /detail\.value = row\.buyAmount == null \? "" : String\(row\.buyAmount\)/);
assert.match(app,
/if \(!text\) \{[\s\S]*?set-operator-catalog-draft-buy-amount[\s\S]*?buyAmount: null/);
assert.match(app,
/if \(!operatorCatalogModal\.hidden && renderStateKey === operatorCatalogRenderStateKey\)/);
});