diff --git a/src/app/tickets/visits/page.tsx b/src/app/tickets/visits/page.tsx new file mode 100644 index 0000000..bcf61c9 --- /dev/null +++ b/src/app/tickets/visits/page.tsx @@ -0,0 +1,7 @@ +import { TicketsVisitsPageClient } from "./tickets-visits-page-client" +import { requireAuthenticatedSession } from "@/lib/auth-server" + +export default async function TicketsVisitsPage() { + await requireAuthenticatedSession() + return +} diff --git a/src/app/tickets/visits/tickets-visits-page-client.tsx b/src/app/tickets/visits/tickets-visits-page-client.tsx new file mode 100644 index 0000000..631a112 --- /dev/null +++ b/src/app/tickets/visits/tickets-visits-page-client.tsx @@ -0,0 +1,31 @@ +"use client" + +import dynamic from "next/dynamic" + +import { AppShell } from "@/components/app-shell" +import { SiteHeader } from "@/components/site-header" + +const TicketsView = dynamic( + () => + import("@/components/tickets/tickets-view").then((module) => ({ + default: module.TicketsView, + })), + { ssr: false } +) + +export function TicketsVisitsPageClient() { + return ( + + } + > +
+ +
+
+ ) +} diff --git a/src/components/app-sidebar.tsx b/src/components/app-sidebar.tsx index d009332..10acc19 100644 --- a/src/components/app-sidebar.tsx +++ b/src/components/app-sidebar.tsx @@ -14,6 +14,7 @@ import { Layers3, LayoutTemplate, LifeBuoy, + MapPin, MonitorCog, Package, PlayCircle, @@ -81,6 +82,7 @@ const navigation: NavigationGroup[] = [ requiredRole: "staff", children: [ { title: "Todos os tickets", url: "/tickets", icon: ClipboardList, requiredRole: "staff" }, + { title: "Visitas", url: "/tickets/visits", icon: MapPin, requiredRole: "staff" }, { title: "Resolvidos", url: "/tickets/resolved", icon: ShieldCheck, requiredRole: "staff" }, { title: "Modo Play", url: "/play", icon: PlayCircle, requiredRole: "staff" }, ], diff --git a/tests/automations-engine.test.ts b/tests/automations-engine.test.ts index c24ea9e..483b060 100644 --- a/tests/automations-engine.test.ts +++ b/tests/automations-engine.test.ts @@ -287,7 +287,18 @@ describe("automations.runTicketAutomationsForEvent", () => { expect.objectContaining({ to: ["cliente@empresa.com"], subject: "Atualização do chamado #123", - html: expect.any(String), + emailProps: expect.objectContaining({ + title: "Atualização do chamado #123", + message: "Olá Renan, recebemos seu chamado: Teste de automação", + ticket: expect.objectContaining({ + reference: 123, + subject: "Teste de automação", + status: "PENDING", + priority: "MEDIUM", + requesterName: "Renan", + }), + ctaLabel: "Abrir chamado", + }), }) ) })