/*
Copyright (C) 2023 Cloudbase Solutions SRL
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
import React from "react";
import { render } from "@testing-library/react";
import { OPENSTACK_ENDPOINT_MOCK } from "@tests/mocks/EndpointsMock";
import { MINION_POOL_DETAILS_MOCK } from "@tests/mocks/MinionPoolMock";
import { REPLICA_MOCK } from "@tests/mocks/TransferMock";
import TestUtils from "@tests/TestUtils";
import MinionPoolDetailsContent from "./MinionPoolDetailsContent";
jest.mock("react-router-dom", () => ({ Link: "a" }));
jest.mock("@src/components/modules/EndpointModule/EndpointLogos", () => ({
__esModule: true,
default: (props: any) => (
{props.endpoint}
),
}));
jest.mock(
"@src/components/modules/MinionModule/MinionPoolDetailsContent/MinionPoolEvents",
() => ({
__esModule: true,
default: () => ,
})
);
describe("MinionPoolDetailsContent", () => {
let defaultProps: MinionPoolDetailsContent["props"];
beforeEach(() => {
defaultProps = {
item: MINION_POOL_DETAILS_MOCK,
itemId: "minion-pool-id",
replicas: [REPLICA_MOCK],
migrations: [],
endpoints: [OPENSTACK_ENDPOINT_MOCK],
schema: [
{
name: "name",
label: "Name",
type: "text",
required: true,
disabled: false,
},
],
schemaLoading: false,
loading: false,
page: "",
onAllocate: jest.fn(),
onDeleteMinionPoolClick: jest.fn(),
};
});
it("renders without crashing", () => {
const { getByText } = render(
);
expect(getByText(MINION_POOL_DETAILS_MOCK.id)).toBeTruthy();
expect(getByText(MINION_POOL_DETAILS_MOCK.notes!)).toBeTruthy();
});
it("calls allocate callback", () => {
const { getByText } = render(
);
getByText("Allocate").click();
expect(defaultProps.onAllocate).toHaveBeenCalled();
});
it("renders loading", () => {
render();
expect(TestUtils.select("MinionPoolDetailsContent__Loading")).toBeTruthy();
});
it("renders machines page", () => {
render();
expect(TestUtils.select("MinionPoolMachines")).toBeTruthy();
});
it("renders events page", () => {
const { getByTestId } = render(
);
expect(getByTestId("MinionPoolEvents")).toBeTruthy();
});
});