Skip to content

Commit aa1d818

Browse files
committed
test: add test for replace button visibility in multiple file fields
1 parent 2e2c259 commit aa1d818

2 files changed

Lines changed: 72 additions & 1 deletion

File tree

src/__test__/data/fields.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,18 @@ export const mockMultipleLinkFieldSchema: ISchemaFieldMap = {
3535
non_localizable: false,
3636
unique: false,
3737
};
38+
39+
export const mockMultipleFileFieldSchema: ISchemaFieldMap = {
40+
data_type: "file",
41+
display_name: "File",
42+
uid: "file",
43+
extensions: [],
44+
field_metadata: {
45+
description: "",
46+
rich_text_type: "standard"
47+
},
48+
mandatory: false,
49+
multiple: true,
50+
non_localizable: false,
51+
unique: false,
52+
};

src/visualBuilder/components/__test__/fieldToolbar.test.tsx

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from "../../utils/instanceHandlers";
88
import { ISchemaFieldMap } from "../../utils/types/index.types";
99
import FieldToolbarComponent from "../FieldToolbar";
10-
import { mockMultipleLinkFieldSchema, singleLineFieldSchema } from "../../../__test__/data/fields";
10+
import { mockMultipleLinkFieldSchema, mockMultipleFileFieldSchema } from "../../../__test__/data/fields";
1111
import { asyncRender } from "../../../__test__/utils";
1212
import { VisualBuilderCslpEventDetails } from "../../types/visualBuilder.types";
1313

@@ -180,4 +180,60 @@ describe("MultipleFieldToolbarComponent", () => {
180180
);
181181
expect(variantIcon).toBeInTheDocument();
182182
});
183+
184+
describe("'Replace button' visibility for multiple file fields", () => {
185+
beforeEach(() => {
186+
vi.spyOn(FieldSchemaMap, "getFieldSchema").mockResolvedValue(
187+
mockMultipleFileFieldSchema
188+
);
189+
});
190+
191+
test("'replace button' is hidden for parent wrapper of multiple file field", async () => {
192+
const parentWrapperMetadata: CslpData = {
193+
...mockMultipleFieldMetadata,
194+
fieldPathWithIndex: "files",
195+
instance: {
196+
fieldPathWithIndex: "files"
197+
},
198+
};
199+
200+
const parentWrapperEventDetails = {
201+
...mockEventDetails,
202+
fieldMetadata: parentWrapperMetadata
203+
};
204+
205+
const { container } = await asyncRender(
206+
<FieldToolbarComponent
207+
eventDetails={parentWrapperEventDetails}
208+
/>
209+
);
210+
211+
const replaceButton = container.querySelector('[data-testid="visual-builder-replace-file"]');
212+
expect(replaceButton).not.toBeInTheDocument();
213+
});
214+
215+
test("'replace button' is visible for individual field in multiple file field", async () => {
216+
const individualFieldMetadata: CslpData = {
217+
...mockMultipleFieldMetadata,
218+
fieldPathWithIndex: "files",
219+
instance: {
220+
fieldPathWithIndex: "files.0"
221+
},
222+
};
223+
224+
const individualFieldEventDetails = {
225+
...mockEventDetails,
226+
fieldMetadata: individualFieldMetadata
227+
};
228+
229+
const { container } = await asyncRender(
230+
<FieldToolbarComponent
231+
eventDetails={individualFieldEventDetails}
232+
/>
233+
);
234+
235+
const replaceButton = container.querySelector('[data-testid="visual-builder-replace-file"]');
236+
expect(replaceButton).toBeInTheDocument();
237+
});
238+
});
183239
});

0 commit comments

Comments
 (0)