file-tree-folder.test.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import { expect } from 'chai'
  2. import { screen, fireEvent } from '@testing-library/react'
  3. import renderWithContext from '../helpers/render-with-context'
  4. import FileTreeFolder from '../../../../../frontend/js/features/file-tree/components/file-tree-folder'
  5. describe('<FileTreeFolder/>', function () {
  6. beforeEach(function () {
  7. global.localStorage.clear()
  8. })
  9. it('renders unselected', function () {
  10. renderWithContext(
  11. <FileTreeFolder
  12. name="foo"
  13. id="123abc"
  14. folders={[]}
  15. docs={[]}
  16. files={[]}
  17. />
  18. )
  19. screen.getByRole('treeitem', { selected: false })
  20. expect(screen.queryByRole('tree')).to.not.exist
  21. })
  22. it('renders selected', function () {
  23. renderWithContext(
  24. <FileTreeFolder
  25. name="foo"
  26. id="123abc"
  27. folders={[]}
  28. docs={[]}
  29. files={[]}
  30. />,
  31. {
  32. contextProps: {
  33. rootFolder: [
  34. {
  35. _id: 'root-folder-id',
  36. name: 'rootFolder',
  37. docs: [{ _id: '123abc' }],
  38. fileRefs: [],
  39. folders: [],
  40. },
  41. ],
  42. },
  43. }
  44. )
  45. const treeitem = screen.getByRole('treeitem', { selected: false })
  46. fireEvent.click(treeitem)
  47. screen.getByRole('treeitem', { selected: true })
  48. expect(screen.queryByRole('tree')).to.not.exist
  49. })
  50. it('expands', function () {
  51. renderWithContext(
  52. <FileTreeFolder
  53. name="foo"
  54. id="123abc"
  55. folders={[]}
  56. docs={[]}
  57. files={[]}
  58. />,
  59. {
  60. contextProps: {
  61. rootFolder: [
  62. {
  63. _id: 'root-folder-id',
  64. name: 'rootFolder',
  65. docs: [{ _id: '123abc' }],
  66. fileRefs: [],
  67. folders: [],
  68. },
  69. ],
  70. },
  71. }
  72. )
  73. screen.getByRole('treeitem')
  74. const expandButton = screen.getByRole('button', { name: 'Expand' })
  75. fireEvent.click(expandButton)
  76. screen.getByRole('tree')
  77. })
  78. it('saves the expanded state for the next render', function () {
  79. const { unmount } = renderWithContext(
  80. <FileTreeFolder
  81. name="foo"
  82. id="123abc"
  83. folders={[]}
  84. docs={[]}
  85. files={[]}
  86. />,
  87. {
  88. contextProps: {
  89. rootFolder: [
  90. {
  91. _id: 'root-folder-id',
  92. name: 'rootFolder',
  93. docs: [{ _id: '123abc' }],
  94. fileRefs: [],
  95. folders: [],
  96. },
  97. ],
  98. },
  99. }
  100. )
  101. expect(screen.queryByRole('tree')).to.not.exist
  102. const expandButton = screen.getByRole('button', { name: 'Expand' })
  103. fireEvent.click(expandButton)
  104. screen.getByRole('tree')
  105. unmount()
  106. renderWithContext(
  107. <FileTreeFolder
  108. name="foo"
  109. id="123abc"
  110. folders={[]}
  111. docs={[]}
  112. files={[]}
  113. />
  114. )
  115. screen.getByRole('tree')
  116. })
  117. })