@pie-lib/charting 7.0.13 → 7.1.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -44
- package/lib/__tests__/actions-button.test.js +332 -0
- package/lib/__tests__/actions-button.test.js.map +1 -0
- package/lib/__tests__/axes.test.js +746 -0
- package/lib/__tests__/axes.test.js.map +1 -0
- package/lib/__tests__/chart-setup.test.js +796 -0
- package/lib/__tests__/chart-setup.test.js.map +1 -0
- package/lib/__tests__/chart-type.test.js +25 -0
- package/lib/__tests__/chart-type.test.js.map +1 -0
- package/lib/__tests__/chart.test.js +103 -0
- package/lib/__tests__/chart.test.js.map +1 -0
- package/lib/__tests__/grid.test.js +39 -0
- package/lib/__tests__/grid.test.js.map +1 -0
- package/lib/__tests__/key-legend.test.js +235 -0
- package/lib/__tests__/key-legend.test.js.map +1 -0
- package/lib/__tests__/mark-label.test.js +46 -0
- package/lib/__tests__/mark-label.test.js.map +1 -0
- package/lib/__tests__/tool-menu.test.js +627 -0
- package/lib/__tests__/tool-menu.test.js.map +1 -0
- package/lib/__tests__/utils.js +56 -0
- package/lib/__tests__/utils.js.map +1 -0
- package/lib/__tests__/utils.test.js +186 -0
- package/lib/__tests__/utils.test.js.map +1 -0
- package/lib/bars/__tests__/bar.test.js +53 -0
- package/lib/bars/__tests__/bar.test.js.map +1 -0
- package/lib/bars/__tests__/histogram.test.js +53 -0
- package/lib/bars/__tests__/histogram.test.js.map +1 -0
- package/lib/bars/__tests__/utils.js +50 -0
- package/lib/bars/__tests__/utils.js.map +1 -0
- package/lib/bars/common/__tests__/bars.test.js +76 -0
- package/lib/bars/common/__tests__/bars.test.js.map +1 -0
- package/lib/bars/common/__tests__/utils.js +50 -0
- package/lib/bars/common/__tests__/utils.js.map +1 -0
- package/lib/common/__tests__/correctness-indicators.test.js +887 -0
- package/lib/common/__tests__/correctness-indicators.test.js.map +1 -0
- package/lib/common/__tests__/drag-handle.test.js +73 -0
- package/lib/common/__tests__/drag-handle.test.js.map +1 -0
- package/lib/common/__tests__/utils.js +50 -0
- package/lib/common/__tests__/utils.js.map +1 -0
- package/lib/line/__tests__/line-cross.test.js +617 -0
- package/lib/line/__tests__/line-cross.test.js.map +1 -0
- package/lib/line/__tests__/line-dot.test.js +47 -0
- package/lib/line/__tests__/line-dot.test.js.map +1 -0
- package/lib/line/__tests__/utils.js +56 -0
- package/lib/line/__tests__/utils.js.map +1 -0
- package/lib/line/common/__tests__/drag-handle.test.js +73 -0
- package/lib/line/common/__tests__/drag-handle.test.js.map +1 -0
- package/lib/line/common/__tests__/line.test.js +92 -0
- package/lib/line/common/__tests__/line.test.js.map +1 -0
- package/lib/line/common/__tests__/utils.js +50 -0
- package/lib/line/common/__tests__/utils.js.map +1 -0
- package/lib/plot/__tests__/dot.test.js +513 -0
- package/lib/plot/__tests__/dot.test.js.map +1 -0
- package/lib/plot/__tests__/line.test.js +566 -0
- package/lib/plot/__tests__/line.test.js.map +1 -0
- package/lib/plot/__tests__/utils.js +50 -0
- package/lib/plot/__tests__/utils.js.map +1 -0
- package/lib/plot/common/__tests__/plot.test.js +79 -0
- package/lib/plot/common/__tests__/plot.test.js.map +1 -0
- package/lib/plot/common/__tests__/utils.js +50 -0
- package/lib/plot/common/__tests__/utils.js.map +1 -0
- package/package.json +5 -5
- package/LICENSE.md +0 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-setup.test.js","names":["_react","_interopRequireDefault","require","_react2","_styles","_chartSetup","_interopRequireWildcard","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","jest","mock","ChartType","_ref","value","onChange","createElement","NumberTextFieldCustom","_ref2","label","props","_objectWithoutProperties2","_extends2","concat","toLowerCase","replace","type","parseFloat","target","AlertDialog","_ref3","open","title","text","onClose","onConfirm","onClick","theme","beforeAll","createTheme","describe","data","range","model","beforeEach","min","max","step","someField","fn","it","resetValues","expect","toBe","not","toHaveBeenCalled","toThrow","undefined","toHaveBeenCalledWith","multiData","every","d","decimalRange","decimalData","defaultModel","chartType","labelStep","graph","width","height","correctAnswer","changeInteractiveEnabled","changeEditableEnabled","defaultProps","chartDimensions","showInConfigPanel","gridValues","labelValues","studentNewCategoryDefaultLabel","availableChartTypes","chartTypeLabel","clearAllMocks","renderComponent","extras","render","ThemeProvider","_renderComponent","container","toBeInTheDocument","_renderComponent2","getByText","_renderComponent3","getByTestId","_renderComponent4","getByLabelText","_renderComponent5","_renderComponent6","_renderComponent7","queryByLabelText","_renderComponent8","_renderComponent9","queryByText","_renderComponent0","_renderComponent1","_renderComponent10","_renderComponent11","getAllByText","constraints","toBeGreaterThan","_renderComponent12","fireEvent","change","_asyncToGenerator2","_regenerator","mark","_callee","_renderComponent13","wrap","_context","prev","next","waitFor","stop","_renderComponent14","objectContaining","_renderComponent15","maxInput","_renderComponent16","stepInput","_renderComponent17","labelStepInput","_callee2","_renderComponent18","queryByTestId","_context2","_callee3","_renderComponent19","_context3","_renderComponent20","widthInput","_renderComponent21","heightInput","_callee4","_renderComponent22","event","_context4","dialog","click","timeout","_callee5","_renderComponent23","_context5","_renderComponent24","_renderComponent25","_renderComponent26","_renderComponent27","_renderComponent28","_renderComponent29","_renderComponent30","_renderComponent31"],"sources":["../../src/__tests__/chart-setup.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render, waitFor } from '@testing-library/react';\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nimport ConfigureChartPanel, { resetValues } from '../chart-setup';\n\njest.mock('../chart-type', () => {\n return function ChartType({ value, onChange }) {\n return (\n <select data-testid=\"chart-type-select\" value={value} onChange={onChange}>\n <option value=\"bar\">Bar</option>\n <option value=\"line\">Line</option>\n <option value=\"linePlot\">Line Plot</option>\n <option value=\"dotPlot\">Dot Plot</option>\n </select>\n );\n };\n});\n\njest.mock('@pie-lib/config-ui', () => ({\n NumberTextFieldCustom: ({ label, value, onChange, ...props }) => (\n <input\n data-testid={`number-field-${label.toLowerCase().replace(/\\s+/g, '-')}`}\n type=\"number\"\n value={value}\n onChange={(e) => onChange(e, parseFloat(e.target.value) || 0)}\n aria-label={label}\n {...props}\n />\n ),\n AlertDialog: ({ open, title, text, onClose, onConfirm }) =>\n open ? (\n <div data-testid=\"alert-dialog\">\n <h2>{title}</h2>\n <p>{text}</p>\n <button data-testid=\"alert-cancel\" onClick={onClose}>\n Cancel\n </button>\n <button data-testid=\"alert-confirm\" onClick={onConfirm}>\n Confirm\n </button>\n </div>\n ) : null,\n}));\n\nlet theme;\n\nbeforeAll(() => {\n theme = createTheme();\n});\n\ndescribe('resetValues', () => {\n let data;\n let range;\n let model;\n let onChange;\n\n beforeEach(() => {\n range = { min: 0, max: 10, step: 1 };\n data = [{ value: 2 }, { value: 11 }, { value: 5.5 }, { value: 2.0000000001 }, { value: 2.9999999999 }];\n model = { someField: 'someValue', data };\n onChange = jest.fn();\n });\n\n it('should reset values greater than range.max to zero', () => {\n resetValues(data, true, range, onChange, model);\n expect(data[1].value).toBe(0);\n });\n\n it('should reset values that are not multiples of range.step to zero', () => {\n resetValues(data, true, range, onChange, model);\n expect(data[2].value).toBe(0);\n });\n\n it('should not reset values that are within range and multiples of range.step', () => {\n resetValues(data, true, range, onChange, model);\n expect(data[0].value).toBe(2);\n });\n\n it('should not reset floating point values that are close to multiples of range.step', () => {\n resetValues(data, true, range, onChange, model);\n expect(data[3].value).toBe(2.0000000001);\n expect(data[4].value).toBe(2.9999999999);\n });\n\n it('should not call onChange when updateModel is false', () => {\n resetValues(data, false, range, onChange, model);\n expect(onChange).not.toHaveBeenCalled();\n });\n\n it('should handle null or undefined data array', () => {\n expect(() => resetValues(null, true, range, onChange, model)).not.toThrow();\n expect(() => resetValues(undefined, true, range, onChange, model)).not.toThrow();\n });\n\n it('should handle empty data array', () => {\n resetValues([], true, range, onChange, model);\n expect(onChange).toHaveBeenCalledWith({ ...model, data: [] });\n });\n\n it('should reset multiple invalid values', () => {\n const multiData = [{ value: 11 }, { value: 12 }, { value: 5.5 }, { value: 3.7 }];\n resetValues(multiData, true, range, onChange, { ...model, data: multiData });\n expect(multiData.every((d) => d.value === 0)).toBe(true);\n });\n\n it('should handle decimal step values', () => {\n const decimalRange = { min: 0, max: 10, step: 0.5 };\n const decimalData = [{ value: 1.5 }, { value: 2.3 }, { value: 3.0 }];\n resetValues(decimalData, true, decimalRange, onChange, model);\n expect(decimalData[0].value).toBe(1.5);\n expect(decimalData[1].value).toBe(0);\n expect(decimalData[2].value).toBe(3.0);\n });\n});\n\ndescribe('ConfigureChartPanel', () => {\n const defaultModel = {\n chartType: 'bar',\n range: { min: 0, max: 10, step: 1, labelStep: 1 },\n graph: { width: 400, height: 500 },\n data: [{ value: 5 }],\n correctAnswer: { data: [{ value: 3 }] },\n changeInteractiveEnabled: true,\n changeEditableEnabled: true,\n };\n\n const defaultProps = {\n model: defaultModel,\n onChange: jest.fn(),\n chartDimensions: {\n showInConfigPanel: true,\n width: { min: 50, max: 700, step: 20 },\n height: { min: 400, max: 700, step: 20 },\n },\n gridValues: { range: { min: 0, max: 10000 } },\n labelValues: { range: { min: 0, max: 10000 } },\n studentNewCategoryDefaultLabel: { label: 'Category' },\n availableChartTypes: {},\n chartTypeLabel: 'Chart Type',\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const renderComponent = (extras = {}) => {\n const props = { ...defaultProps, ...extras };\n return render(\n <ThemeProvider theme={theme}>\n <ConfigureChartPanel {...props} />\n </ThemeProvider>,\n );\n };\n\n describe('rendering', () => {\n it('should render without crashing', () => {\n const { container } = renderComponent();\n expect(container).toBeInTheDocument();\n });\n\n it('should render \"Configure Chart\" title', () => {\n const { getByText } = renderComponent();\n expect(getByText('Configure Chart')).toBeInTheDocument();\n });\n\n it('should render chart type selector', () => {\n const { getByTestId } = renderComponent();\n expect(getByTestId('chart-type-select')).toBeInTheDocument();\n });\n\n it('should render max value field', () => {\n const { getByLabelText } = renderComponent();\n expect(getByLabelText('Max Value')).toBeInTheDocument();\n });\n\n it('should render grid interval field for non-plot charts', () => {\n const { getByLabelText } = renderComponent({\n model: { ...defaultModel, chartType: 'bar' },\n });\n expect(getByLabelText('Grid Interval')).toBeInTheDocument();\n });\n\n it('should render label interval field for non-plot charts', () => {\n const { getByLabelText } = renderComponent({\n model: { ...defaultModel, chartType: 'bar' },\n });\n expect(getByLabelText('Label Interval')).toBeInTheDocument();\n });\n\n it('should not render step config for plot charts', () => {\n const { queryByLabelText } = renderComponent({\n model: { ...defaultModel, chartType: 'linePlot' },\n });\n expect(queryByLabelText('Grid Interval')).not.toBeInTheDocument();\n expect(queryByLabelText('Label Interval')).not.toBeInTheDocument();\n });\n\n it('should render dimensions section when showInConfigPanel is true', () => {\n const { getByText } = renderComponent({\n chartDimensions: {\n showInConfigPanel: true,\n width: { min: 50, max: 700, step: 20 },\n height: { min: 400, max: 700, step: 20 },\n },\n });\n expect(getByText('Dimensions(px)')).toBeInTheDocument();\n });\n\n it('should not render dimensions section when showInConfigPanel is false', () => {\n const { queryByText } = renderComponent({\n chartDimensions: {\n showInConfigPanel: false,\n width: { min: 50, max: 700, step: 20 },\n height: { min: 400, max: 700, step: 20 },\n },\n });\n expect(queryByText('Dimensions(px)')).not.toBeInTheDocument();\n });\n\n it('should render width field when dimensions are shown', () => {\n const { getByLabelText } = renderComponent();\n expect(getByLabelText('Width')).toBeInTheDocument();\n });\n\n it('should render height field when dimensions are shown', () => {\n const { getByLabelText } = renderComponent();\n expect(getByLabelText('Height')).toBeInTheDocument();\n });\n\n it('should display width constraints', () => {\n const { getByText } = renderComponent();\n expect(getByText('Min 50, Max 700')).toBeInTheDocument();\n });\n\n it('should display height constraints', () => {\n const { getAllByText } = renderComponent();\n const constraints = getAllByText('Min 400, Max 700');\n expect(constraints.length).toBeGreaterThan(0);\n });\n });\n\n describe('chart type changes', () => {\n it('should call onChange when chart type is changed to non-plot', () => {\n const onChange = jest.fn();\n const { getByTestId } = renderComponent({ onChange });\n\n fireEvent.change(getByTestId('chart-type-select'), { target: { value: 'line' } });\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('should show warning when switching to plot with invalid config', async () => {\n const { getByTestId, getByText } = renderComponent({\n model: { ...defaultModel, range: { max: 20, step: 2, labelStep: 2 } },\n });\n\n fireEvent.change(getByTestId('chart-type-select'), { target: { value: 'linePlot' } });\n\n await waitFor(() => {\n expect(getByText('Warning')).toBeInTheDocument();\n });\n });\n\n it('should allow switching to plot with valid config', () => {\n const onChange = jest.fn();\n const { getByTestId } = renderComponent({\n onChange,\n model: { ...defaultModel, range: { max: 10, step: 1, labelStep: 1 } },\n });\n\n fireEvent.change(getByTestId('chart-type-select'), { target: { value: 'dotPlot' } });\n\n expect(onChange).toHaveBeenCalledWith(\n expect.objectContaining({\n chartType: 'dotPlot',\n }),\n );\n });\n });\n\n describe('range changes', () => {\n it('should update max value', () => {\n const onChange = jest.fn();\n const { getByLabelText } = renderComponent({ onChange });\n\n const maxInput = getByLabelText('Max Value');\n fireEvent.change(maxInput, { target: { value: '15' } });\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('should update step value', () => {\n const onChange = jest.fn();\n const { getByLabelText } = renderComponent({ onChange });\n\n const stepInput = getByLabelText('Grid Interval');\n fireEvent.change(stepInput, { target: { value: '2' } });\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('should update label step value', () => {\n const onChange = jest.fn();\n const { getByLabelText } = renderComponent({ onChange });\n\n const labelStepInput = getByLabelText('Label Interval');\n fireEvent.change(labelStepInput, { target: { value: '2' } });\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('should show alert when changing max causes data to be out of range', async () => {\n const onChange = jest.fn();\n const { getByLabelText, queryByTestId } = renderComponent({\n onChange,\n model: {\n ...defaultModel,\n range: { min: 0, max: 10, step: 1, labelStep: 1 },\n data: [{ value: 8 }],\n correctAnswer: { data: [] },\n },\n });\n\n const maxInput = getByLabelText('Max Value');\n fireEvent.change(maxInput, { target: { value: '5' } });\n\n await waitFor(() => {\n expect(onChange).toHaveBeenCalled();\n });\n });\n\n it('should show alert when changing step causes data to be out of range', async () => {\n const onChange = jest.fn();\n const { getByLabelText } = renderComponent({\n onChange,\n model: {\n ...defaultModel,\n range: { min: 0, max: 10, step: 1, labelStep: 1 },\n data: [{ value: 5 }],\n correctAnswer: { data: [] },\n },\n });\n\n const stepInput = getByLabelText('Grid Interval');\n fireEvent.change(stepInput, { target: { value: '3' } });\n\n await waitFor(() => {\n expect(onChange).toHaveBeenCalled();\n });\n });\n });\n\n describe('dimensions changes', () => {\n it('should update width', () => {\n const onChange = jest.fn();\n const { getByLabelText } = renderComponent({ onChange });\n\n const widthInput = getByLabelText('Width');\n fireEvent.change(widthInput, { target: { value: '500' } });\n\n expect(onChange).toHaveBeenCalledWith(\n expect.objectContaining({\n graph: expect.objectContaining({ width: 500 }),\n }),\n );\n });\n\n it('should update height', () => {\n const onChange = jest.fn();\n const { getByLabelText } = renderComponent({ onChange });\n\n const heightInput = getByLabelText('Height');\n fireEvent.change(heightInput, { target: { value: '600' } });\n\n expect(onChange).toHaveBeenCalledWith(\n expect.objectContaining({\n graph: expect.objectContaining({ height: 600 }),\n }),\n );\n });\n });\n\n describe('alert dialog', () => {\n it('should reset range on cancel', async () => {\n const onChange = jest.fn();\n const { getByLabelText, queryByTestId } = renderComponent({\n onChange,\n model: {\n ...defaultModel,\n range: { min: 0, max: 10, step: 1, labelStep: 1 },\n data: [{ value: 8 }],\n correctAnswer: { data: [] },\n },\n });\n\n const maxInput = getByLabelText('Max Value');\n\n const event = { target: maxInput };\n fireEvent.change(maxInput, { target: { value: '5' } });\n\n await waitFor(\n () => {\n const dialog = queryByTestId('alert-dialog');\n if (dialog) {\n fireEvent.click(queryByTestId('alert-cancel'));\n }\n },\n { timeout: 100 },\n ).catch(() => {});\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('should apply changes and reset data on confirm', async () => {\n const onChange = jest.fn();\n const { getByLabelText, queryByTestId } = renderComponent({\n onChange,\n model: {\n ...defaultModel,\n range: { min: 0, max: 10, step: 1, labelStep: 1 },\n data: [{ value: 8 }],\n correctAnswer: { data: [] },\n },\n });\n\n const maxInput = getByLabelText('Max Value');\n fireEvent.change(maxInput, { target: { value: '5' } });\n\n await waitFor(\n () => {\n const dialog = queryByTestId('alert-dialog');\n if (dialog) {\n fireEvent.click(queryByTestId('alert-confirm'));\n }\n },\n { timeout: 100 },\n ).catch(() => {});\n\n expect(onChange).toHaveBeenCalled();\n });\n });\n\n describe('edge cases', () => {\n it('should handle missing chartDimensions', () => {\n const { container } = renderComponent({ chartDimensions: undefined });\n expect(container).toBeInTheDocument();\n });\n\n it('should handle missing gridValues', () => {\n const { container } = renderComponent({ gridValues: undefined });\n expect(container).toBeInTheDocument();\n });\n\n it('should handle missing labelValues', () => {\n const { container } = renderComponent({ labelValues: undefined });\n expect(container).toBeInTheDocument();\n });\n\n it('should handle empty model data', () => {\n const { container } = renderComponent({\n model: {\n ...defaultModel,\n data: [],\n correctAnswer: { data: [] },\n },\n });\n expect(container).toBeInTheDocument();\n });\n\n it('should handle empty range object', () => {\n const { container } = renderComponent({\n model: {\n ...defaultModel,\n range: {},\n },\n });\n expect(container).toBeInTheDocument();\n });\n\n it('should apply width constraints correctly', () => {\n const { container } = renderComponent({\n chartDimensions: {\n showInConfigPanel: true,\n width: { min: 100, max: 600, step: 50 },\n height: { min: 400, max: 700, step: 20 },\n },\n });\n expect(container).toBeInTheDocument();\n });\n\n it('should apply height constraints correctly', () => {\n const { container } = renderComponent({\n chartDimensions: {\n showInConfigPanel: true,\n width: { min: 50, max: 700, step: 20 },\n height: { min: 450, max: 650, step: 30 },\n },\n });\n expect(container).toBeInTheDocument();\n });\n\n it('should handle very small step values', () => {\n const { container } = renderComponent({\n chartDimensions: {\n showInConfigPanel: true,\n width: { min: 50, max: 700, step: 0.5 },\n height: { min: 400, max: 700, step: 0.5 },\n },\n });\n expect(container).toBeInTheDocument();\n });\n });\n\n describe('useEffect lifecycle', () => {\n it('should call onChange on mount', () => {\n const onChange = jest.fn();\n renderComponent({ onChange });\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('should set category default label on mount', () => {\n const onChange = jest.fn();\n renderComponent({\n onChange,\n studentNewCategoryDefaultLabel: { label: 'Test Category' },\n });\n\n expect(onChange).toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _testUtils = require("@pie-lib/test-utils");
|
|
6
|
+
var _chartType = _interopRequireDefault(require("../chart-type"));
|
|
7
|
+
describe('ChartType', function () {
|
|
8
|
+
var props;
|
|
9
|
+
var onChange = jest.fn();
|
|
10
|
+
beforeEach(function () {
|
|
11
|
+
props = {
|
|
12
|
+
classes: {},
|
|
13
|
+
value: 'bar',
|
|
14
|
+
onChange: onChange
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
describe('rendering', function () {
|
|
18
|
+
it('renders chart type selector', function () {
|
|
19
|
+
var _render = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_chartType["default"], props)),
|
|
20
|
+
container = _render.container;
|
|
21
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=chart-type.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-type.test.js","names":["_react","_interopRequireDefault","require","_testUtils","_chartType","describe","props","onChange","jest","fn","beforeEach","classes","value","it","_render","render","createElement","container","expect","firstChild","toBeInTheDocument"],"sources":["../../src/__tests__/chart-type.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@pie-lib/test-utils';\nimport ChartType from '../chart-type';\n\ndescribe('ChartType', () => {\n let props;\n const onChange = jest.fn();\n\n beforeEach(() => {\n props = {\n classes: {},\n value: 'bar',\n onChange,\n };\n });\n\n describe('rendering', () => {\n it('renders chart type selector', () => {\n const { container } = render(<ChartType {...props} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n});\n"],"mappings":";;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEAG,QAAQ,CAAC,WAAW,EAAE,YAAM;EAC1B,IAAIC,KAAK;EACT,IAAMC,QAAQ,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EAE1BC,UAAU,CAAC,YAAM;IACfJ,KAAK,GAAG;MACNK,OAAO,EAAE,CAAC,CAAC;MACXC,KAAK,EAAE,KAAK;MACZL,QAAQ,EAARA;IACF,CAAC;EACH,CAAC,CAAC;EAEFF,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1BQ,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAAC,OAAA,GAAsB,IAAAC,iBAAM,eAACf,MAAA,YAAAgB,aAAA,CAACZ,UAAA,WAAS,EAAKE,KAAQ,CAAC,CAAC;QAA9CW,SAAS,GAAAH,OAAA,CAATG,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _testUtils = require("@pie-lib/test-utils");
|
|
7
|
+
var _chart = require("../chart");
|
|
8
|
+
var _utils = require("./utils");
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
+
describe('ChartAxes', function () {
|
|
12
|
+
var onDataChange = jest.fn();
|
|
13
|
+
var renderComponent = function renderComponent(extras) {
|
|
14
|
+
var defaults = {
|
|
15
|
+
classes: {},
|
|
16
|
+
onDataChange: onDataChange,
|
|
17
|
+
className: 'className',
|
|
18
|
+
graphProps: (0, _utils.graphProps)(),
|
|
19
|
+
xBand: (0, _utils.createBandScale)(['a', 'b', 'c'], [0, 100]),
|
|
20
|
+
charts: [{
|
|
21
|
+
type: 'bar',
|
|
22
|
+
Component: function Component() {
|
|
23
|
+
return /*#__PURE__*/_react["default"].createElement("div", null);
|
|
24
|
+
}
|
|
25
|
+
}],
|
|
26
|
+
chartType: 'bar',
|
|
27
|
+
domain: {},
|
|
28
|
+
range: {
|
|
29
|
+
min: 0,
|
|
30
|
+
max: 10
|
|
31
|
+
},
|
|
32
|
+
size: {
|
|
33
|
+
width: 100,
|
|
34
|
+
height: 100
|
|
35
|
+
},
|
|
36
|
+
data: []
|
|
37
|
+
};
|
|
38
|
+
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
39
|
+
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_chart.Chart, props));
|
|
40
|
+
};
|
|
41
|
+
describe('rendering', function () {
|
|
42
|
+
it('renders chart container', function () {
|
|
43
|
+
var _renderComponent = renderComponent(),
|
|
44
|
+
container = _renderComponent.container;
|
|
45
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
46
|
+
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
it('renders chart with default size', function () {
|
|
49
|
+
var _renderComponent2 = renderComponent(),
|
|
50
|
+
container = _renderComponent2.container;
|
|
51
|
+
var svg = container.querySelector('svg');
|
|
52
|
+
expect(svg).toBeInTheDocument();
|
|
53
|
+
expect(svg).toHaveAttribute('width', '240');
|
|
54
|
+
expect(svg).toHaveAttribute('height', '240');
|
|
55
|
+
});
|
|
56
|
+
it('renders chart when size is not defined', function () {
|
|
57
|
+
var _renderComponent3 = renderComponent({
|
|
58
|
+
size: undefined
|
|
59
|
+
}),
|
|
60
|
+
container = _renderComponent3.container;
|
|
61
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
62
|
+
var svg = container.querySelector('svg');
|
|
63
|
+
expect(svg).toBeInTheDocument();
|
|
64
|
+
});
|
|
65
|
+
it('renders chart without chartType property', function () {
|
|
66
|
+
var _renderComponent4 = renderComponent({
|
|
67
|
+
chartType: null
|
|
68
|
+
}),
|
|
69
|
+
container = _renderComponent4.container;
|
|
70
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
71
|
+
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
72
|
+
});
|
|
73
|
+
it('renders chart without chartType and charts properties', function () {
|
|
74
|
+
var _renderComponent5 = renderComponent({
|
|
75
|
+
chartType: null,
|
|
76
|
+
charts: null
|
|
77
|
+
}),
|
|
78
|
+
container = _renderComponent5.container;
|
|
79
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
80
|
+
});
|
|
81
|
+
it('renders chart without chartType property and empty charts property', function () {
|
|
82
|
+
var _renderComponent6 = renderComponent({
|
|
83
|
+
chartType: null,
|
|
84
|
+
charts: []
|
|
85
|
+
}),
|
|
86
|
+
container = _renderComponent6.container;
|
|
87
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
88
|
+
});
|
|
89
|
+
it('renders chart with chartType property and empty charts property', function () {
|
|
90
|
+
var _renderComponent7 = renderComponent({
|
|
91
|
+
charts: []
|
|
92
|
+
}),
|
|
93
|
+
container = _renderComponent7.container;
|
|
94
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
95
|
+
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// Note: changeData, getChart, and deleteCategory are internal implementation details.
|
|
100
|
+
// In RTL philosophy, we test user-visible behavior rather than implementation.
|
|
101
|
+
// These methods would be tested indirectly through user interactions that trigger them.
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=chart.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.test.js","names":["_react","_interopRequireDefault","require","_testUtils","_chart","_utils","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","onDataChange","jest","fn","renderComponent","extras","defaults","classes","className","graphProps","xBand","createBandScale","charts","type","Component","createElement","chartType","domain","range","min","max","size","width","height","data","props","render","Chart","it","_renderComponent","container","expect","firstChild","toBeInTheDocument","querySelector","_renderComponent2","svg","toHaveAttribute","_renderComponent3","undefined","_renderComponent4","_renderComponent5","_renderComponent6","_renderComponent7"],"sources":["../../src/__tests__/chart.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@pie-lib/test-utils';\nimport { Chart } from '../chart';\nimport { createBandScale, graphProps } from './utils';\n\ndescribe('ChartAxes', () => {\n let onDataChange = jest.fn();\n\n const renderComponent = (extras) => {\n const defaults = {\n classes: {},\n onDataChange,\n className: 'className',\n graphProps: graphProps(),\n xBand: createBandScale(['a', 'b', 'c'], [0, 100]),\n charts: [\n {\n type: 'bar',\n Component: () => <div />,\n },\n ],\n chartType: 'bar',\n domain: {},\n range: {\n min: 0,\n max: 10,\n },\n size: {\n width: 100,\n height: 100,\n },\n data: [],\n };\n const props = { ...defaults, ...extras };\n return render(<Chart {...props} />);\n };\n\n describe('rendering', () => {\n it('renders chart container', () => {\n const { container } = renderComponent();\n expect(container.firstChild).toBeInTheDocument();\n expect(container.querySelector('svg')).toBeInTheDocument();\n });\n\n it('renders chart with default size', () => {\n const { container } = renderComponent();\n const svg = container.querySelector('svg');\n expect(svg).toBeInTheDocument();\n expect(svg).toHaveAttribute('width', '240');\n expect(svg).toHaveAttribute('height', '240');\n });\n\n it('renders chart when size is not defined', () => {\n const { container } = renderComponent({ size: undefined });\n expect(container.firstChild).toBeInTheDocument();\n const svg = container.querySelector('svg');\n expect(svg).toBeInTheDocument();\n });\n\n it('renders chart without chartType property', () => {\n const { container } = renderComponent({ chartType: null });\n expect(container.firstChild).toBeInTheDocument();\n expect(container.querySelector('svg')).toBeInTheDocument();\n });\n\n it('renders chart without chartType and charts properties', () => {\n const { container } = renderComponent({ chartType: null, charts: null });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders chart without chartType property and empty charts property', () => {\n const { container } = renderComponent({ chartType: null, charts: [] });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders chart with chartType property and empty charts property', () => {\n const { container } = renderComponent({ charts: [] });\n expect(container.firstChild).toBeInTheDocument();\n expect(container.querySelector('svg')).toBeInTheDocument();\n });\n });\n\n // Note: changeData, getChart, and deleteCategory are internal implementation details.\n // In RTL philosophy, we test user-visible behavior rather than implementation.\n // These methods would be tested indirectly through user interactions that trigger them.\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _testUtils = require("@pie-lib/test-utils");
|
|
7
|
+
var _grid = require("../grid");
|
|
8
|
+
var _utils = require("./utils");
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
+
describe('Grid', function () {
|
|
12
|
+
var renderComponent = function renderComponent(extras) {
|
|
13
|
+
var defaults = {
|
|
14
|
+
classes: {},
|
|
15
|
+
className: 'className',
|
|
16
|
+
graphProps: (0, _utils.graphProps)(),
|
|
17
|
+
xBand: (0, _utils.createBandScale)(['a', 'b', 'c'], [0, 400])
|
|
18
|
+
};
|
|
19
|
+
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
20
|
+
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement("svg", null, /*#__PURE__*/_react["default"].createElement(_grid.Grid, props)));
|
|
21
|
+
};
|
|
22
|
+
describe('rendering', function () {
|
|
23
|
+
it('renders grid container', function () {
|
|
24
|
+
var _renderComponent = renderComponent(),
|
|
25
|
+
container = _renderComponent.container;
|
|
26
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
27
|
+
});
|
|
28
|
+
it('renders grid with SVG group', function () {
|
|
29
|
+
var _renderComponent2 = renderComponent(),
|
|
30
|
+
container = _renderComponent2.container;
|
|
31
|
+
var svg = container.querySelector('svg');
|
|
32
|
+
expect(svg).toBeInTheDocument();
|
|
33
|
+
// Grid renders a <g> element (StyledGridGroup)
|
|
34
|
+
var gridGroup = container.querySelector('g');
|
|
35
|
+
expect(gridGroup).toBeInTheDocument();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=grid.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.test.js","names":["_react","_interopRequireDefault","require","_testUtils","_grid","_utils","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","renderComponent","extras","defaults","classes","className","graphProps","xBand","createBandScale","props","render","createElement","Grid","it","_renderComponent","container","expect","firstChild","toBeInTheDocument","_renderComponent2","svg","querySelector","gridGroup"],"sources":["../../src/__tests__/grid.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@pie-lib/test-utils';\nimport { Grid } from '../grid';\nimport { createBandScale, graphProps } from './utils';\n\ndescribe('Grid', () => {\n const renderComponent = (extras) => {\n const defaults = {\n classes: {},\n className: 'className',\n graphProps: graphProps(),\n xBand: createBandScale(['a', 'b', 'c'], [0, 400]),\n };\n const props = { ...defaults, ...extras };\n return render(\n <svg>\n <Grid {...props} />\n </svg>,\n );\n };\n\n describe('rendering', () => {\n it('renders grid container', () => {\n const { container } = renderComponent();\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders grid with SVG group', () => {\n const { container } = renderComponent();\n const svg = container.querySelector('svg');\n expect(svg).toBeInTheDocument();\n // Grid renders a <g> element (StyledGridGroup)\n const gridGroup = container.querySelector('g');\n expect(gridGroup).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
5
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _react2 = require("@testing-library/react");
|
|
9
|
+
var _styles = require("@mui/material/styles");
|
|
10
|
+
var _keyLegend = _interopRequireDefault(require("../key-legend"));
|
|
11
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
+
jest.mock('@pie-lib/translator', function () {
|
|
14
|
+
return {
|
|
15
|
+
__esModule: true,
|
|
16
|
+
"default": {
|
|
17
|
+
translator: {
|
|
18
|
+
t: jest.fn(function (key) {
|
|
19
|
+
var translations = {
|
|
20
|
+
'charting.keyLegend.incorrectAnswer': 'Incorrect answer selected',
|
|
21
|
+
'charting.keyLegend.correctAnswer': 'Correct answer selected',
|
|
22
|
+
'charting.keyLegend.correctKeyAnswer': 'Correct answer'
|
|
23
|
+
};
|
|
24
|
+
return translations[key] || key;
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
jest.mock('@mui/icons-material/Check', function () {
|
|
31
|
+
return function Check(props) {
|
|
32
|
+
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
|
|
33
|
+
"data-testid": "check-icon"
|
|
34
|
+
}, props));
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
jest.mock('@mui/icons-material/Close', function () {
|
|
38
|
+
return function Close(props) {
|
|
39
|
+
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
|
|
40
|
+
"data-testid": "close-icon"
|
|
41
|
+
}, props));
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
var theme;
|
|
45
|
+
beforeAll(function () {
|
|
46
|
+
theme = (0, _styles.createTheme)();
|
|
47
|
+
});
|
|
48
|
+
describe('KeyLegend', function () {
|
|
49
|
+
var renderComponent = function renderComponent() {
|
|
50
|
+
var extras = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
51
|
+
var defaults = {
|
|
52
|
+
language: 'en'
|
|
53
|
+
};
|
|
54
|
+
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
55
|
+
return (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_styles.ThemeProvider, {
|
|
56
|
+
theme: theme
|
|
57
|
+
}, /*#__PURE__*/_react["default"].createElement(_keyLegend["default"], props)));
|
|
58
|
+
};
|
|
59
|
+
describe('rendering', function () {
|
|
60
|
+
it('renders without crashing', function () {
|
|
61
|
+
var _renderComponent = renderComponent(),
|
|
62
|
+
container = _renderComponent.container;
|
|
63
|
+
expect(container).toBeInTheDocument();
|
|
64
|
+
});
|
|
65
|
+
it('renders Key title', function () {
|
|
66
|
+
var _renderComponent2 = renderComponent(),
|
|
67
|
+
getByText = _renderComponent2.getByText;
|
|
68
|
+
expect(getByText('Key')).toBeInTheDocument();
|
|
69
|
+
});
|
|
70
|
+
it('renders incorrect answer row', function () {
|
|
71
|
+
var _renderComponent3 = renderComponent(),
|
|
72
|
+
getByText = _renderComponent3.getByText;
|
|
73
|
+
expect(getByText('Incorrect answer selected')).toBeInTheDocument();
|
|
74
|
+
});
|
|
75
|
+
it('renders correct answer row', function () {
|
|
76
|
+
var _renderComponent4 = renderComponent(),
|
|
77
|
+
getByText = _renderComponent4.getByText;
|
|
78
|
+
expect(getByText('Correct answer selected')).toBeInTheDocument();
|
|
79
|
+
});
|
|
80
|
+
it('renders correct key answer row', function () {
|
|
81
|
+
var _renderComponent5 = renderComponent(),
|
|
82
|
+
getByText = _renderComponent5.getByText;
|
|
83
|
+
expect(getByText('Correct answer')).toBeInTheDocument();
|
|
84
|
+
});
|
|
85
|
+
it('renders with custom language', function () {
|
|
86
|
+
var _renderComponent6 = renderComponent({
|
|
87
|
+
language: 'es'
|
|
88
|
+
}),
|
|
89
|
+
container = _renderComponent6.container;
|
|
90
|
+
expect(container).toBeInTheDocument();
|
|
91
|
+
});
|
|
92
|
+
it('renders with undefined language', function () {
|
|
93
|
+
var _renderComponent7 = renderComponent({
|
|
94
|
+
language: undefined
|
|
95
|
+
}),
|
|
96
|
+
container = _renderComponent7.container;
|
|
97
|
+
expect(container).toBeInTheDocument();
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe('icons', function () {
|
|
101
|
+
it('renders incorrect icon (Close)', function () {
|
|
102
|
+
var _renderComponent8 = renderComponent(),
|
|
103
|
+
getAllByTestId = _renderComponent8.getAllByTestId;
|
|
104
|
+
var closeIcons = getAllByTestId('close-icon');
|
|
105
|
+
expect(closeIcons.length).toBeGreaterThan(0);
|
|
106
|
+
});
|
|
107
|
+
it('renders correct icons (Check)', function () {
|
|
108
|
+
var _renderComponent9 = renderComponent(),
|
|
109
|
+
getAllByTestId = _renderComponent9.getAllByTestId;
|
|
110
|
+
var checkIcons = getAllByTestId('check-icon');
|
|
111
|
+
expect(checkIcons.length).toBe(2);
|
|
112
|
+
});
|
|
113
|
+
it('renders small check icon for correct key answer', function () {
|
|
114
|
+
var _renderComponent0 = renderComponent(),
|
|
115
|
+
getAllByTestId = _renderComponent0.getAllByTestId;
|
|
116
|
+
var checkIcons = getAllByTestId('check-icon');
|
|
117
|
+
expect(checkIcons.length).toBeGreaterThan(0);
|
|
118
|
+
checkIcons.forEach(function (icon) {
|
|
119
|
+
expect(icon).toBeInTheDocument();
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe('structure', function () {
|
|
124
|
+
it('has correct number of rows', function () {
|
|
125
|
+
var _renderComponent1 = renderComponent(),
|
|
126
|
+
container = _renderComponent1.container;
|
|
127
|
+
var texts = ['Incorrect answer selected', 'Correct answer selected', 'Correct answer'];
|
|
128
|
+
texts.forEach(function (text) {
|
|
129
|
+
expect(container.textContent).toContain(text);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
it('displays title at the top', function () {
|
|
133
|
+
var _renderComponent10 = renderComponent(),
|
|
134
|
+
container = _renderComponent10.container;
|
|
135
|
+
var firstChild = container.querySelector('div > div');
|
|
136
|
+
expect(firstChild === null || firstChild === void 0 ? void 0 : firstChild.textContent).toContain('Key');
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('styling', function () {
|
|
140
|
+
it('applies styled container', function () {
|
|
141
|
+
var _container$firstChild;
|
|
142
|
+
var _renderComponent11 = renderComponent(),
|
|
143
|
+
container = _renderComponent11.container;
|
|
144
|
+
var styledDiv = (_container$firstChild = container.firstChild) === null || _container$firstChild === void 0 ? void 0 : _container$firstChild.firstChild;
|
|
145
|
+
expect(styledDiv).toBeInTheDocument();
|
|
146
|
+
});
|
|
147
|
+
it('renders all content in proper structure', function () {
|
|
148
|
+
var _renderComponent12 = renderComponent(),
|
|
149
|
+
container = _renderComponent12.container;
|
|
150
|
+
expect(container.querySelector('[data-testid="close-icon"]')).toBeInTheDocument();
|
|
151
|
+
expect(container.querySelectorAll('[data-testid="check-icon"]').length).toBe(2);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
describe('accessibility', function () {
|
|
155
|
+
it('has readable text content', function () {
|
|
156
|
+
var _renderComponent13 = renderComponent(),
|
|
157
|
+
container = _renderComponent13.container;
|
|
158
|
+
var text = container.textContent;
|
|
159
|
+
expect(text).toContain('Key');
|
|
160
|
+
expect(text).toContain('Incorrect answer selected');
|
|
161
|
+
expect(text).toContain('Correct answer selected');
|
|
162
|
+
expect(text).toContain('Correct answer');
|
|
163
|
+
});
|
|
164
|
+
it('icons have proper structure for screen readers', function () {
|
|
165
|
+
var _renderComponent14 = renderComponent(),
|
|
166
|
+
getAllByTestId = _renderComponent14.getAllByTestId;
|
|
167
|
+
var icons = [].concat((0, _toConsumableArray2["default"])(getAllByTestId('close-icon')), (0, _toConsumableArray2["default"])(getAllByTestId('check-icon')));
|
|
168
|
+
expect(icons.length).toBeGreaterThan(0);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
describe('edge cases', function () {
|
|
172
|
+
it('handles null language', function () {
|
|
173
|
+
var _renderComponent15 = renderComponent({
|
|
174
|
+
language: null
|
|
175
|
+
}),
|
|
176
|
+
container = _renderComponent15.container;
|
|
177
|
+
expect(container).toBeInTheDocument();
|
|
178
|
+
});
|
|
179
|
+
it('handles empty string language', function () {
|
|
180
|
+
var _renderComponent16 = renderComponent({
|
|
181
|
+
language: ''
|
|
182
|
+
}),
|
|
183
|
+
container = _renderComponent16.container;
|
|
184
|
+
expect(container).toBeInTheDocument();
|
|
185
|
+
});
|
|
186
|
+
it('renders consistently with different language codes', function () {
|
|
187
|
+
var languages = ['en', 'es', 'fr', 'de', 'zh'];
|
|
188
|
+
languages.forEach(function (lang) {
|
|
189
|
+
var _renderComponent17 = renderComponent({
|
|
190
|
+
language: lang
|
|
191
|
+
}),
|
|
192
|
+
container = _renderComponent17.container,
|
|
193
|
+
unmount = _renderComponent17.unmount;
|
|
194
|
+
expect(container).toBeInTheDocument();
|
|
195
|
+
unmount();
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
describe('translation integration', function () {
|
|
200
|
+
it('calls translator with language parameter', function () {
|
|
201
|
+
var Translator = require('@pie-lib/translator')["default"];
|
|
202
|
+
var t = Translator.translator.t;
|
|
203
|
+
renderComponent({
|
|
204
|
+
language: 'es'
|
|
205
|
+
});
|
|
206
|
+
expect(t).toHaveBeenCalled();
|
|
207
|
+
});
|
|
208
|
+
it('displays all required translation keys', function () {
|
|
209
|
+
var _renderComponent18 = renderComponent(),
|
|
210
|
+
container = _renderComponent18.container;
|
|
211
|
+
var text = container.textContent;
|
|
212
|
+
expect(text).toContain('Incorrect answer selected');
|
|
213
|
+
expect(text).toContain('Correct answer selected');
|
|
214
|
+
expect(text).toContain('Correct answer');
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
describe('layout', function () {
|
|
218
|
+
it('renders in a flex column layout', function () {
|
|
219
|
+
var _container$firstChild2;
|
|
220
|
+
var _renderComponent19 = renderComponent(),
|
|
221
|
+
container = _renderComponent19.container;
|
|
222
|
+
var mainContainer = (_container$firstChild2 = container.firstChild) === null || _container$firstChild2 === void 0 ? void 0 : _container$firstChild2.firstChild;
|
|
223
|
+
expect(mainContainer).toBeInTheDocument();
|
|
224
|
+
});
|
|
225
|
+
it('has proper spacing between elements', function () {
|
|
226
|
+
var _renderComponent20 = renderComponent(),
|
|
227
|
+
getByText = _renderComponent20.getByText;
|
|
228
|
+
expect(getByText('Key')).toBeInTheDocument();
|
|
229
|
+
expect(getByText('Incorrect answer selected')).toBeInTheDocument();
|
|
230
|
+
expect(getByText('Correct answer selected')).toBeInTheDocument();
|
|
231
|
+
expect(getByText('Correct answer')).toBeInTheDocument();
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
//# sourceMappingURL=key-legend.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-legend.test.js","names":["_react","_interopRequireDefault","require","_react2","_styles","_keyLegend","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","__esModule","translator","fn","key","translations","Check","props","createElement","_extends2","Close","theme","beforeAll","createTheme","describe","renderComponent","extras","undefined","defaults","language","render","ThemeProvider","it","_renderComponent","container","expect","toBeInTheDocument","_renderComponent2","getByText","_renderComponent3","_renderComponent4","_renderComponent5","_renderComponent6","_renderComponent7","_renderComponent8","getAllByTestId","closeIcons","toBeGreaterThan","_renderComponent9","checkIcons","toBe","_renderComponent0","icon","_renderComponent1","texts","text","textContent","toContain","_renderComponent10","firstChild","querySelector","_container$firstChild","_renderComponent11","styledDiv","_renderComponent12","querySelectorAll","_renderComponent13","_renderComponent14","icons","concat","_toConsumableArray2","_renderComponent15","_renderComponent16","languages","lang","_renderComponent17","unmount","Translator","toHaveBeenCalled","_renderComponent18","_container$firstChild2","_renderComponent19","mainContainer","_renderComponent20"],"sources":["../../src/__tests__/key-legend.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@testing-library/react';\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nimport KeyLegend from '../key-legend';\n\njest.mock('@pie-lib/translator', () => ({\n __esModule: true,\n default: {\n translator: {\n t: jest.fn((key) => {\n const translations = {\n 'charting.keyLegend.incorrectAnswer': 'Incorrect answer selected',\n 'charting.keyLegend.correctAnswer': 'Correct answer selected',\n 'charting.keyLegend.correctKeyAnswer': 'Correct answer',\n };\n return translations[key] || key;\n }),\n },\n },\n}));\n\njest.mock('@mui/icons-material/Check', () => {\n return function Check(props) {\n return <div data-testid=\"check-icon\" {...props} />;\n };\n});\n\njest.mock('@mui/icons-material/Close', () => {\n return function Close(props) {\n return <div data-testid=\"close-icon\" {...props} />;\n };\n});\n\nlet theme;\n\nbeforeAll(() => {\n theme = createTheme();\n});\n\ndescribe('KeyLegend', () => {\n const renderComponent = (extras = {}) => {\n const defaults = {\n language: 'en',\n };\n const props = { ...defaults, ...extras };\n return render(\n <ThemeProvider theme={theme}>\n <KeyLegend {...props} />\n </ThemeProvider>,\n );\n };\n\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = renderComponent();\n expect(container).toBeInTheDocument();\n });\n\n it('renders Key title', () => {\n const { getByText } = renderComponent();\n expect(getByText('Key')).toBeInTheDocument();\n });\n\n it('renders incorrect answer row', () => {\n const { getByText } = renderComponent();\n expect(getByText('Incorrect answer selected')).toBeInTheDocument();\n });\n\n it('renders correct answer row', () => {\n const { getByText } = renderComponent();\n expect(getByText('Correct answer selected')).toBeInTheDocument();\n });\n\n it('renders correct key answer row', () => {\n const { getByText } = renderComponent();\n expect(getByText('Correct answer')).toBeInTheDocument();\n });\n\n it('renders with custom language', () => {\n const { container } = renderComponent({ language: 'es' });\n expect(container).toBeInTheDocument();\n });\n\n it('renders with undefined language', () => {\n const { container } = renderComponent({ language: undefined });\n expect(container).toBeInTheDocument();\n });\n });\n\n describe('icons', () => {\n it('renders incorrect icon (Close)', () => {\n const { getAllByTestId } = renderComponent();\n const closeIcons = getAllByTestId('close-icon');\n expect(closeIcons.length).toBeGreaterThan(0);\n });\n\n it('renders correct icons (Check)', () => {\n const { getAllByTestId } = renderComponent();\n const checkIcons = getAllByTestId('check-icon');\n expect(checkIcons.length).toBe(2);\n });\n\n it('renders small check icon for correct key answer', () => {\n const { getAllByTestId } = renderComponent();\n const checkIcons = getAllByTestId('check-icon');\n\n expect(checkIcons.length).toBeGreaterThan(0);\n\n checkIcons.forEach((icon) => {\n expect(icon).toBeInTheDocument();\n });\n });\n });\n\n describe('structure', () => {\n it('has correct number of rows', () => {\n const { container } = renderComponent();\n const texts = ['Incorrect answer selected', 'Correct answer selected', 'Correct answer'];\n\n texts.forEach((text) => {\n expect(container.textContent).toContain(text);\n });\n });\n\n it('displays title at the top', () => {\n const { container } = renderComponent();\n const firstChild = container.querySelector('div > div');\n expect(firstChild?.textContent).toContain('Key');\n });\n });\n\n describe('styling', () => {\n it('applies styled container', () => {\n const { container } = renderComponent();\n const styledDiv = container.firstChild?.firstChild;\n expect(styledDiv).toBeInTheDocument();\n });\n\n it('renders all content in proper structure', () => {\n const { container } = renderComponent();\n expect(container.querySelector('[data-testid=\"close-icon\"]')).toBeInTheDocument();\n expect(container.querySelectorAll('[data-testid=\"check-icon\"]').length).toBe(2);\n });\n });\n\n describe('accessibility', () => {\n it('has readable text content', () => {\n const { container } = renderComponent();\n const text = container.textContent;\n\n expect(text).toContain('Key');\n expect(text).toContain('Incorrect answer selected');\n expect(text).toContain('Correct answer selected');\n expect(text).toContain('Correct answer');\n });\n\n it('icons have proper structure for screen readers', () => {\n const { getAllByTestId } = renderComponent();\n const icons = [...getAllByTestId('close-icon'), ...getAllByTestId('check-icon')];\n\n expect(icons.length).toBeGreaterThan(0);\n });\n });\n\n describe('edge cases', () => {\n it('handles null language', () => {\n const { container } = renderComponent({ language: null });\n expect(container).toBeInTheDocument();\n });\n\n it('handles empty string language', () => {\n const { container } = renderComponent({ language: '' });\n expect(container).toBeInTheDocument();\n });\n\n it('renders consistently with different language codes', () => {\n const languages = ['en', 'es', 'fr', 'de', 'zh'];\n\n languages.forEach((lang) => {\n const { container, unmount } = renderComponent({ language: lang });\n expect(container).toBeInTheDocument();\n unmount();\n });\n });\n });\n\n describe('translation integration', () => {\n it('calls translator with language parameter', () => {\n const Translator = require('@pie-lib/translator').default;\n const { t } = Translator.translator;\n\n renderComponent({ language: 'es' });\n\n expect(t).toHaveBeenCalled();\n });\n\n it('displays all required translation keys', () => {\n const { container } = renderComponent();\n const text = container.textContent;\n\n expect(text).toContain('Incorrect answer selected');\n expect(text).toContain('Correct answer selected');\n expect(text).toContain('Correct answer');\n });\n });\n\n describe('layout', () => {\n it('renders in a flex column layout', () => {\n const { container } = renderComponent();\n const mainContainer = container.firstChild?.firstChild;\n expect(mainContainer).toBeInTheDocument();\n });\n\n it('has proper spacing between elements', () => {\n const { getByText } = renderComponent();\n\n expect(getByText('Key')).toBeInTheDocument();\n expect(getByText('Incorrect answer selected')).toBeInTheDocument();\n expect(getByText('Correct answer selected')).toBeInTheDocument();\n expect(getByText('Correct answer')).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|