From 2920c600841e57f5a94d7b92a105fac2eda01b83 Mon Sep 17 00:00:00 2001 From: adm01-debug Date: Sat, 23 May 2026 18:20:13 -0300 Subject: [PATCH 1/4] fix(ci): jest-dom types + useStockAlerts.integration.test + RestrictedRouteNotice (lote 1/4) --- .../layout/sidebar/RestrictedRouteNotice.tsx | 95 ++++++++++--------- .../useStockAlerts.integration.test.tsx | 2 +- src/types/jest-dom.d.ts | 12 +++ 3 files changed, 61 insertions(+), 48 deletions(-) create mode 100644 src/types/jest-dom.d.ts diff --git a/src/components/layout/sidebar/RestrictedRouteNotice.tsx b/src/components/layout/sidebar/RestrictedRouteNotice.tsx index 9faa912a0..192bb77d3 100644 --- a/src/components/layout/sidebar/RestrictedRouteNotice.tsx +++ b/src/components/layout/sidebar/RestrictedRouteNotice.tsx @@ -1,18 +1,10 @@ -import { ShieldAlert, KeyRound, Lock } from "lucide-react"; -import { useLocation, Link } from "react-router-dom"; -import { useAuth } from "@/contexts/AuthContext"; -import { - isDevOnlyPath, - isAdminOnlyPath, -} from "@/lib/navigation/restricted-routes"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@/components/ui/tooltip"; -import { cn } from "@/lib/utils"; -import { Button } from "@/components/ui/button"; +import { ShieldAlert, KeyRound, Lock } from 'lucide-react'; +import { useLocation, Link } from 'react-router-dom'; +import { useAuth } from '@/contexts/AuthContext'; +import { isDevOnlyPath, isAdminOnlyPath } from '@/lib/navigation/restricted-routes'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; +import { cn } from '@/lib/utils'; +import { Button } from '@/components/ui/button'; interface RestrictedRouteNoticeProps { isCollapsed: boolean; @@ -27,9 +19,7 @@ interface RestrictedRouteNoticeProps { * - No modo colapsado, vira só o ícone com tooltip explicativo. * - Dev nunca vê (tem acesso). */ -export function RestrictedRouteNotice({ - isCollapsed, -}: RestrictedRouteNoticeProps) { +export function RestrictedRouteNotice({ isCollapsed }: RestrictedRouteNoticeProps) { const location = useLocation(); const { isAdmin, isDev, rolesLoaded } = useAuth(); const path = location.pathname; @@ -42,16 +32,15 @@ export function RestrictedRouteNotice({ // Rota técnica: precisa de dev. Bloqueia tanto vendedor quanto admin. // Rota admin: bloqueia só vendedor. - const blocked = - (isDevRoute && !isDev) || (isAdminRoute && !isAdmin && !isDev); + const blocked = (isDevRoute && !isDev) || (isAdminRoute && !isAdmin && !isDev); if (!blocked) return null; - const requiredRole = isDevRoute ? "dev" : "admin"; - const title = "Acesso Restrito"; + const requiredRole = isDevRoute ? 'dev' : 'admin'; + const title = 'Acesso Restrito'; const description = isDevRoute - ? "Esta funcionalidade é exclusiva para a equipe técnica de engenharia." - : "Esta funcionalidade exige permissões de supervisão ou administração."; - + ? 'Esta funcionalidade é exclusiva para a equipe técnica de engenharia.' + : 'Esta funcionalidade exige permissões de supervisão ou administração.'; + const icon = isDevRoute ? KeyRound : Lock; const Icon = icon; @@ -64,27 +53,36 @@ export function RestrictedRouteNotice({ role="status" aria-label={`${title}: ${description}`} className={cn( - "mx-auto my-2 flex h-8 w-8 items-center justify-center rounded-md", - "bg-amber-500/10 text-amber-500 border border-amber-500/30 transition-all duration-300", - "hover:bg-amber-500/20 hover:border-amber-500/50" + 'mx-auto my-2 flex h-8 w-8 items-center justify-center rounded-md', + 'border border-amber-500/30 bg-amber-500/10 text-amber-500 transition-all duration-300', + 'hover:border-amber-500/50 hover:bg-amber-500/20', )} >