context-menu.test.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. name: 'rootFolder',
  22. docs: [{ _id: '456def', name: 'main.tex' }],
  23. folders: [],
  24. fileRefs: [],
  25. },
  26. ]
  27. renderWithEditorContext(
  28. <FileTreeRoot
  29. refProviders={{}}
  30. reindexReferences={() => null}
  31. setRefProviderEnabled={() => null}
  32. setStartedFreeTrial={() => null}
  33. onSelect={onSelect}
  34. onInit={onInit}
  35. isConnected
  36. />,
  37. {
  38. rootFolder,
  39. projectId: '123abc',
  40. rootDocId: '456def',
  41. }
  42. )
  43. const treeitem = screen.getByRole('button', { name: 'main.tex' })
  44. expect(screen.queryByRole('menu')).to.be.null
  45. fireEvent.contextMenu(treeitem)
  46. screen.getByRole('menu')
  47. })
  48. it("doesn't open in read only mode", async function () {
  49. const rootFolder = [
  50. {
  51. _id: 'root-folder-id',
  52. name: 'rootFolder',
  53. docs: [{ _id: '456def', name: 'main.tex' }],
  54. folders: [],
  55. fileRefs: [],
  56. },
  57. ]
  58. renderWithEditorContext(
  59. <FileTreeRoot
  60. refProviders={{}}
  61. reindexReferences={() => null}
  62. setRefProviderEnabled={() => null}
  63. setStartedFreeTrial={() => null}
  64. onSelect={onSelect}
  65. onInit={onInit}
  66. isConnected
  67. />,
  68. {
  69. rootFolder,
  70. projectId: '123abc',
  71. rootDocId: '456def',
  72. permissionsLevel: 'readOnly',
  73. }
  74. )
  75. const treeitem = screen.getByRole('button', { name: 'main.tex' })
  76. fireEvent.contextMenu(treeitem)
  77. expect(screen.queryByRole('menu')).to.not.exist
  78. })
  79. })