Files
NODEDC_DESIGN_GUIDELINE/scripts/progress-bar-contract.test.mjs

23 lines
1.2 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {createElement} from "react";
import {renderToStaticMarkup} from "react-dom/server";
import {ProgressBar,ResourceRow} from "../packages/ui-react/dist/index.js";
test("progress exposes bounded measured values and unknown state without false percentages",()=>{
for(const [value, expected] of [[-1,0],[.5,50],[2,100]]) {
const html=renderToStaticMarkup(createElement(ProgressBar,{label:"Этапы",value}));
assert.match(html,new RegExp(`aria-valuenow="${expected}"`));
}
for(const value of [undefined,NaN,Infinity]) {
const html=renderToStaticMarkup(createElement(ProgressBar,{label:"Ожидание",value}));
assert.doesNotMatch(html,/aria-valuenow/);assert.match(html,/data-indeterminate="true"/);
}
});
test("row keeps progress between name and actions and suppresses duplicate status",()=>{
const html=renderToStaticMarkup(createElement(ResourceRow,{title:"Камера",status:"Old status",actions:"Actions",progress:{label:"Загрузка",value:.2}}));
assert.ok(html.indexOf("Камера")<html.indexOf('role="progressbar"'));
assert.ok(html.indexOf('role="progressbar"')<html.indexOf("Actions"));
assert.doesNotMatch(html,/Old status/);
});