diff --git a/packages/wow-ui/src/components/Switch/Switch.test.tsx b/packages/wow-ui/src/components/Switch/Switch.test.tsx
index 9dc82018..35fdffca 100644
--- a/packages/wow-ui/src/components/Switch/Switch.test.tsx
+++ b/packages/wow-ui/src/components/Switch/Switch.test.tsx
@@ -124,3 +124,50 @@ describe("disabled", () => {
});
});
});
+
+describe("external control and events", () => {
+ let rendered: RenderResult;
+
+ it("should fire external onClick event", async () => {
+ rendered = render();
+ const switchComponent = rendered.getByRole("checkbox");
+ const onClickHandler = jest.fn();
+ switchComponent.onclick = onClickHandler;
+
+ fireEvent.click(switchComponent);
+
+ await waitFor(() => {
+ expect(onClickHandler).toHaveBeenCalled();
+ });
+ });
+
+ it("should fire external onKeyDown event", async () => {
+ rendered = render();
+ const switchComponent = rendered.getByRole("checkbox");
+ const onKeyDownHandler = jest.fn();
+ switchComponent.onkeydown = onKeyDownHandler;
+
+ fireEvent.type(switchComponent, "{enter}");
+
+ await waitFor(() => {
+ expect(onKeyDownHandler).toHaveBeenCalled();
+ });
+ });
+
+ it("should toggle external checked state when onClick event fired", async () => {
+ let isChecked = false;
+ const handleChange = () => {
+ isChecked = !isChecked;
+ };
+ const rendered = render();
+ const switchComponent = rendered.getByRole("checkbox");
+ switchComponent.onchange = handleChange;
+
+ fireEvent.click(switchComponent);
+
+ await waitFor(() => {
+ expect(switchComponent).toHaveAttribute("aria-checked", "true");
+ expect(switchComponent).toHaveAttribute("aria-disabled", "false");
+ });
+ });
+});