context-menu.test.js 2.0 KB

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