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 })
})
})
})