31 lines
1.4 KiB
JavaScript
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\)/);
|
|
});
|