mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-04 19:21:51 +00:00
94 lines
2.6 KiB
TypeScript
94 lines
2.6 KiB
TypeScript
import { render, screen } from "@testing-library/react";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
|
|
import { ThreatMap } from "./threat-map";
|
|
import type { ThreatMapData } from "./threat-map.types";
|
|
|
|
vi.mock("next/navigation", () => ({
|
|
useRouter: () => ({ push: vi.fn() }),
|
|
useSearchParams: () => new URLSearchParams(),
|
|
}));
|
|
|
|
vi.mock("./horizontal-bar-chart", () => ({
|
|
HorizontalBarChart: () => <div data-testid="bar-chart" />,
|
|
}));
|
|
|
|
function buildLocation(providerType: string, region: string) {
|
|
return {
|
|
id: `${providerType}-${region}`,
|
|
name: `${providerType} - ${region}`,
|
|
region,
|
|
regionCode: region,
|
|
providerType,
|
|
coordinates: [-122.4, 37.8] as [number, number],
|
|
totalFindings: 10,
|
|
failFindings: 4,
|
|
riskLevel: "high" as const,
|
|
severityData: [
|
|
{ name: "Fail", value: 4, percentage: 40 },
|
|
{ name: "Pass", value: 6, percentage: 60 },
|
|
],
|
|
};
|
|
}
|
|
|
|
describe("ThreatMap region selector", () => {
|
|
it("auto-selects the region when it is the only one available", () => {
|
|
const data: ThreatMapData = {
|
|
locations: [
|
|
buildLocation("okta", "global"),
|
|
buildLocation("googleworkspace", "global"),
|
|
],
|
|
regions: ["global"],
|
|
};
|
|
|
|
render(<ThreatMap data={data} />);
|
|
|
|
const select = screen.getByRole("combobox", {
|
|
name: "Filter threat map by region",
|
|
});
|
|
expect(select).toHaveValue("global");
|
|
expect(screen.getByText("Global Regions")).toBeInTheDocument();
|
|
expect(
|
|
screen.queryByText("Select a location on the map to view details"),
|
|
).not.toBeInTheDocument();
|
|
});
|
|
|
|
it("keeps All Regions as default when there are multiple regions", () => {
|
|
const data: ThreatMapData = {
|
|
locations: [
|
|
buildLocation("aws", "us-east-1"),
|
|
buildLocation("okta", "global"),
|
|
],
|
|
regions: ["global", "us-east-1"],
|
|
};
|
|
|
|
render(<ThreatMap data={data} />);
|
|
|
|
const select = screen.getByRole("combobox", {
|
|
name: "Filter threat map by region",
|
|
});
|
|
expect(select).toHaveValue("All Regions");
|
|
expect(
|
|
screen.getByRole("option", { name: "All Regions" }),
|
|
).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows the global option capitalized while keeping its filter value", () => {
|
|
const data: ThreatMapData = {
|
|
locations: [
|
|
buildLocation("aws", "us-east-1"),
|
|
buildLocation("okta", "global"),
|
|
],
|
|
regions: ["global", "us-east-1"],
|
|
};
|
|
|
|
render(<ThreatMap data={data} />);
|
|
|
|
const globalOption = screen.getByRole("option", { name: "Global" });
|
|
expect(globalOption).toHaveValue("global");
|
|
expect(
|
|
screen.getByRole("option", { name: "us-east-1" }),
|
|
).toBeInTheDocument();
|
|
});
|
|
});
|