From 16f17fc1b8f05f32e4916a339d4bd97488b372b9 Mon Sep 17 00:00:00 2001 From: yuneng-jiang Date: Wed, 31 Dec 2025 14:53:52 -0800 Subject: [PATCH] tests and build --- .../ModelsAndEndpointsView.test.tsx | 54 +++++++++++-------- .../ModelsAndEndpointsView.tsx | 4 +- .../(dashboard)/models-and-endpoints/page.tsx | 5 +- ui/litellm-dashboard/src/app/page.tsx | 3 -- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView.test.tsx b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView.test.tsx index 8dc7d1ff3d6..1e8eabaea2e 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView.test.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView.test.tsx @@ -9,34 +9,24 @@ vi.mock("@/components/networking", () => ({ credentialListCall: vi.fn().mockResolvedValue({ credentials: [] }), modelInfoCall: vi.fn().mockResolvedValue({ data: [] }), modelCostMap: vi.fn().mockResolvedValue({}), - modelMetricsCall: vi.fn().mockResolvedValue({ data: [], all_api_bases: [] }), - streamingModelMetricsCall: vi.fn().mockResolvedValue({ data: [], all_api_bases: [] }), - modelExceptionsCall: vi.fn().mockResolvedValue({ data: [], exception_types: [] }), - modelMetricsSlowResponsesCall: vi.fn().mockResolvedValue([]), + getPassThroughEndpointsCall: vi.fn().mockResolvedValue({ endpoints: {} }), getCallbacksCall: vi.fn().mockResolvedValue({ router_settings: {} }), setCallbacksCall: vi.fn().mockResolvedValue(undefined), - modelSettingsCall: vi.fn().mockResolvedValue([]), - adminGlobalActivityExceptions: vi.fn().mockResolvedValue({ sum_num_rate_limit_exceptions: 0, daily_data: [] }), - adminGlobalActivityExceptionsPerDeployment: vi.fn().mockResolvedValue([]), - allEndUsersCall: vi.fn().mockResolvedValue([]), - latestHealthChecksCall: vi.fn().mockResolvedValue({ latest_health_checks: {} }), - getPassThroughEndpointsCall: vi.fn().mockResolvedValue({ endpoints: {} }), - getGuardrailsList: vi.fn().mockResolvedValue([]), - tagListCall: vi.fn().mockResolvedValue([]), - modelAvailableCall: vi.fn().mockResolvedValue({ data: [] }), - modelHubCall: vi.fn().mockResolvedValue({ data: [] }), - getModelCostMapReloadStatus: vi.fn().mockResolvedValue({ - scheduled: false, - interval_hours: null, - last_run: null, - next_run: null, - }), + getUiSettings: vi.fn().mockResolvedValue({ values: {} }), })); vi.mock("@/app/(dashboard)/models-and-endpoints/components/ModelAnalyticsTab/ModelAnalyticsTab", () => ({ default: () => null, })); +vi.mock("@/components/add_model/add_auto_router_tab", () => ({ + default: () => null, +})); + +vi.mock("@/components/add_model/AddModelForm", () => ({ + default: () => null, +})); + vi.mock("@/app/(dashboard)/hooks/useTeams", () => ({ default: () => ({ teams: [], @@ -54,6 +44,16 @@ vi.mock("@/app/(dashboard)/hooks/uiSettings/useUISettings", () => ({ useUISettings: () => mockUseUISettings(), })); +const mockUseModelCostMap = vi.fn(); +vi.mock("@/app/(dashboard)/hooks/models/useModelCostMap", () => ({ + useModelCostMap: () => mockUseModelCostMap(), +})); + +const mockUseAuthorized = vi.fn(); +vi.mock("@/app/(dashboard)/hooks/useAuthorized", () => ({ + default: () => mockUseAuthorized(), +})); + const createQueryClient = () => new QueryClient({ defaultOptions: { queries: { retry: false, gcTime: 0 } }, @@ -69,6 +69,17 @@ describe("ModelsAndEndpointsView", () => { mockUseUISettings.mockReturnValue({ data: { values: {} }, }); + mockUseModelCostMap.mockReturnValue({ + data: {}, + isLoading: false, + error: null, + }); + mockUseAuthorized.mockReturnValue({ + accessToken: "123", + token: "123", + userRole: "Admin", + userId: "123", + }); // eslint-disable-next-line @typescript-eslint/no-explicit-any (global as any).ResizeObserver = class { observe() {} @@ -82,10 +93,7 @@ describe("ModelsAndEndpointsView", () => { const { findByText } = render( {}} diff --git a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView.tsx b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView.tsx index 59b5952b5e5..e833686542c 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView.tsx @@ -1,6 +1,6 @@ import { useCredentials } from "@/app/(dashboard)/hooks/credentials/useCredentials"; -import { useModelsInfo } from "@/app/(dashboard)/hooks/models/useModels"; import { useModelCostMap } from "@/app/(dashboard)/hooks/models/useModelCostMap"; +import { useModelsInfo } from "@/app/(dashboard)/hooks/models/useModels"; import { useUISettings } from "@/app/(dashboard)/hooks/uiSettings/useUISettings"; import AllModelsTab from "@/app/(dashboard)/models-and-endpoints/components/AllModelsTab"; import ModelRetrySettingsTab from "@/app/(dashboard)/models-and-endpoints/components/ModelRetrySettingsTab"; @@ -17,7 +17,7 @@ import { useQueryClient } from "@tanstack/react-query"; import { Col, Grid, Icon, Tab, TabGroup, TabList, TabPanel, TabPanels, Text } from "@tremor/react"; import type { UploadProps } from "antd"; import { Form, Typography } from "antd"; -import React, { useEffect, useRef, useState } from "react"; +import React, { useEffect, useState } from "react"; import AddModelTab from "../../../components/add_model/add_model_tab"; import HealthCheckComponent from "../../../components/model_dashboard/HealthCheckComponent"; import ModelGroupAliasSettings from "../../../components/model_group_alias_settings"; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/page.tsx b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/page.tsx index 01dd97505c8..77496aef3e6 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/page.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/page.tsx @@ -6,17 +6,14 @@ import { useState } from "react"; import ModelsAndEndpointsView from "@/app/(dashboard)/models-and-endpoints/ModelsAndEndpointsView"; const ModelsAndEndpointsPage = () => { - const { token, accessToken, userRole, userId, premiumUser } = useAuthorized(); + const { token, premiumUser } = useAuthorized(); const [keys, setKeys] = useState([]); const { teams } = useTeams(); return ( {}} diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 6b94f514d91..c0d6e52ae11 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -323,11 +323,8 @@ export default function CreateKeyPage() { /> ) : page == "models" ? (