context-menu.test.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { expect } from 'chai'
  2. import sinon from 'sinon'
  3. import { screen, fireEvent } from '@testing-library/react'
  4. import {
  5. renderWithEditorContext,
  6. cleanUpContext,
  7. } from '../../../helpers/render-with-context'
  8. import FileTreeRoot from '../../../../../frontend/js/features/file-tree/components/file-tree-root'
  9. describe('FileTree Context Menu Flow', function () {
  10. const onSelect = sinon.stub()
  11. const onInit = sinon.stub()
  12. afterEach(function () {
  13. onSelect.reset()
  14. onInit.reset()
  15. cleanUpContext()
  16. })
  17. it('opens on contextMenu event', async function () {
  18. const rootFolder = [
  19. {
  20. _id: 'root-folder-id',
  21. docs: [{ _id: '456def', name: 'main.tex' }],
  22. folders: [],
  23. fileRefs: [],
  24. },
  25. ]
  26. renderWithEditorContext(
  27. <FileTreeRoot
  28. rootFolder={rootFolder}
  29. projectId="123abc"
  30. hasWritePermissions
  31. userHasFeature={() => true}
  32. refProviders={{}}
  33. reindexReferences={() => null}
  34. setRefProviderEnabled={() => null}
  35. setStartedFreeTrial={() => null}
  36. rootDocId="456def"
  37. onSelect={onSelect}
  38. onInit={onInit}
  39. isConnected
  40. />
  41. )
  42. const treeitem = screen.getByRole('button', { name: 'main.tex' })
  43. expect(screen.queryByRole('menu')).to.be.null
  44. fireEvent.contextMenu(treeitem)
  45. screen.getByRole('menu')
  46. })
  47. it("doesn't open in read only mode", async function () {
  48. const rootFolder = [
  49. {
  50. _id: 'root-folder-id',
  51. docs: [{ _id: '456def', name: 'main.tex' }],
  52. folders: [],
  53. fileRefs: [],
  54. },
  55. ]
  56. renderWithEditorContext(
  57. <FileTreeRoot
  58. rootFolder={rootFolder}
  59. projectId="123abc"
  60. hasWritePermissions={false}
  61. userHasFeature={() => true}
  62. refProviders={{}}
  63. reindexReferences={() => null}
  64. setRefProviderEnabled={() => null}
  65. setStartedFreeTrial={() => null}
  66. rootDocId="456def"
  67. onSelect={onSelect}
  68. onInit={onInit}
  69. isConnected
  70. />
  71. )
  72. const treeitem = screen.getByRole('button', { name: 'main.tex' })
  73. fireEvent.contextMenu(treeitem)
  74. expect(screen.queryByRole('menu')).to.not.exist
  75. })
  76. })