context-menu.test.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. rootDocId="456def"
  24. onSelect={onSelect}
  25. onInit={onInit}
  26. />
  27. )
  28. const treeitem = screen.getByRole('button', { name: 'main.tex' })
  29. expect(screen.getAllByRole('menu').length).to.equal(1) // toolbar
  30. fireEvent.contextMenu(treeitem)
  31. expect(screen.getAllByRole('menu').length).to.equal(2) // toolbar + menu
  32. })
  33. it("doesn't open in read only mode", async function() {
  34. const rootFolder = [
  35. {
  36. _id: 'root-folder-id',
  37. docs: [{ _id: '456def', name: 'main.tex' }],
  38. folders: [],
  39. fileRefs: []
  40. }
  41. ]
  42. render(
  43. <FileTreeRoot
  44. rootFolder={rootFolder}
  45. projectId="123abc"
  46. hasWritePermissions={false}
  47. rootDocId="456def"
  48. onSelect={onSelect}
  49. onInit={onInit}
  50. />
  51. )
  52. const treeitem = screen.getByRole('button', { name: 'main.tex' })
  53. fireEvent.contextMenu(treeitem)
  54. expect(screen.queryByRole('menu')).to.not.exist
  55. })
  56. })