file-tree-doc.test.js 2.4 KB

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