mirror of
https://github.com/nextcloud/server.git
synced 2026-07-04 23:36:25 -04:00
test(files): Adapt favorite views spec
Signed-off-by: Christopher Ng <chrng8@gmail.com>
This commit is contained in:
parent
3eca671c36
commit
94fbcf3d53
1 changed files with 66 additions and 25 deletions
|
|
@ -3,21 +3,39 @@
|
|||
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
import { basename } from 'path'
|
||||
|
||||
import type { Folder as CFolder, Navigation } from '@nextcloud/files'
|
||||
|
||||
import { expect } from '@jest/globals'
|
||||
import { Folder, Navigation, getNavigation } from '@nextcloud/files'
|
||||
import * as filesUtils from '@nextcloud/files'
|
||||
import { CancelablePromise } from 'cancelable-promise'
|
||||
import eventBus, { emit } from '@nextcloud/event-bus'
|
||||
import * as initialState from '@nextcloud/initial-state'
|
||||
import * as eventBus from '@nextcloud/event-bus'
|
||||
import { basename } from 'path'
|
||||
|
||||
import { action } from '../actions/favoriteAction'
|
||||
import * as favoritesService from '../services/Favorites'
|
||||
import { registerFavoritesView } from './favorites'
|
||||
|
||||
const { Folder, getNavigation } = filesUtils
|
||||
|
||||
jest.mock('@nextcloud/axios', () => ({
|
||||
post: jest.fn(),
|
||||
}))
|
||||
|
||||
jest.mock('webdav/dist/node/request.js', () => ({
|
||||
request: jest.fn(),
|
||||
}))
|
||||
|
||||
jest.mock('@nextcloud/files', () => ({
|
||||
__esModule: true,
|
||||
...jest.requireActual('@nextcloud/files'),
|
||||
}))
|
||||
|
||||
jest.mock('@nextcloud/event-bus', () => ({
|
||||
__esModule: true,
|
||||
...jest.requireActual('@nextcloud/event-bus'),
|
||||
}))
|
||||
|
||||
window.OC = {
|
||||
...window.OC,
|
||||
TAG_FAVORITE: '_$!<Favorite>!$_',
|
||||
|
|
@ -40,11 +58,12 @@ describe('Favorites view definition', () => {
|
|||
delete window._nc_navigation
|
||||
})
|
||||
|
||||
test('Default empty favorite view', () => {
|
||||
test('Default empty favorite view', async () => {
|
||||
jest.spyOn(eventBus, 'subscribe')
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as Folder, contents: [] }))
|
||||
jest.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([]))
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] }))
|
||||
|
||||
registerFavoritesView()
|
||||
await registerFavoritesView()
|
||||
const favoritesView = Navigation.views.find(view => view.id === 'favorites')
|
||||
const favoriteFoldersViews = Navigation.views.filter(view => view.parent === 'favorites')
|
||||
|
||||
|
|
@ -67,16 +86,31 @@ describe('Favorites view definition', () => {
|
|||
expect(favoritesView?.getContents).toBeDefined()
|
||||
})
|
||||
|
||||
test('Default with favorites', () => {
|
||||
test('Default with favorites', async () => {
|
||||
const favoriteFolders = [
|
||||
{ fileid: 1, path: '/foo' },
|
||||
{ fileid: 2, path: '/bar' },
|
||||
{ fileid: 3, path: '/foo/bar' },
|
||||
new Folder({
|
||||
id: 1,
|
||||
root: '/files/admin',
|
||||
source: 'http://nextcloud.local/remote.php/dav/files/admin/foo',
|
||||
owner: 'admin',
|
||||
}),
|
||||
new Folder({
|
||||
id: 2,
|
||||
root: '/files/admin',
|
||||
source: 'http://nextcloud.local/remote.php/dav/files/admin/bar',
|
||||
owner: 'admin',
|
||||
}),
|
||||
new Folder({
|
||||
id: 3,
|
||||
root: '/files/admin',
|
||||
source: 'http://nextcloud.local/remote.php/dav/files/admin/foo/bar',
|
||||
owner: 'admin',
|
||||
}),
|
||||
]
|
||||
jest.spyOn(initialState, 'loadState').mockReturnValue(favoriteFolders)
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as Folder, contents: [] }))
|
||||
jest.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve(favoriteFolders))
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] }))
|
||||
|
||||
registerFavoritesView()
|
||||
await registerFavoritesView()
|
||||
const favoritesView = Navigation.views.find(view => view.id === 'favorites')
|
||||
const favoriteFoldersViews = Navigation.views.filter(view => view.parent === 'favorites')
|
||||
|
||||
|
|
@ -94,7 +128,7 @@ describe('Favorites view definition', () => {
|
|||
expect(favoriteView?.order).toBe(index)
|
||||
expect(favoriteView?.params).toStrictEqual({
|
||||
dir: folder.path,
|
||||
fileid: folder.fileid.toString(),
|
||||
fileid: String(folder.fileid),
|
||||
view: 'favorites',
|
||||
})
|
||||
expect(favoriteView?.parent).toBe('favorites')
|
||||
|
|
@ -116,10 +150,10 @@ describe('Dynamic update of favourite folders', () => {
|
|||
|
||||
test('Add a favorite folder creates a new entry in the navigation', async () => {
|
||||
jest.spyOn(eventBus, 'emit')
|
||||
jest.spyOn(initialState, 'loadState').mockReturnValue([])
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as Folder, contents: [] }))
|
||||
jest.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([]))
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] }))
|
||||
|
||||
registerFavoritesView()
|
||||
await registerFavoritesView()
|
||||
const favoritesView = Navigation.views.find(view => view.id === 'favorites')
|
||||
const favoriteFoldersViews = Navigation.views.filter(view => view.parent === 'favorites')
|
||||
|
||||
|
|
@ -145,10 +179,17 @@ describe('Dynamic update of favourite folders', () => {
|
|||
test('Remove a favorite folder remove the entry from the navigation column', async () => {
|
||||
jest.spyOn(eventBus, 'emit')
|
||||
jest.spyOn(eventBus, 'subscribe')
|
||||
jest.spyOn(initialState, 'loadState').mockReturnValue([{ fileid: 42, path: '/Foo/Bar' }])
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as Folder, contents: [] }))
|
||||
jest.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([
|
||||
new Folder({
|
||||
id: 42,
|
||||
root: '/files/admin',
|
||||
source: 'http://nextcloud.local/remote.php/dav/files/admin/Foo/Bar',
|
||||
owner: 'admin',
|
||||
}),
|
||||
]))
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] }))
|
||||
|
||||
registerFavoritesView()
|
||||
await registerFavoritesView()
|
||||
let favoritesView = Navigation.views.find(view => view.id === 'favorites')
|
||||
let favoriteFoldersViews = Navigation.views.filter(view => view.parent === 'favorites')
|
||||
|
||||
|
|
@ -185,10 +226,10 @@ describe('Dynamic update of favourite folders', () => {
|
|||
|
||||
test('Renaming a favorite folder updates the navigation', async () => {
|
||||
jest.spyOn(eventBus, 'emit')
|
||||
jest.spyOn(initialState, 'loadState').mockReturnValue([])
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as Folder, contents: [] }))
|
||||
jest.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([]))
|
||||
jest.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] }))
|
||||
|
||||
registerFavoritesView()
|
||||
await registerFavoritesView()
|
||||
const favoritesView = Navigation.views.find(view => view.id === 'favorites')
|
||||
const favoriteFoldersViews = Navigation.views.filter(view => view.parent === 'favorites')
|
||||
|
||||
|
|
@ -218,7 +259,7 @@ describe('Dynamic update of favourite folders', () => {
|
|||
})
|
||||
|
||||
// Exec the rename action
|
||||
emit('files:node:renamed', renamedFolder)
|
||||
eventBus.emit('files:node:renamed', renamedFolder)
|
||||
expect(eventBus.emit).toHaveBeenNthCalledWith(2, 'files:node:renamed', renamedFolder)
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue