file-tree-doc.test.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { expect } from 'chai'
  2. import React from 'react'
  3. import { screen, fireEvent } from '@testing-library/react'
  4. import renderWithContext from '../helpers/render-with-context'
  5. import FileTreeDoc from '../../../../../frontend/js/features/file-tree/components/file-tree-doc'
  6. describe('<FileTreeDoc/>', function() {
  7. it('renders unselected', function() {
  8. const { container } = renderWithContext(
  9. <FileTreeDoc name="foo.tex" id="123abc" isLinkedFile={false} />
  10. )
  11. screen.getByRole('treeitem', { selected: false })
  12. expect(container.querySelector('i.linked-file-highlight')).to.not.exist
  13. })
  14. it('renders selected', function() {
  15. renderWithContext(
  16. <FileTreeDoc name="foo.tex" id="123abc" isLinkedFile={false} />,
  17. {
  18. contextProps: {
  19. rootFolder: [
  20. {
  21. docs: [{ _id: '123abc' }],
  22. fileRefs: [],
  23. folders: []
  24. }
  25. ]
  26. }
  27. }
  28. )
  29. const treeitem = screen.getByRole('treeitem', { selected: false })
  30. fireEvent.click(treeitem)
  31. screen.getByRole('treeitem', { selected: true })
  32. screen.getByRole('menuitem', { name: 'Rename' })
  33. screen.getByRole('menuitem', { name: 'Delete' })
  34. screen.getByRole('menuitem', { name: 'New File' })
  35. screen.getByRole('menuitem', { name: 'New Folder' })
  36. screen.getByRole('menuitem', { name: 'Upload' })
  37. })
  38. it('renders as linked file', function() {
  39. const { container } = renderWithContext(
  40. <FileTreeDoc name="foo.tex" id="123abc" isLinkedFile />
  41. )
  42. screen.getByRole('treeitem')
  43. expect(container.querySelector('i.linked-file-highlight')).to.exist
  44. })
  45. it('selects', function() {
  46. renderWithContext(<FileTreeDoc name="foo.tex" id="123abc" expanded />, {
  47. contextProps: {
  48. rootFolder: [
  49. {
  50. docs: [{ _id: '123abc' }],
  51. fileRefs: [],
  52. folders: []
  53. }
  54. ]
  55. }
  56. })
  57. const treeitem = screen.getByRole('treeitem', { selected: false })
  58. fireEvent.click(treeitem)
  59. screen.getByRole('treeitem', { selected: true })
  60. })
  61. it('multi-selects', function() {
  62. renderWithContext(<FileTreeDoc name="foo.tex" id="123abc" expanded />, {
  63. contextProps: {
  64. rootFolder: [
  65. {
  66. docs: [{ _id: '123abc' }],
  67. fileRefs: [],
  68. folders: []
  69. }
  70. ]
  71. }
  72. })
  73. const treeitem = screen.getByRole('treeitem')
  74. fireEvent.click(treeitem, { ctrlKey: true })
  75. screen.getByRole('treeitem', { selected: true })
  76. })
  77. })