file-tree-doc.test.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. })
  33. it('renders as linked file', function () {
  34. const { container } = renderWithContext(
  35. <FileTreeDoc name="foo.tex" id="123abc" isLinkedFile />
  36. )
  37. screen.getByRole('treeitem')
  38. expect(container.querySelector('i.linked-file-highlight')).to.exist
  39. })
  40. it('selects', function () {
  41. renderWithContext(<FileTreeDoc name="foo.tex" id="123abc" expanded />, {
  42. contextProps: {
  43. rootFolder: [
  44. {
  45. docs: [{ _id: '123abc' }],
  46. fileRefs: [],
  47. folders: [],
  48. },
  49. ],
  50. },
  51. })
  52. const treeitem = screen.getByRole('treeitem', { selected: false })
  53. fireEvent.click(treeitem)
  54. screen.getByRole('treeitem', { selected: true })
  55. })
  56. it('multi-selects', function () {
  57. renderWithContext(<FileTreeDoc name="foo.tex" id="123abc" expanded />, {
  58. contextProps: {
  59. rootFolder: [
  60. {
  61. docs: [{ _id: '123abc' }],
  62. fileRefs: [],
  63. folders: [],
  64. },
  65. ],
  66. },
  67. })
  68. const treeitem = screen.getByRole('treeitem')
  69. fireEvent.click(treeitem, { ctrlKey: true })
  70. screen.getByRole('treeitem', { selected: true })
  71. })
  72. })