Skip to content

Commit c8383cd

Browse files
committed
refactor(test-utils): migrate dynamic helpers usage
1 parent 7d2003d commit c8383cd

43 files changed

Lines changed: 413 additions & 395 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/pluggableWidgets/barcode-generator-web/src/__tests__/BarcodeGenerator.spec.tsx

Lines changed: 91 additions & 91 deletions
Large diffs are not rendered by default.

packages/pluggableWidgets/calendar-web/src/__tests__/Calendar.spec.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ const customViewProps: CalendarContainerProps = {
7272
view: "custom",
7373
defaultViewStandard: "month",
7474
defaultViewCustom: "work_week",
75-
editable: dynamic(true),
76-
showEventDate: dynamic(true),
75+
editable: dynamic.available(true),
76+
showEventDate: dynamic.available(true),
7777
widthUnit: "percentage",
7878
width: 100,
7979
heightUnit: "pixels",

packages/pluggableWidgets/checkbox-radio-selection-web/src/CheckboxRadioSelection.editorPreview.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ export const preview = (props: CheckboxRadioSelectionPreviewProps): ReactElement
2121
inputId: id,
2222
labelId: `${id}-label`,
2323
readOnlyStyle: props.readOnlyStyle,
24-
ariaRequired: dynamic(false),
25-
ariaLabel: dynamic(""),
26-
groupName: dynamic(`${id}-group`),
24+
ariaRequired: dynamic.available(false),
25+
ariaLabel: dynamic.available(""),
26+
groupName: dynamic.available(`${id}-group`),
2727
noOptionsText: "No options available"
2828
};
2929

packages/pluggableWidgets/combobox-web/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ Uses `@mendix/widget-plugin-test-utils` builders:
297297
- `ReferenceValueBuilder` — mocks ReferenceValue (single association)
298298
- `ReferenceSetValueBuilder` — mocks ReferenceSetValue (multi association)
299299
- `ListValueBuilder` — mocks ListValue datasource with `.withItems()`, `.withHasMore()`
300-
- `dynamic(value?)` — wraps in DynamicValue
300+
- `dynamic.[available|loading|unavailable](value?)` — wraps in DynamicValue
301301
- `obj(id?)` — creates mock ObjectItem
302302
- `list(items)` — creates mock ListValue
303303
- `setupIntersectionObserverStub()` — stubs browser IntersectionObserver

packages/pluggableWidgets/combobox-web/src/Combobox.editorPreview.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const preview = (props: ComboboxPreviewProps): ReactElement => {
1616
inputId: id,
1717
labelId: `${id}-label`,
1818
readOnlyStyle: props.readOnlyStyle,
19-
ariaRequired: dynamic(false),
19+
ariaRequired: dynamic.available(false),
2020
a11yConfig: {
2121
ariaLabels: {
2222
clearSelection: props.clearButtonAriaLabel,

packages/pluggableWidgets/combobox-web/src/__tests__/MultiSelection.spec.tsx

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,23 @@ describe("Combo box (Association)", () => {
4040
optionsSourceAssociationCaptionExpression: listExpression(() => "$currentObject/CountryName"),
4141
optionsSourceAssociationCustomContentType: "no",
4242
optionsSourceAssociationCustomContent: undefined,
43-
emptyOptionText: dynamic("Select an option 111"),
44-
ariaRequired: dynamic(true),
43+
emptyOptionText: dynamic.available("Select an option 111"),
44+
ariaRequired: dynamic.available(true),
4545
clearable: true,
4646
filterType: "contains",
4747
selectedItemsStyle: "text",
4848
readOnlyStyle: "bordered",
4949
lazyLoading: false,
5050
loadingType: "spinner",
51-
noOptionsText: dynamic("no options found"),
52-
clearButtonAriaLabel: dynamic("Clear selection"),
53-
removeValueAriaLabel: dynamic("Remove value"),
51+
noOptionsText: dynamic.available("no options found"),
52+
clearButtonAriaLabel: dynamic.available("Clear selection"),
53+
removeValueAriaLabel: dynamic.available("Remove value"),
5454
selectAllButton: true, // Causes +1 option to be added to the menu
55-
selectAllButtonCaption: dynamic("Select All"),
55+
selectAllButtonCaption: dynamic.available("Select All"),
5656
selectionMethod: "checkbox",
57-
a11ySelectedValue: dynamic("Selected value:"),
58-
a11yOptionsAvailable: dynamic("Options available:"),
59-
a11yInstructions: dynamic("a11yInstructions"),
57+
a11ySelectedValue: dynamic.available("Selected value:"),
58+
a11yOptionsAvailable: dynamic.available("Options available:"),
59+
a11yInstructions: dynamic.available("a11yInstructions"),
6060
showFooter: false,
6161
databaseAttributeString: new EditableValueBuilder<string | Big>().build(),
6262
optionsSourceDatabaseCaptionType: "attribute",
@@ -65,23 +65,23 @@ describe("Combo box (Association)", () => {
6565
staticAttribute: new EditableValueBuilder<string>().build(),
6666
optionsSourceStaticDataSource: [
6767
{
68-
staticDataSourceValue: dynamic("value1"),
68+
staticDataSourceValue: dynamic.available("value1"),
6969
staticDataSourceCustomContent: undefined,
70-
staticDataSourceCaption: dynamic("caption1")
70+
staticDataSourceCaption: dynamic.available("caption1")
7171
},
7272
{
73-
staticDataSourceValue: dynamic("value2"),
73+
staticDataSourceValue: dynamic.available("value2"),
7474
staticDataSourceCustomContent: undefined,
75-
staticDataSourceCaption: dynamic("caption2")
75+
staticDataSourceCaption: dynamic.available("caption2")
7676
}
7777
],
7878
selectedItemsSorting: "none",
7979
customEditability: "default",
80-
customEditabilityExpression: dynamic(false),
80+
customEditabilityExpression: dynamic.available(false),
8181
filterInputDebounceInterval: 200
8282
};
8383
if (defaultProps.optionsSourceAssociationCaptionType === "expression") {
84-
defaultProps.optionsSourceAssociationCaptionExpression!.get = i => dynamic(`${i.id}`);
84+
defaultProps.optionsSourceAssociationCaptionExpression!.get = i => dynamic.available(`${i.id}`);
8585
}
8686
});
8787

packages/pluggableWidgets/combobox-web/src/__tests__/SingleSelection.spec.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,22 @@ describe("Combo box (Association)", () => {
5050
optionsSourceAssociationCaptionExpression: listExpression(() => "$currentObject/CountryName"),
5151
optionsSourceAssociationCustomContentType: "no",
5252
optionsSourceAssociationCustomContent: undefined,
53-
emptyOptionText: dynamic("Select an option 111"),
54-
ariaRequired: dynamic(true),
53+
emptyOptionText: dynamic.available("Select an option 111"),
54+
ariaRequired: dynamic.available(true),
5555
clearable: true,
5656
filterType: "contains",
5757
selectedItemsStyle: "text",
5858
readOnlyStyle: "bordered",
5959
lazyLoading: false,
6060
loadingType: "spinner",
61-
clearButtonAriaLabel: dynamic("Clear selection"),
62-
removeValueAriaLabel: dynamic("Remove value"),
63-
selectAllButtonCaption: dynamic("Select All"),
61+
clearButtonAriaLabel: dynamic.available("Clear selection"),
62+
removeValueAriaLabel: dynamic.available("Remove value"),
63+
selectAllButtonCaption: dynamic.available("Select All"),
6464
selectAllButton: false,
6565
selectionMethod: "checkbox",
66-
a11ySelectedValue: dynamic("Selected value:"),
67-
a11yOptionsAvailable: dynamic("Options available:"),
68-
a11yInstructions: dynamic("a11yInstructions"),
66+
a11ySelectedValue: dynamic.available("Selected value:"),
67+
a11yOptionsAvailable: dynamic.available("Options available:"),
68+
a11yInstructions: dynamic.available("a11yInstructions"),
6969
showFooter: false,
7070
databaseAttributeString: new EditableValueBuilder<string | Big>().build(),
7171
optionsSourceDatabaseCaptionType: "attribute",
@@ -74,23 +74,23 @@ describe("Combo box (Association)", () => {
7474
staticAttribute: new EditableValueBuilder<string>().build(),
7575
optionsSourceStaticDataSource: [
7676
{
77-
staticDataSourceValue: dynamic("value1"),
77+
staticDataSourceValue: dynamic.available("value1"),
7878
staticDataSourceCustomContent: undefined,
79-
staticDataSourceCaption: dynamic("caption1")
79+
staticDataSourceCaption: dynamic.available("caption1")
8080
},
8181
{
82-
staticDataSourceValue: dynamic("value2"),
82+
staticDataSourceValue: dynamic.available("value2"),
8383
staticDataSourceCustomContent: undefined,
84-
staticDataSourceCaption: dynamic("caption2")
84+
staticDataSourceCaption: dynamic.available("caption2")
8585
}
8686
],
8787
selectedItemsSorting: "none",
8888
customEditability: "default",
89-
customEditabilityExpression: dynamic(false),
89+
customEditabilityExpression: dynamic.available(false),
9090
filterInputDebounceInterval: 200
9191
};
9292
if (defaultProps.optionsSourceAssociationCaptionType === "expression") {
93-
defaultProps.optionsSourceAssociationCaptionExpression!.get = i => dynamic(`${i.id}`);
93+
defaultProps.optionsSourceAssociationCaptionExpression!.get = i => dynamic.available(`${i.id}`);
9494
}
9595
});
9696
it("renders combobox widget", () => {

packages/pluggableWidgets/combobox-web/src/__tests__/StaticSelection.spec.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,22 @@ describe("Combo box (Static values)", () => {
5050
optionsSourceAssociationCaptionExpression: listExpression(() => "$currentObject/CountryName"),
5151
optionsSourceAssociationCustomContentType: "no",
5252
optionsSourceAssociationCustomContent: undefined,
53-
emptyOptionText: dynamic("Select an option 111"),
54-
ariaRequired: dynamic(true),
53+
emptyOptionText: dynamic.available("Select an option 111"),
54+
ariaRequired: dynamic.available(true),
5555
clearable: true,
5656
filterType: "contains",
5757
selectedItemsStyle: "text",
5858
readOnlyStyle: "bordered",
5959
lazyLoading: false,
6060
loadingType: "spinner",
61-
clearButtonAriaLabel: dynamic("Clear selection"),
62-
removeValueAriaLabel: dynamic("Remove value"),
63-
selectAllButtonCaption: dynamic("Select All"),
61+
clearButtonAriaLabel: dynamic.available("Clear selection"),
62+
removeValueAriaLabel: dynamic.available("Remove value"),
63+
selectAllButtonCaption: dynamic.available("Select All"),
6464
selectAllButton: false,
6565
selectionMethod: "checkbox",
66-
a11ySelectedValue: dynamic("Selected value:"),
67-
a11yOptionsAvailable: dynamic("Options available:"),
68-
a11yInstructions: dynamic("a11yInstructions"),
66+
a11ySelectedValue: dynamic.available("Selected value:"),
67+
a11yOptionsAvailable: dynamic.available("Options available:"),
68+
a11yInstructions: dynamic.available("a11yInstructions"),
6969
showFooter: false,
7070
databaseAttributeString: new EditableValueBuilder<string | Big>().build(),
7171
optionsSourceDatabaseCaptionType: "attribute",
@@ -74,23 +74,23 @@ describe("Combo box (Static values)", () => {
7474
staticAttribute: new EditableValueBuilder<string>().withValue("value1").build(),
7575
optionsSourceStaticDataSource: [
7676
{
77-
staticDataSourceValue: dynamic("value1"),
77+
staticDataSourceValue: dynamic.available("value1"),
7878
staticDataSourceCustomContent: undefined,
79-
staticDataSourceCaption: dynamic("caption1")
79+
staticDataSourceCaption: dynamic.available("caption1")
8080
},
8181
{
82-
staticDataSourceValue: dynamic("value2"),
82+
staticDataSourceValue: dynamic.available("value2"),
8383
staticDataSourceCustomContent: undefined,
84-
staticDataSourceCaption: dynamic("caption2")
84+
staticDataSourceCaption: dynamic.available("caption2")
8585
}
8686
],
8787
selectedItemsSorting: "none",
8888
customEditability: "default",
89-
customEditabilityExpression: dynamic(false),
89+
customEditabilityExpression: dynamic.available(false),
9090
filterInputDebounceInterval: 200
9191
};
9292
if (defaultProps.optionsSourceAssociationCaptionType === "expression") {
93-
defaultProps.optionsSourceAssociationCaptionExpression!.get = i => dynamic(`${i.id}`);
93+
defaultProps.optionsSourceAssociationCaptionExpression!.get = i => dynamic.available(`${i.id}`);
9494
}
9595
});
9696
it("renders combobox widget", () => {

packages/pluggableWidgets/combobox-web/src/helpers/Database/__tests__/DatabaseSingleSelectionSelector.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function buildProps({ items, values, targetValue, selection }: PropsOverrides):
4040
optionsSourceDatabaseCaptionAttribute: captionAttr,
4141
optionsSourceDatabaseValueAttribute: valueAttr,
4242
databaseAttributeString: targetAttr as any,
43-
emptyOptionText: dynamic("Select..."),
43+
emptyOptionText: dynamic.available("Select..."),
4444
optionsSourceDatabaseCustomContentType: "no",
4545
optionsSourceAssociationCustomContentType: "no",
4646
staticDataSourceCustomContentType: "no",
@@ -50,14 +50,14 @@ function buildProps({ items, values, targetValue, selection }: PropsOverrides):
5050
lazyLoading: false,
5151
loadingType: "spinner",
5252
customEditability: "default",
53-
customEditabilityExpression: dynamic(false),
53+
customEditabilityExpression: dynamic.available(false),
5454
filterInputDebounceInterval: 200,
5555
selectedItemsStyle: "text",
5656
readOnlyStyle: "bordered",
5757
selectionMethod: "checkbox",
5858
selectAllButton: false,
59-
selectAllButtonCaption: dynamic("Select All"),
60-
ariaRequired: dynamic(true),
59+
selectAllButtonCaption: dynamic.available("Select All"),
60+
ariaRequired: dynamic.available(true),
6161
showFooter: false,
6262
selectedItemsSorting: "none",
6363
attributeEnumeration: new EditableValueBuilder<string>().build(),

packages/pluggableWidgets/datagrid-date-filter-web/src/components/__tests__/DatagridDateFilter.spec.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { DateInputFilterStore } from "@mendix/widget-plugin-filtering/stores/inp
33
import { ObservableFilterHost } from "@mendix/widget-plugin-filtering/typings/ObservableFilterHost";
44
import {
55
actionValue,
6-
dynamicValue,
6+
dynamic,
77
EditableValueBuilder,
88
ListAttributeValueBuilder
99
} from "@mendix/widget-plugin-test-utils";
@@ -97,7 +97,7 @@ describe("Date Filter", () => {
9797
{...commonProps}
9898
onChange={action}
9999
valueAttribute={attribute}
100-
placeholder={dynamicValue("Placeholder")}
100+
placeholder={dynamic.available("Placeholder")}
101101
/>
102102
);
103103

@@ -111,7 +111,7 @@ describe("Date Filter", () => {
111111
it("initialize with defaultValue", async () => {
112112
// 946684800000 = 01.01.2000
113113
const date = new Date(946684800000);
114-
render(<DatagridDateFilter {...commonProps} defaultValue={dynamicValue<Date>(date)} />);
114+
render(<DatagridDateFilter {...commonProps} defaultValue={dynamic.available(date)} />);
115115
expect(screen.getByRole("textbox")).toHaveValue("01/01/2000");
116116
});
117117

@@ -121,15 +121,15 @@ describe("Date Filter", () => {
121121
const { rerender } = render(<DatagridDateFilter {...commonProps} defaultValue={undefined} />);
122122
expect(screen.getByRole("textbox")).toHaveValue("");
123123

124-
rerender(<DatagridDateFilter {...commonProps} defaultValue={dynamicValue<Date>(date)} />);
124+
rerender(<DatagridDateFilter {...commonProps} defaultValue={dynamic.available(date)} />);
125125
expect(screen.getByRole("textbox")).toHaveValue("");
126126
});
127127

128128
it("don't sync value when defaultValue changes from date to undefined", async () => {
129129
// 946684800000 = 01.01.2000
130130
const date = new Date(946684800000);
131131
const { rerender } = render(
132-
<DatagridDateFilter {...commonProps} defaultValue={dynamicValue<Date>(date)} />
132+
<DatagridDateFilter {...commonProps} defaultValue={dynamic.available(date)} />
133133
);
134134
expect(screen.getByRole("textbox")).toHaveValue("01/01/2000");
135135

@@ -271,7 +271,7 @@ describe("Date Filter", () => {
271271

272272
it("has correct short week days for en-US", async () => {
273273
window.mx = createMXObjectMock("en_US", "en-US");
274-
render(<DatagridDateFilter {...commonProps} defaultValue={dynamicValue(new Date("2021-12-10"))} />);
274+
render(<DatagridDateFilter {...commonProps} defaultValue={dynamic.available(new Date("2021-12-10"))} />);
275275

276276
const input = screen.getByRole("textbox");
277277
await act(async () => {
@@ -283,7 +283,7 @@ describe("Date Filter", () => {
283283

284284
it("has correct short week days for en-US and starts week at Monday", async () => {
285285
window.mx = createMXObjectMock("en_US", "en-US", 1);
286-
render(<DatagridDateFilter {...commonProps} defaultValue={dynamicValue(new Date("2021-12-10"))} />);
286+
render(<DatagridDateFilter {...commonProps} defaultValue={dynamic.available(new Date("2021-12-10"))} />);
287287

288288
const input = screen.getByRole("textbox");
289289
await act(async () => {
@@ -295,7 +295,7 @@ describe("Date Filter", () => {
295295

296296
it("has correct short week days for pt-Br", async () => {
297297
window.mx = createMXObjectMock("pt_BR", "pt-BR");
298-
render(<DatagridDateFilter {...commonProps} defaultValue={dynamicValue(new Date("2021-12-10"))} />);
298+
render(<DatagridDateFilter {...commonProps} defaultValue={dynamic.available(new Date("2021-12-10"))} />);
299299

300300
const input = screen.getByRole("textbox");
301301
await act(async () => {
@@ -307,7 +307,7 @@ describe("Date Filter", () => {
307307

308308
it("has correct short week days for fi-FI and starts on monday", async () => {
309309
window.mx = createMXObjectMock("fi_FI", "fi-FI", 1);
310-
render(<DatagridDateFilter {...commonProps} defaultValue={dynamicValue(new Date("2021-12-10"))} />);
310+
render(<DatagridDateFilter {...commonProps} defaultValue={dynamic.available(new Date("2021-12-10"))} />);
311311

312312
const input = screen.getByRole("textbox");
313313
await act(async () => {
@@ -319,7 +319,7 @@ describe("Date Filter", () => {
319319

320320
it("has correct short week days for fi-FI", async () => {
321321
window.mx = createMXObjectMock("fi_FI", "fi-FI");
322-
render(<DatagridDateFilter {...commonProps} defaultValue={dynamicValue(new Date("2021-12-10"))} />);
322+
render(<DatagridDateFilter {...commonProps} defaultValue={dynamic.available(new Date("2021-12-10"))} />);
323323

324324
const input = screen.getByRole("textbox");
325325
await act(async () => {

0 commit comments

Comments
 (0)