Initial Commit
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
// 구조 회귀 방지: 챗봇(snap)·스니펫이 공통 래퍼 PaletteShell 아래 함께 있고,
|
||||
// /snippet 은 SnapLayout(스냅 헤더+Ctrl+N) 밖(=Raycast 풀윈도우)인지 route 설정만 검사(렌더 없음).
|
||||
import { isValidElement } from "react"
|
||||
import { describe, expect, it } from "vitest"
|
||||
import { routes } from "./routes"
|
||||
import ProtectedRoute from "@/shared/components/ProtectedRoute"
|
||||
import { SnapLayout } from "@/features/snap/components/SnapLayout"
|
||||
import { PaletteShell } from "@/shared/components/PaletteShell"
|
||||
import { PATHS } from "@/config/routes"
|
||||
|
||||
describe("routes", () => {
|
||||
it("snap·snippet 은 PaletteShell(공통 래퍼) 아래 함께 있고, snippet 은 SnapLayout 밖", () => {
|
||||
const protectedRoute = routes.find(
|
||||
(r) => isValidElement(r.element) && r.element.type === ProtectedRoute
|
||||
)
|
||||
expect(protectedRoute).toBeDefined()
|
||||
|
||||
// 공통 래퍼가 ProtectedRoute 자식(=인증 보호됨)
|
||||
const shell = (protectedRoute!.children ?? []).find(
|
||||
(r) => isValidElement(r.element) && r.element.type === PaletteShell
|
||||
)
|
||||
expect(shell).toBeDefined()
|
||||
|
||||
const shellChildren = shell!.children ?? []
|
||||
const snippetPath = PATHS.SNIPPET.slice(1)
|
||||
|
||||
// snap 그룹은 래퍼 안, 그 안에 snippet 은 없음
|
||||
const snapLayoutRoute = shellChildren.find(
|
||||
(r) => isValidElement(r.element) && r.element.type === SnapLayout
|
||||
)
|
||||
expect(snapLayoutRoute).toBeDefined()
|
||||
expect(snapLayoutRoute!.children?.some((r) => r.path === snippetPath)).toBe(false)
|
||||
|
||||
// snippet 은 래퍼 직속(SnapLayout 밖)
|
||||
const snippetRoute = shellChildren.find((r) => r.path === snippetPath)
|
||||
expect(snippetRoute).toBeDefined()
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user