context-menu.test.js 2.2 KB

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