file-tree-folder.test.js 3.0 KB

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