file-tree-folder.test.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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. docs: [{ _id: '123abc' }],
  36. fileRefs: [],
  37. folders: [],
  38. },
  39. ],
  40. },
  41. }
  42. )
  43. const treeitem = screen.getByRole('treeitem', { selected: false })
  44. fireEvent.click(treeitem)
  45. screen.getByRole('treeitem', { selected: true })
  46. expect(screen.queryByRole('tree')).to.not.exist
  47. })
  48. it('expands', function () {
  49. renderWithContext(
  50. <FileTreeFolder
  51. name="foo"
  52. id="123abc"
  53. folders={[]}
  54. docs={[]}
  55. files={[]}
  56. />,
  57. {
  58. contextProps: {
  59. rootFolder: [
  60. {
  61. docs: [{ _id: '123abc' }],
  62. fileRefs: [],
  63. folders: [],
  64. },
  65. ],
  66. },
  67. }
  68. )
  69. screen.getByRole('treeitem')
  70. const expandButton = screen.getByRole('button', { name: 'Expand' })
  71. fireEvent.click(expandButton)
  72. screen.getByRole('tree')
  73. })
  74. it('saves the expanded state for the next render', function () {
  75. const { unmount } = renderWithContext(
  76. <FileTreeFolder
  77. name="foo"
  78. id="123abc"
  79. folders={[]}
  80. docs={[]}
  81. files={[]}
  82. />,
  83. {
  84. contextProps: {
  85. rootFolder: [
  86. {
  87. docs: [{ _id: '123abc' }],
  88. fileRefs: [],
  89. folders: [],
  90. },
  91. ],
  92. },
  93. }
  94. )
  95. expect(screen.queryByRole('tree')).to.not.exist
  96. const expandButton = screen.getByRole('button', { name: 'Expand' })
  97. fireEvent.click(expandButton)
  98. screen.getByRole('tree')
  99. unmount()
  100. renderWithContext(
  101. <FileTreeFolder
  102. name="foo"
  103. id="123abc"
  104. folders={[]}
  105. docs={[]}
  106. files={[]}
  107. />
  108. )
  109. screen.getByRole('tree')
  110. })
  111. })