@netdata/charts
Version:
Netdata frontend SDK and chart utilities
91 lines (90 loc) • 4.45 kB
JavaScript
;
var _react = _interopRequireDefault(require("react"));
var _react2 = require("@testing-library/react");
require("@testing-library/jest-dom");
var _testUtilities = require("@jest/testUtilities");
var _useHeadlessChart3 = _interopRequireDefault(require("./useHeadlessChart"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
var TestComponent = function TestComponent() {
var _useHeadlessChart = (0, _useHeadlessChart3["default"])(),
chart = _useHeadlessChart.chart,
data = _useHeadlessChart.data,
dimensionIds = _useHeadlessChart.dimensionIds,
helpers = _useHeadlessChart.helpers,
state = _useHeadlessChart.state;
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "chart-id",
children: chart.getId()
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "data-length",
children: data.length
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "dimension-ids",
children: dimensionIds.length
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "helpers",
children: typeof helpers.getDimensionIds === "function" ? "has helpers" : "no helpers"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "state-loading",
children: state.loading ? "loading" : "not loading"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "state-empty",
children: state.empty ? "empty" : "not empty"
})]
});
};
describe("useHeadlessChart", function () {
it("provides chart instance", function () {
(0, _testUtilities.renderWithChart)(/*#__PURE__*/(0, _jsxRuntime.jsx)(TestComponent, {}));
expect(_react2.screen.getByTestId("chart-id")).toHaveTextContent(/^[a-f0-9-]+$/);
});
it("provides data array", function () {
(0, _testUtilities.renderWithChart)(/*#__PURE__*/(0, _jsxRuntime.jsx)(TestComponent, {}));
expect(_react2.screen.getByTestId("data-length")).toHaveTextContent(/^\d+$/);
});
it("provides dimension ids", function () {
(0, _testUtilities.renderWithChart)(/*#__PURE__*/(0, _jsxRuntime.jsx)(TestComponent, {}));
expect(_react2.screen.getByTestId("dimension-ids")).toHaveTextContent(/^\d+$/);
});
it("provides helper functions", function () {
(0, _testUtilities.renderWithChart)(/*#__PURE__*/(0, _jsxRuntime.jsx)(TestComponent, {}));
expect(_react2.screen.getByTestId("helpers")).toHaveTextContent("has helpers");
});
it("provides state object", function () {
(0, _testUtilities.renderWithChart)(/*#__PURE__*/(0, _jsxRuntime.jsx)(TestComponent, {}));
expect(_react2.screen.getByTestId("state-loading")).toHaveTextContent(/^(loading|not loading)$/);
expect(_react2.screen.getByTestId("state-empty")).toHaveTextContent(/^(empty|not empty)$/);
});
it("returns processed data with formatted values", function () {
var _makeTestChart = (0, _testUtilities.makeTestChart)({
payload: {
data: [[1000, 10, 20], [2000, 15, 25]]
}
}),
chart = _makeTestChart.chart;
var TestDataComponent = function TestDataComponent() {
var _data$, _data$2;
var _useHeadlessChart2 = (0, _useHeadlessChart3["default"])(),
data = _useHeadlessChart2.data;
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "data-available",
children: data.length > 0 ? "has data" : "no data"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "first-timestamp",
children: ((_data$ = data[0]) === null || _data$ === void 0 ? void 0 : _data$.timestamp) || "no timestamp"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
"data-testid": "dimensions-count",
children: ((_data$2 = data[0]) === null || _data$2 === void 0 || (_data$2 = _data$2.dimensions) === null || _data$2 === void 0 ? void 0 : _data$2.length) || 0
})]
});
};
(0, _testUtilities.renderWithChart)(/*#__PURE__*/(0, _jsxRuntime.jsx)(TestDataComponent, {}), {
chart: chart
});
expect(_react2.screen.getByTestId("data-available")).toHaveTextContent(/^(has data|no data)$/);
expect(_react2.screen.getByTestId("dimensions-count")).toHaveTextContent(/^\d+$/);
});
});