## Description
This PR started with this goal:
- Deleted the unreadable `derived.test.js` (4668 lines) file and split
each suite to its file.
- Moved all `derived.js` related specs in widget folder to __tests__
folder
Later we found that `testRegex` in `jest.config` will treat anything
inside `__tests__` as runnable, so we modify this rule and are moving to
a consistent naming for our unit tests(any file ending with `.test.` or
`.spec.`
This refactor aims to improve maintainability and ensure that the table
widget's derived properties are thoroughly tested.
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags=""
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!WARNING]
> Tests have not run on the HEAD
b3168bb1a6d3070a910972d1d9a78d61a3aaee91 yet
> <hr>Tue, 17 Dec 2024 10:20:54 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Expanded properties for table widget configuration.
- Introduced sample data constants for column schemas and processed
table data.
- **Bug Fixes**
- Improved validation tests for editable cells and row selection
functions.
- **Tests**
- Added comprehensive test suites for various table widget
functionalities, including filtering, sorting, and row selection.
- Introduced tests for handling HTML content within table columns.
- Added tests for new functions related to row updates and indices.
- Enhanced test coverage for existing utility functions and table
properties.
- **Chores**
- Updated import paths to reflect a new directory structure across
various test files.
- Modified Jest configuration for improved readability and regex
adjustments.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
129 lines
3.3 KiB
TypeScript
129 lines
3.3 KiB
TypeScript
import metaReducer, { initialState } from "./index";
|
|
import { updateMetaState } from "actions/metaActions";
|
|
import type { ReduxAction } from "ee/constants/ReduxActionConstants";
|
|
import { ReduxActionTypes } from "ee/constants/ReduxActionConstants";
|
|
|
|
let currentMetaState = initialState;
|
|
|
|
const inputWidget = {
|
|
widgetId: "incwlne",
|
|
propertyName: "selectedValues",
|
|
propertyValue: ["GREEN", "BLUE", "YELLOW"],
|
|
};
|
|
|
|
const noAction = (): ReduxAction<unknown> => {
|
|
return {
|
|
type: "NO_ACTION",
|
|
payload: {},
|
|
};
|
|
};
|
|
|
|
test("should return the initial state", () => {
|
|
expect(metaReducer(undefined, noAction())).toEqual(currentMetaState);
|
|
});
|
|
|
|
test("Add a widget meta values", () => {
|
|
currentMetaState = initialState;
|
|
expect(
|
|
metaReducer(currentMetaState, {
|
|
type: ReduxActionTypes.SET_META_PROP,
|
|
payload: {
|
|
widgetId: inputWidget.widgetId,
|
|
propertyName: inputWidget.propertyName,
|
|
propertyValue: inputWidget.propertyValue,
|
|
},
|
|
}),
|
|
).toEqual({
|
|
incwlne: {
|
|
selectedValues: ["GREEN", "BLUE", "YELLOW"],
|
|
},
|
|
});
|
|
});
|
|
|
|
test("Update widget meta state using evalMetaUpdates", () => {
|
|
const evalMetaUpdates = [
|
|
{ widgetId: "incwlne", metaPropertyPath: ["text"], value: "test123" },
|
|
{
|
|
widgetId: "incwlne",
|
|
metaPropertyPath: ["selectedValues"],
|
|
value: ["YELLOW"],
|
|
},
|
|
];
|
|
|
|
currentMetaState = metaReducer(
|
|
currentMetaState,
|
|
updateMetaState(evalMetaUpdates),
|
|
);
|
|
expect(currentMetaState).toEqual({
|
|
incwlne: {
|
|
text: "test123",
|
|
selectedValues: ["YELLOW"],
|
|
},
|
|
});
|
|
});
|
|
|
|
describe("Reset widget meta action", () => {
|
|
test("Reset widget with only widgetId", () => {
|
|
currentMetaState = metaReducer(currentMetaState, {
|
|
type: ReduxActionTypes.RESET_WIDGET_META,
|
|
payload: {
|
|
widgetId: inputWidget.widgetId,
|
|
},
|
|
});
|
|
expect(currentMetaState).toEqual({
|
|
incwlne: {},
|
|
});
|
|
});
|
|
|
|
currentMetaState = initialState;
|
|
expect(
|
|
metaReducer(currentMetaState, {
|
|
type: ReduxActionTypes.SET_META_PROP,
|
|
payload: {
|
|
widgetId: inputWidget.widgetId,
|
|
propertyName: inputWidget.propertyName,
|
|
propertyValue: inputWidget.propertyValue,
|
|
},
|
|
}),
|
|
).toEqual({
|
|
incwlne: {
|
|
selectedValues: ["GREEN", "BLUE", "YELLOW"],
|
|
},
|
|
});
|
|
|
|
test("Reset widget with evaluated values", () => {
|
|
expect(
|
|
metaReducer(currentMetaState, {
|
|
type: ReduxActionTypes.RESET_WIDGET_META,
|
|
payload: {
|
|
widgetId: inputWidget.widgetId,
|
|
evaluatedWidget: {
|
|
defaultSelectedValues: ["GREEN"],
|
|
selectedValues: ["GREEN", "BLUE", "YELLOW"],
|
|
widgetId: inputWidget.widgetId,
|
|
propertyOverrideDependency: {
|
|
selectedValues: {
|
|
DEFAULT: "defaultSelectedValues",
|
|
META: "meta.selectedValues",
|
|
},
|
|
},
|
|
},
|
|
evaluatedWidgetConfig: {
|
|
widgetId: inputWidget.widgetId,
|
|
propertyOverrideDependency: {
|
|
selectedValues: {
|
|
DEFAULT: "defaultSelectedValues",
|
|
META: "meta.selectedValues",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}),
|
|
).toEqual({
|
|
incwlne: {
|
|
selectedValues: ["GREEN"],
|
|
},
|
|
});
|
|
});
|
|
});
|