@@ -6,6 +6,8 @@ import ViewItem from '@/components/app/outline/ViewItem';
66declare global {
77 // eslint-disable-next-line no-var
88 var __selectedViewId : string | undefined ;
9+ // eslint-disable-next-line no-var
10+ var __highlightedViewIds : string [ ] | undefined ;
911}
1012
1113jest . mock ( 'react-i18next' , ( ) => ( {
@@ -14,6 +16,7 @@ jest.mock('react-i18next', () => ({
1416
1517jest . mock ( '@/components/app/app.hooks' , ( ) => ( {
1618 useSidebarSelectedViewId : ( ) => global . __selectedViewId ,
19+ useSidebarHighlightedViewIds : ( ) => global . __highlightedViewIds || [ ] ,
1720 useAppOperations : ( ) => ( {
1821 updatePage : jest . fn ( ) ,
1922 uploadFile : jest . fn ( ) ,
@@ -30,6 +33,7 @@ jest.mock('@/components/_shared/view-icon/PageIcon', () => () => null);
3033describe ( 'ViewItem database container' , ( ) => {
3134 beforeEach ( ( ) => {
3235 global . __selectedViewId = undefined ;
36+ global . __highlightedViewIds = undefined ;
3337 } ) ;
3438
3539 it ( 'clicking a container opens its first child' , ( ) => {
@@ -112,4 +116,45 @@ describe('ViewItem database container', () => {
112116
113117 expect ( el . getAttribute ( 'data-selected' ) ) . toBe ( 'true' ) ;
114118 } ) ;
119+
120+ it ( 'marks both the database container and active child view as selected' , ( ) => {
121+ const childView : View = {
122+ view_id : 'child-view-id' ,
123+ name : 'Grid' ,
124+ icon : null ,
125+ layout : ViewLayout . Grid ,
126+ extra : { is_space : false } ,
127+ children : [ ] ,
128+ is_published : false ,
129+ is_private : false ,
130+ parent_view_id : 'container-view-id' ,
131+ } ;
132+
133+ const containerView : View = {
134+ view_id : 'container-view-id' ,
135+ name : 'New database' ,
136+ icon : null ,
137+ layout : ViewLayout . Grid ,
138+ extra : { is_space : false , is_database_container : true } ,
139+ children : [ childView ] ,
140+ is_published : false ,
141+ is_private : false ,
142+ } ;
143+
144+ global . __selectedViewId = childView . view_id ;
145+ global . __highlightedViewIds = [ childView . view_id , containerView . view_id ] ;
146+
147+ render (
148+ < ViewItem
149+ view = { containerView }
150+ width = { 240 }
151+ expandIds = { [ containerView . view_id ] }
152+ toggleExpand = { jest . fn ( ) }
153+ onClickView = { jest . fn ( ) }
154+ />
155+ ) ;
156+
157+ expect ( screen . getByTestId ( `page-${ containerView . view_id } ` ) . getAttribute ( 'data-selected' ) ) . toBe ( 'true' ) ;
158+ expect ( screen . getByTestId ( `page-${ childView . view_id } ` ) . getAttribute ( 'data-selected' ) ) . toBe ( 'true' ) ;
159+ } ) ;
115160} ) ;
0 commit comments