file-tree-folder.spec.tsx 3.2 KB

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