context-menu.test.js 2.3 KB

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