file-tree-folder.test.js 2.7 KB

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