import { fireEvent, render, screen } from '@testing-library/react'
import WelcomeMessageComponent from '../../../../../frontend/js/features/project-list/components/welcome-message'
import { expect } from 'chai'
import getMeta from '@/utils/meta'
import { SplitTestProvider } from '@/shared/context/split-test-context'
const WelcomeMessage = () => {
return (
)
}
describe('', function () {
beforeEach(function () {
window.metaAttributesCache.set('ol-splitTestVariants', {
'import-docx': 'enabled',
})
Object.assign(getMeta('ol-ExposedSettings'), {
isOverleaf: true,
wikiEnabled: true,
templatesEnabled: true,
enablePandocConversions: true,
})
})
it('renders welcome page correctly', function () {
render()
screen.getByText('Welcome to Overleaf')
screen.getByText('Create a new project')
screen.getByText('Learn LaTeX with a tutorial')
screen.getByText('Browse templates')
})
it('shows correct dropdown when clicking create a new project', function () {
render()
const button = screen.getByRole('button', {
name: 'Create a new project',
})
fireEvent.click(button)
screen.getByText('Blank project')
screen.getByText('Example project')
screen.getByText('Upload project')
screen.getByText('Import Word document')
screen.getByText('Import from GitHub')
})
it('does not show the import from Word document when the feature is disabled', function () {
getMeta('ol-ExposedSettings').enablePandocConversions = false
render()
const button = screen.getByRole('button', {
name: 'Create a new project',
})
fireEvent.click(button)
screen.getByText('Blank project')
expect(screen.queryByText('Import Word document')).to.not.exist
})
it('show the correct dropdown menu for affiliated users', function () {
window.metaAttributesCache.set('ol-portalTemplates', [
{
name: 'Affiliation 1',
url: '/edu/test-new-template',
},
])
render()
const button = screen.getByRole('button', {
name: 'Create a new project',
})
fireEvent.click(button)
// static menu
screen.getByText('Blank project')
screen.getByText('Example project')
screen.getByText('Upload project')
screen.getByText('Import from GitHub')
// static text for institution templates
screen.getByText('Institution Templates')
// dynamic menu based on portalTemplates
const affiliationTemplate = screen.getByRole('menuitem', {
name: 'Affiliation 1',
})
expect(affiliationTemplate.getAttribute('href')).to.equal(
'/edu/test-new-template#templates'
)
})
it('shows correct dropdown when clicking create a new project with a portal template', function () {
render()
const button = screen.getByRole('button', {
name: 'Create a new project',
})
fireEvent.click(button)
screen.getByText('Blank project')
screen.getByText('Example project')
screen.getByText('Upload project')
screen.getByText('Import from GitHub')
})
it('shows correct link for latex tutorial menu', function () {
render()
const link = screen.getByRole('link', {
name: 'Learn LaTeX with a tutorial',
})
expect(link.getAttribute('href')).to.equal(
'/learn/latex/Learn_LaTeX_in_30_minutes'
)
})
it('shows correct link for browse templates menu', function () {
render()
const link = screen.getByRole('link', {
name: 'Browse templates',
})
expect(link.getAttribute('href')).to.equal('/templates')
})
describe('when not in SaaS', function () {
beforeEach(function () {
getMeta('ol-ExposedSettings').isOverleaf = false
})
it('renders welcome page correctly', function () {
render()
screen.getByText('Welcome to Overleaf')
screen.getByText('Create a new project')
screen.getByText('Learn LaTeX with a tutorial')
screen.getByText('Browse templates')
})
it("doesn't display github in the dropdown when clicking create a new project", function () {
render()
const button = screen.getByRole('button', {
name: 'Create a new project',
})
fireEvent.click(button)
screen.getByText('Blank project')
screen.getByText('Example project')
screen.getByText('Upload project')
expect(screen.queryByText('Import from GitHub')).to.not.exist
})
it('does not render the tutorial link when the learn wiki is not configured', function () {
getMeta('ol-ExposedSettings').wikiEnabled = false
render()
expect(screen.queryByText('Learn LaTeX with a tutorial')).to.not.exist
})
it('does not render the templates link when templates are not configured', function () {
getMeta('ol-ExposedSettings').templatesEnabled = false
render()
expect(screen.queryByText('Browse templates')).to.not.exist
})
})
})