import FileTreeFolderList from '../../../../../frontend/js/features/file-tree/components/file-tree-folder-list' import { EditorProviders } from '../../../helpers/editor-providers' import { FileTreeProvider } from '../helpers/file-tree-provider' describe('', function () { it('renders empty', function () { cy.mount( ) cy.findByRole('tree') cy.findByRole('treeitem').should('not.exist') }) it('renders docs, files and folders', function () { cy.mount( ) cy.findByRole('tree') cy.findByRole('treeitem', { name: 'A Folder' }) cy.findByRole('treeitem', { name: 'doc.tex' }) cy.findByRole('treeitem', { name: 'file.bib' }) }) describe('selection and multi-selection', function () { it('without write permissions', function () { const rootFolder = [ { _id: 'root-folder-id', name: 'rootFolder', docs: [{ _id: '1' }, { _id: '2' }], fileRefs: [], folders: [], }, ] cy.mount( ) // click on item 1: it gets selected cy.findByRole('treeitem', { name: '1.tex' }).click() cy.findByRole('treeitem', { name: '1.tex', selected: true }) cy.findByRole('treeitem', { name: '2.tex', selected: false }) // meta-click on item 2: no changes cy.findByRole('treeitem', { name: '2.tex' }).click({ ctrlKey: true, cmdKey: true, }) cy.findByRole('treeitem', { name: '1.tex', selected: true }) cy.findByRole('treeitem', { name: '2.tex', selected: false }) }) it('with write permissions', function () { const rootFolder = [ { _id: 'root-folder-id', name: 'rootFolder', docs: [{ _id: '1' }, { _id: '2' }, { _id: '3' }], fileRefs: [], folders: [], }, ] cy.mount( ) // click item 1: it gets selected cy.findByRole('treeitem', { name: '1.tex' }).click() cy.findByRole('treeitem', { name: '1.tex', selected: true }) cy.findByRole('treeitem', { name: '2.tex', selected: false }) cy.findByRole('treeitem', { name: '3.tex', selected: false }) // click on item 2: it gets selected and item 1 is not selected anymore cy.findByRole('treeitem', { name: '2.tex' }).click() cy.findByRole('treeitem', { name: '1.tex', selected: false }) cy.findByRole('treeitem', { name: '2.tex', selected: true }) cy.findByRole('treeitem', { name: '3.tex', selected: false }) // meta-click on item 3: it gets selected and item 2 as well cy.findByRole('treeitem', { name: '3.tex' }).click({ ctrlKey: true, cmdKey: true, }) cy.findByRole('treeitem', { name: '1.tex', selected: false }) cy.findByRole('treeitem', { name: '2.tex', selected: true }) cy.findByRole('treeitem', { name: '3.tex', selected: true }) // meta-click on item 1: add to selection cy.findByRole('treeitem', { name: '1.tex' }).click({ ctrlKey: true, cmdKey: true, }) cy.findByRole('treeitem', { name: '1.tex', selected: true }) cy.findByRole('treeitem', { name: '2.tex', selected: true }) cy.findByRole('treeitem', { name: '3.tex', selected: true }) // meta-click on item 1: remove from selection cy.findByRole('treeitem', { name: '1.tex' }).click({ ctrlKey: true, cmdKey: true, }) cy.findByRole('treeitem', { name: '1.tex', selected: false }) cy.findByRole('treeitem', { name: '2.tex', selected: true }) cy.findByRole('treeitem', { name: '3.tex', selected: true }) // meta-click on item 3: remove from selection cy.findByRole('treeitem', { name: '3.tex' }).click({ ctrlKey: true, cmdKey: true, }) cy.findByRole('treeitem', { name: '1.tex', selected: false }) cy.findByRole('treeitem', { name: '2.tex', selected: true }) cy.findByRole('treeitem', { name: '3.tex', selected: false }) // meta-click on item 2: cannot unselect cy.findByRole('treeitem', { name: '2.tex' }).click({ ctrlKey: true, cmdKey: true, }) cy.findByRole('treeitem', { name: '1.tex', selected: false }) cy.findByRole('treeitem', { name: '2.tex', selected: true }) cy.findByRole('treeitem', { name: '3.tex', selected: false }) // meta-click on item 3: add back to selection cy.findByRole('treeitem', { name: '3.tex' }).click({ ctrlKey: true, cmdKey: true, }) cy.findByRole('treeitem', { name: '1.tex', selected: false }) cy.findByRole('treeitem', { name: '2.tex', selected: true }) cy.findByRole('treeitem', { name: '3.tex', selected: true }) // click on item 3: unselect other items cy.findByRole('treeitem', { name: '3.tex' }).click() cy.findByRole('treeitem', { name: '1.tex', selected: false }) cy.findByRole('treeitem', { name: '2.tex', selected: false }) cy.findByRole('treeitem', { name: '3.tex', selected: true }) }) }) })