42 lines
1.9 KiB
Python
42 lines
1.9 KiB
Python
from test_est_rea_parity import run
|
|
|
|
|
|
def test_annual_preview_is_financial_only_and_expanded_copy_preserves_assets():
|
|
result = run(
|
|
"math",
|
|
"""(()=>{
|
|
const p=EstNative.empty();p.id='123456789012345678901234';p.name='source';
|
|
p.options.SourceRefresh=false;p.originalArchive='original binary';
|
|
p.drawings=[{name:'drawing',binary:'AA=='}];
|
|
p.tables.EstMainDat=[{PkID:1,Code:'R',GN:3,GU:101},{LinkIndex:54}];
|
|
p.tables.StuffcDat=[{Code:'M',InputTC:123,ValueIndex:4}];
|
|
p.annual=[{name:' first ',formula:'[기준]*0.25'},{name:'second',formula:'[기준]-[first]'}];
|
|
const q=EstNative.calculate(p),before=JSON.stringify(q);
|
|
const preview=EstBusiness.annual(q,false),copy=EstBusiness.annualCopy(q,0);
|
|
copy.tables.StuffcDat[0].InputTC=456;
|
|
return {preview,copy,same:before===JSON.stringify(q)};
|
|
})()""",
|
|
)
|
|
assert result["same"]
|
|
assert result["preview"]["errors"] == []
|
|
assert result["preview"]["results"][0]["name"] == "first"
|
|
assert "originalArchive" not in result["preview"]["results"][0]["project"]
|
|
assert result["copy"]["originalArchive"] == "original binary"
|
|
assert result["copy"]["drawings"][0]["binary"] == "AA=="
|
|
assert "id" not in result["copy"]
|
|
assert result["copy"]["progress"] == result["copy"]["annual"] == []
|
|
assert result["copy"]["tables"]["EstMainDat"][0]["TC"] == 75
|
|
assert result["preview"]["results"][1]["project"]["tables"]["EstMainDat"][0]["TC"] == 228
|
|
|
|
|
|
def test_annual_copy_rejects_invalid_or_forward_references():
|
|
result = run(
|
|
"math",
|
|
"""(()=>{
|
|
const p=EstNative.empty();p.annual=[{name:'first',formula:'[second]'},{name:'second',formula:'[기준]'}];
|
|
p.tables.EstMainDat=[{Code:'R',GN:1,GC:100,TC:100,CalcIndex:1}];
|
|
try{EstBusiness.annualCopy(p,0);return false;}catch(error){return error.message;}
|
|
})()""",
|
|
)
|
|
assert "참조 항목 없음" in result
|