Files
Aislo/resources/tester/test_est_annual_workflow.py

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