Prepare IDE beta 6 with Turkish native dialogs and map errors
This commit is contained in:
1 parent
7724d65e92
commit
75afd01b4b
15 files changed
+265
-57
No files matched your search
@@ -1,6 +1,10 @@
|
||||
import { cleanup, fireEvent, render, screen, within } from '@testing-library/react'
|
||||
import { afterEach, describe, expect, it } from 'vitest'
|
||||
|
||||
import { I18nProvider } from '@/i18n/context'
|
||||
import { TR_SURFACES } from '@/i18n/tr-surfaces'
|
||||
|
||||
import { decodeShareCode, shareCodeErrorText } from './share-code'
|
||||
import { ShareControls } from './share-controls'
|
||||
|
||||
describe('ShareControls', () => {
|
||||
@@ -8,17 +12,35 @@ describe('ShareControls', () => {
|
||||
cleanup()
|
||||
})
|
||||
|
||||
it('opens its dialog when the trigger has a tooltip', async () => {
|
||||
render(<ShareControls shareCode="map-code" />)
|
||||
it.each([
|
||||
['en', 'Import / export map'],
|
||||
['tr', 'Haritayı içe / dışa aktar']
|
||||
])('opens its dialog with a tooltip in %s', async (locale, title) => {
|
||||
render(<I18nProvider configClient={null} initialLocale={locale}><ShareControls shareCode="map-code" /></I18nProvider>)
|
||||
|
||||
const trigger = screen.getByRole('button', { name: 'Import / export map' })
|
||||
const trigger = screen.getByRole('button', { name: title })
|
||||
|
||||
fireEvent.pointerMove(trigger, { pointerType: 'mouse' })
|
||||
expect((await screen.findByRole('tooltip')).textContent).toContain('Import / export map')
|
||||
expect((await screen.findByRole('tooltip')).textContent).toContain(title)
|
||||
|
||||
fireEvent.click(trigger)
|
||||
|
||||
const dialog = await screen.findByRole('dialog')
|
||||
expect(within(dialog).getByRole('heading', { name: 'Import / export map' })).toBeTruthy()
|
||||
expect(within(dialog).getByRole('heading', { name: title })).toBeTruthy()
|
||||
})
|
||||
|
||||
it('keeps an invalid pasted code editable and displays the Turkish decoder error', async () => {
|
||||
render(<I18nProvider configClient={null} initialLocale="tr"><ShareControls onImport={code => {
|
||||
try { decodeShareCode(code);
|
||||
|
||||
return null } catch (error) { return shareCodeErrorText(error, TR_SURFACES.mapErrors) }
|
||||
}} /></I18nProvider>)
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Haritayı içe / dışa aktar' }))
|
||||
const dialog = await screen.findByRole('dialog')
|
||||
const input = within(dialog).getByRole('textbox')
|
||||
fireEvent.change(input, { target: { value: 'not a valid code !!!' } })
|
||||
fireEvent.click(within(dialog).getByRole('button', { name: 'Yükle', exact: true }))
|
||||
expect(within(dialog).getByText('Bu metin bir harita koduna benzemiyor.')).toBeTruthy()
|
||||
expect((input as HTMLTextAreaElement).value).toBe('not a valid code !!!')
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user