77import type { Folder as CFolder , Navigation } from '@nextcloud/files'
88
99import { expect } from '@jest/globals'
10- import * as filesUtils from '@nextcloud/files'
11- import { CancelablePromise } from 'cancelable-promise'
10+
1211import * as eventBus from '@nextcloud/event-bus'
12+ import * as filesUtils from '@nextcloud/files'
13+ import * as filesDavUtils from '@nextcloud/files/dav'
1314import { basename } from 'path'
15+ import { CancelablePromise } from 'cancelable-promise'
1416
1517import { action } from '../actions/favoriteAction'
16- import * as favoritesService from '../services/Favorites'
1718import { registerFavoritesView } from './favorites'
19+ import * as favoritesService from '../services/Favorites'
1820
1921const { Folder, getNavigation } = filesUtils
2022
@@ -31,6 +33,11 @@ jest.mock('@nextcloud/files', () => ({
3133 ...jest . requireActual ( '@nextcloud/files' ) ,
3234} ) )
3335
36+ jest . mock ( '@nextcloud/files/dav' , ( ) => ( {
37+ __esModule : true ,
38+ ...jest . requireActual ( '@nextcloud/files/dav' ) ,
39+ } ) )
40+
3441jest . mock ( '@nextcloud/event-bus' , ( ) => ( {
3542 __esModule : true ,
3643 ...jest . requireActual ( '@nextcloud/event-bus' ) ,
@@ -60,7 +67,7 @@ describe('Favorites view definition', () => {
6067
6168 test ( 'Default empty favorite view' , async ( ) => {
6269 jest . spyOn ( eventBus , 'subscribe' )
63- jest . spyOn ( filesUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( [ ] ) )
70+ jest . spyOn ( filesDavUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( [ ] ) )
6471 jest . spyOn ( favoritesService , 'getContents' ) . mockReturnValue ( CancelablePromise . resolve ( { folder : { } as CFolder , contents : [ ] } ) )
6572
6673 await registerFavoritesView ( )
@@ -106,26 +113,35 @@ describe('Favorites view definition', () => {
106113 source : 'http://nextcloud.local/remote.php/dav/files/admin/foo/bar' ,
107114 owner : 'admin' ,
108115 } ) ,
116+ new Folder ( {
117+ id : 4 ,
118+ root : '/files/admin' ,
119+ source : 'http://nextcloud.local/remote.php/dav/files/admin/foo/bar/yabadaba' ,
120+ owner : 'admin' ,
121+ } ) ,
109122 ]
110- jest . spyOn ( filesUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( favoriteFolders ) )
123+ jest . spyOn ( filesDavUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( favoriteFolders ) )
111124 jest . spyOn ( favoritesService , 'getContents' ) . mockReturnValue ( CancelablePromise . resolve ( { folder : { } as CFolder , contents : [ ] } ) )
112125
113126 await registerFavoritesView ( )
114127 const favoritesView = Navigation . views . find ( view => view . id === 'favorites' )
115128 const favoriteFoldersViews = Navigation . views . filter ( view => view . parent === 'favorites' )
116129
117130 // one main view and 3 children
118- expect ( Navigation . views . length ) . toBe ( 4 )
131+ expect ( Navigation . views . length ) . toBe ( 5 )
119132 expect ( favoritesView ) . toBeDefined ( )
120- expect ( favoriteFoldersViews . length ) . toBe ( 3 )
133+ expect ( favoriteFoldersViews . length ) . toBe ( 4 )
134+
135+ // Sorted by basename: bar, bar, foo
136+ const expectedOrder = [ 2 , 0 , 1 , 3 ]
121137
122138 favoriteFolders . forEach ( ( folder , index ) => {
123139 const favoriteView = favoriteFoldersViews [ index ]
124140 expect ( favoriteView ) . toBeDefined ( )
125141 expect ( favoriteView ?. id ) . toBeDefined ( )
126142 expect ( favoriteView ?. name ) . toBe ( basename ( folder . path ) )
127143 expect ( favoriteView ?. icon ) . toBe ( '<svg>SvgMock</svg>' )
128- expect ( favoriteView ?. order ) . toBe ( index )
144+ expect ( favoriteView ?. order ) . toBe ( expectedOrder [ index ] )
129145 expect ( favoriteView ?. params ) . toStrictEqual ( {
130146 dir : folder . path ,
131147 fileid : String ( folder . fileid ) ,
@@ -150,7 +166,7 @@ describe('Dynamic update of favourite folders', () => {
150166
151167 test ( 'Add a favorite folder creates a new entry in the navigation' , async ( ) => {
152168 jest . spyOn ( eventBus , 'emit' )
153- jest . spyOn ( filesUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( [ ] ) )
169+ jest . spyOn ( filesDavUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( [ ] ) )
154170 jest . spyOn ( favoritesService , 'getContents' ) . mockReturnValue ( CancelablePromise . resolve ( { folder : { } as CFolder , contents : [ ] } ) )
155171
156172 await registerFavoritesView ( )
@@ -179,7 +195,7 @@ describe('Dynamic update of favourite folders', () => {
179195 test ( 'Remove a favorite folder remove the entry from the navigation column' , async ( ) => {
180196 jest . spyOn ( eventBus , 'emit' )
181197 jest . spyOn ( eventBus , 'subscribe' )
182- jest . spyOn ( filesUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( [
198+ jest . spyOn ( filesDavUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( [
183199 new Folder ( {
184200 id : 42 ,
185201 root : '/files/admin' ,
@@ -226,7 +242,7 @@ describe('Dynamic update of favourite folders', () => {
226242
227243 test ( 'Renaming a favorite folder updates the navigation' , async ( ) => {
228244 jest . spyOn ( eventBus , 'emit' )
229- jest . spyOn ( filesUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( [ ] ) )
245+ jest . spyOn ( filesDavUtils , 'getFavoriteNodes' ) . mockReturnValue ( CancelablePromise . resolve ( [ ] ) )
230246 jest . spyOn ( favoritesService , 'getContents' ) . mockReturnValue ( CancelablePromise . resolve ( { folder : { } as CFolder , contents : [ ] } ) )
231247
232248 await registerFavoritesView ( )
0 commit comments