| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import { screen, waitFor } from '@testing-library/react'
- import { expect } from 'chai'
- import fetchMock from 'fetch-mock'
- import ActionsMenu from '../../../../../frontend/js/features/editor-left-menu/components/actions-menu'
- import { renderWithEditorContext } from '../../../helpers/render-with-context'
- describe('<ActionsMenu />', function () {
- beforeEach(function () {
- fetchMock.post('express:/project/:projectId/compile', {
- status: 'success',
- pdfDownloadDomain: 'https://clsi.test-overleaf.com',
- outputFiles: [
- {
- path: 'output.pdf',
- build: 'build-123',
- url: '/build/build-123/output.pdf',
- type: 'pdf',
- },
- ],
- })
- })
- afterEach(function () {
- fetchMock.removeRoutes().clearHistory()
- })
- it('shows correct menu for non-anonymous users', async function () {
- window.metaAttributesCache.set('ol-anonymous', false)
- renderWithEditorContext(<ActionsMenu />, {
- projectId: '123abc',
- mockCompileOnLoad: true,
- scope: {
- editor: {
- sharejs_doc: {
- doc_id: 'test-doc',
- getSnapshot: () => 'some doc content',
- },
- },
- },
- })
- screen.getByText('Actions')
- screen.getByRole('button', {
- name: 'Copy project',
- })
- await waitFor(() => {
- screen.getByRole('button', {
- name: 'Word Count',
- })
- })
- })
- it('does not show anything for anonymous users', async function () {
- window.metaAttributesCache.set('ol-anonymous', true)
- renderWithEditorContext(<ActionsMenu />, {
- projectId: '123abc',
- mockCompileOnLoad: true,
- scope: {
- editor: {
- sharejs_doc: {
- doc_id: 'test-doc',
- getSnapshot: () => 'some doc content',
- },
- },
- },
- })
- expect(screen.queryByText('Actions')).to.equal(null)
- expect(
- screen.queryByRole('button', {
- name: 'Copy project',
- })
- ).to.equal(null)
- await waitFor(() => {
- expect(
- screen.queryByRole('button', {
- name: 'Word Count',
- })
- ).to.equal(null)
- })
- })
- })
|