23 lines
1.2 KiB
JavaScript
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/);
|
|
});
|