@@ -0,0 +1,134 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import { ViewManagerEpoch } from '../../../src/card-controller/view/types';
|
||||
import {
|
||||
getUpFolderMediaItem,
|
||||
upFolderClickHandler,
|
||||
} from '../../../src/components-lib/folder/up-folder';
|
||||
import { ViewFolder } from '../../../src/view/item';
|
||||
import { EventMediaQuery, FolderViewQuery } from '../../../src/view/query';
|
||||
import {
|
||||
createCardAPI,
|
||||
createFolder,
|
||||
createView,
|
||||
TestViewMedia,
|
||||
} from '../../test-utils';
|
||||
|
||||
describe('upFolderClickHandler', () => {
|
||||
const item = new TestViewMedia();
|
||||
|
||||
it('should ignore non-folder query', () => {
|
||||
const api = createCardAPI();
|
||||
const view = createView({
|
||||
query: new EventMediaQuery(),
|
||||
});
|
||||
vi.mocked(api.getViewManager().getView).mockReturnValue(view);
|
||||
|
||||
const epoch: ViewManagerEpoch = {
|
||||
manager: api.getViewManager(),
|
||||
};
|
||||
|
||||
upFolderClickHandler(item, new Event('click'), epoch);
|
||||
|
||||
expect(api.getViewManager().setViewByParametersWithExistingQuery).not.toBeCalled();
|
||||
});
|
||||
|
||||
it('should ignore folder query without raw query', () => {
|
||||
const api = createCardAPI();
|
||||
const view = createView({
|
||||
query: new FolderViewQuery(),
|
||||
});
|
||||
vi.mocked(api.getViewManager().getView).mockReturnValue(view);
|
||||
|
||||
const epoch: ViewManagerEpoch = {
|
||||
manager: api.getViewManager(),
|
||||
};
|
||||
|
||||
upFolderClickHandler(item, new Event('click'), epoch);
|
||||
|
||||
expect(api.getViewManager().setViewByParametersWithExistingQuery).not.toBeCalled();
|
||||
});
|
||||
|
||||
it('should ignore folder query wihout parent to go up to', () => {
|
||||
const api = createCardAPI();
|
||||
const view = createView({
|
||||
query: new FolderViewQuery({ folder: createFolder(), path: ['path'] }),
|
||||
});
|
||||
vi.mocked(api.getViewManager().getView).mockReturnValue(view);
|
||||
|
||||
const epoch: ViewManagerEpoch = {
|
||||
manager: api.getViewManager(),
|
||||
};
|
||||
|
||||
upFolderClickHandler(item, new Event('click'), epoch);
|
||||
|
||||
expect(api.getViewManager().setViewByParametersWithExistingQuery).not.toBeCalled();
|
||||
});
|
||||
|
||||
it('should go up in the folder hierarchy', () => {
|
||||
const api = createCardAPI();
|
||||
const folder = createFolder();
|
||||
const view = createView({
|
||||
query: new FolderViewQuery({
|
||||
folder,
|
||||
path: ['one', 'two', 'three'],
|
||||
}),
|
||||
});
|
||||
vi.mocked(api.getViewManager().getView).mockReturnValue(view);
|
||||
|
||||
const epoch: ViewManagerEpoch = {
|
||||
manager: api.getViewManager(),
|
||||
};
|
||||
|
||||
upFolderClickHandler(item, new Event('click'), epoch);
|
||||
|
||||
expect(api.getViewManager().setViewByParametersWithExistingQuery).toBeCalledWith({
|
||||
params: {
|
||||
query: expect.any(FolderViewQuery),
|
||||
},
|
||||
});
|
||||
|
||||
const query = vi.mocked(api.getViewManager().setViewByParametersWithExistingQuery)
|
||||
.mock.calls[0][0]?.params?.query;
|
||||
expect(query?.getQuery()).toEqual({
|
||||
folder,
|
||||
path: ['one', 'two'],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('getUpFolderMediaItem', () => {
|
||||
it('should ignore non-folder query', () => {
|
||||
const view = createView({
|
||||
query: new EventMediaQuery(),
|
||||
});
|
||||
expect(getUpFolderMediaItem(view)).toBeNull();
|
||||
});
|
||||
|
||||
it('should ignore folder query without raw query', () => {
|
||||
const view = createView({
|
||||
query: new FolderViewQuery(),
|
||||
});
|
||||
expect(getUpFolderMediaItem(view)).toBeNull();
|
||||
});
|
||||
|
||||
it('should ignore folder query without parents', () => {
|
||||
const view = createView({
|
||||
query: new FolderViewQuery({ folder: createFolder(), path: ['one'] }),
|
||||
});
|
||||
expect(getUpFolderMediaItem(view)).toBeNull();
|
||||
});
|
||||
|
||||
it('should get up folder media', () => {
|
||||
const view = createView({
|
||||
query: new FolderViewQuery({
|
||||
folder: createFolder(),
|
||||
path: ['one', 'two', 'three'],
|
||||
}),
|
||||
});
|
||||
|
||||
const folderMedia = getUpFolderMediaItem(view);
|
||||
|
||||
expect(folderMedia).toBeInstanceOf(ViewFolder);
|
||||
expect(folderMedia?.getIcon()).toBe('mdi:arrow-up-left');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user