diff --git a/src/renderer/components/+catalog/catalog-entity-details.test.tsx b/src/renderer/components/+catalog/catalog-entity-details.test.tsx new file mode 100644 index 0000000000..12f2c22637 --- /dev/null +++ b/src/renderer/components/+catalog/catalog-entity-details.test.tsx @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2021 OpenLens Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +import React from "react"; +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { CatalogEntityDetails } from "./catalog-entity-details"; +import { CatalogEntityItem } from "./catalog-entity-item"; +import { CatalogEntityDetailRegistry } from "../../../extensions/registries"; +import { mockWindow } from "../../../../__mocks__/windowMock"; + +// avoid TypeError: window.requestIdleCallback is not a function +mockWindow(); + +describe("", () => { + + beforeEach(() => { + CatalogEntityDetailRegistry.createInstance(); + }); + + it("trigger onRun when click on detail panel icon", () => { + const onRun = jest.fn(); + + const item = new CatalogEntityItem({ + enabled: true, + apiVersion: "", + kind: "", + metadata: { + uid: "", + name: "", + labels: {}, + }, + status: { + phase: "", + }, + spec: {}, + getId: () => "", + getName: () => "", + onContextMenuOpen: () => {}, + onSettingsOpen: () => {}, + onRun, + }); + + render( + {}} + /> + ); + + userEvent.click(screen.getByTestId("detail-panel-hot-bar-icon")); + + expect(onRun).toHaveBeenCalledTimes(1); + }); +});