11import type { Breadcrumb } from '../useBreadcrumbs'
2- import { useRoute } from 'vitepress'
2+ import { useData , useRoute } from 'vitepress'
33import { describe , expect , it , vi } from 'vitest'
44import { computed } from 'vue'
55import { useBreadcrumbs } from '../useBreadcrumbs'
@@ -8,6 +8,7 @@ import { useCurrentModule } from '../useCurrentModule'
88// Mock dependencies
99vi . mock ( 'vitepress' , ( ) => ( {
1010 useRoute : vi . fn ( ) ,
11+ useData : vi . fn ( ) ,
1112 withBase : ( p : string ) => `/base${ p } ` ,
1213} ) )
1314vi . mock ( '../useCurrentModule' , ( ) => ( {
@@ -32,6 +33,7 @@ describe('useBreadcrumbs', () => {
3233 currentDocModule : computed ( ( ) => moduleData ) ,
3334 } )
3435 ; ( useRoute as any ) . mockReturnValue ( { path : '/base/page1/' } )
36+ ; ( useData as any ) . mockReturnValue ( { frontmatter : computed ( ( ) => ( { } ) ) } )
3537
3638 const { breadcrumbs } = useBreadcrumbs ( )
3739 expect ( breadcrumbs . value ) . toEqual < Breadcrumb [ ] > ( [
@@ -63,6 +65,7 @@ describe('useBreadcrumbs', () => {
6365 currentDocModule : computed ( ( ) => moduleData ) ,
6466 } )
6567 ; ( useRoute as any ) . mockReturnValue ( { path : '/base/child/' } )
68+ ; ( useData as any ) . mockReturnValue ( { frontmatter : computed ( ( ) => ( { } ) ) } )
6669
6770 const { breadcrumbs } = useBreadcrumbs ( )
6871 expect ( breadcrumbs . value ) . toEqual < Breadcrumb [ ] > ( [
@@ -72,4 +75,52 @@ describe('useBreadcrumbs', () => {
7275 { text : 'Child' } ,
7376 ] )
7477 } )
78+
79+ it ( 'should show breadcrumbs by default for docs layout' , ( ) => {
80+ const moduleData = {
81+ text : 'Module' ,
82+ subpath : 'mod' ,
83+ sidebar : [ ] ,
84+ }
85+ ; ( useCurrentModule as any ) . mockReturnValue ( {
86+ currentDocModule : computed ( ( ) => moduleData ) ,
87+ } )
88+ ; ( useRoute as any ) . mockReturnValue ( { path : '/base/test/' } )
89+ ; ( useData as any ) . mockReturnValue ( { frontmatter : computed ( ( ) => ( { } ) ) } )
90+
91+ const { showBreadcrumbs } = useBreadcrumbs ( )
92+ expect ( showBreadcrumbs . value ) . toBe ( true )
93+ } )
94+
95+ it ( 'should hide breadcrumbs by default for home layout' , ( ) => {
96+ const moduleData = {
97+ text : 'Module' ,
98+ subpath : 'mod' ,
99+ sidebar : [ ] ,
100+ }
101+ ; ( useCurrentModule as any ) . mockReturnValue ( {
102+ currentDocModule : computed ( ( ) => moduleData ) ,
103+ } )
104+ ; ( useRoute as any ) . mockReturnValue ( { path : '/base/test/' } )
105+ ; ( useData as any ) . mockReturnValue ( { frontmatter : computed ( ( ) => ( { layout : 'home' } ) ) } )
106+
107+ const { showBreadcrumbs } = useBreadcrumbs ( )
108+ expect ( showBreadcrumbs . value ) . toBe ( false )
109+ } )
110+
111+ it ( 'should respect explicit breadcrumbs frontmatter setting' , ( ) => {
112+ const moduleData = {
113+ text : 'Module' ,
114+ subpath : 'mod' ,
115+ sidebar : [ ] ,
116+ }
117+ ; ( useCurrentModule as any ) . mockReturnValue ( {
118+ currentDocModule : computed ( ( ) => moduleData ) ,
119+ } )
120+ ; ( useRoute as any ) . mockReturnValue ( { path : '/base/test/' } )
121+ ; ( useData as any ) . mockReturnValue ( { frontmatter : computed ( ( ) => ( { breadcrumbs : false } ) ) } )
122+
123+ const { showBreadcrumbs } = useBreadcrumbs ( )
124+ expect ( showBreadcrumbs . value ) . toBe ( false )
125+ } )
75126} )
0 commit comments