Files
juzi/h5/test/contour-eye-copy.js
T

18 lines
1.5 KiB
JavaScript

'use strict';
const assert=require('node:assert/strict'),S=require('../js/skin-score'),UI=require('../js/report-ui');
const raw=structuredClone(S.MOCK_RESULT),base=S.buildViewModel(raw,S.MOCK_SIDE,{});
for(const P of [20,50,90])for(const pouch of [0,1,2,3,null,9])for(const circle of [0,1,2,3,null,9,1.5]) {
const vm=structuredClone(base);vm.cats.contour.P=P;Object.assign(vm.cats.contour.vars,{eye_pouch:pouch,dark_circle_sev:circle});
const before=JSON.stringify(vm),text=UI.build(vm,raw).views.find(v=>v.key==='contour').text;
assert.equal(text.includes('眼袋'),[1,2,3].includes(pouch));
assert.equal(text.includes('黑眼圈'),[1,2,3].includes(circle));
assert(!/无明显眼袋|无明显黑眼圈|数据未获取|[;、]{2}|[{}]/.test(text));
assert.equal(JSON.stringify(vm),before);
}
const saved=UI.build(base,raw);saved.copyRule='wrinkles-excellent-acne-detected-water-v2';saved.views[0].text='眼周无明显眼袋问题、无明显黑眼圈;';
base.cats.contour.vars.eye_pouch=0;base.cats.contour.vars.dark_circle_sev=2;
const before=JSON.stringify(saved),display=UI.forDisplay(base,raw,saved);
assert(!display.views[0].text.includes('眼袋'));assert(display.views[0].text.includes('黑眼圈中度'));
assert.equal(JSON.stringify(saved),before);assert.deepEqual(display.product,saved.product);
console.log('PASS contour eye copy: 126 grade/detection combinations, only positive problems, missing/invalid omitted, old report refresh and immutable scores/snapshots');