file-tree-folder.test.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. const treeitem = screen.getByRole('treeitem', { selected: false })
  34. fireEvent.click(treeitem)
  35. screen.getByRole('treeitem', { selected: true })
  36. screen.getByRole('menuitem', { name: 'Rename' })
  37. screen.getByRole('menuitem', { name: 'Delete' })
  38. screen.getByRole('menuitem', { name: 'New File' })
  39. screen.getByRole('menuitem', { name: 'New Folder' })
  40. screen.getByRole('menuitem', { name: 'Upload' })
  41. screen.getByRole('treeitem', { selected: true })
  42. expect(screen.queryByRole('tree')).to.not.exist
  43. })
  44. it('expands', function() {
  45. renderWithContext(
  46. <FileTreeFolder
  47. name="foo"
  48. id="123abc"
  49. folders={[]}
  50. docs={[]}
  51. files={[]}
  52. />
  53. )
  54. screen.getByRole('treeitem')
  55. const expandButton = screen.getByRole('button', { name: 'Expand' })
  56. fireEvent.click(expandButton)
  57. screen.getByRole('tree')
  58. })
  59. it('saves the expanded state for the next render', function() {
  60. const { unmount } = renderWithContext(
  61. <FileTreeFolder
  62. name="foo"
  63. id="123abc"
  64. folders={[]}
  65. docs={[]}
  66. files={[]}
  67. />
  68. )
  69. expect(screen.queryByRole('tree')).to.not.exist
  70. const expandButton = screen.getByRole('button', { name: 'Expand' })
  71. fireEvent.click(expandButton)
  72. screen.getByRole('tree')
  73. unmount()
  74. renderWithContext(
  75. <FileTreeFolder
  76. name="foo"
  77. id="123abc"
  78. folders={[]}
  79. docs={[]}
  80. files={[]}
  81. />
  82. )
  83. screen.getByRole('tree')
  84. })
  85. })