49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { isImageExt } from '../src/client/image-types.ts'
|
|
import { extOf, languageKeyForExt } from '../src/client/lang.ts'
|
|
import { isPdfExt } from '../src/client/pdf-types.ts'
|
|
|
|
describe('editor language mapping', () => {
|
|
it('derives extensions from paths', () => {
|
|
expect(extOf('/a/b/main.tsx')).toBe('tsx')
|
|
expect(extOf('README.MD')).toBe('md')
|
|
expect(extOf('/a/b/.gitignore')).toBe('gitignore')
|
|
expect(extOf('noext')).toBe('')
|
|
})
|
|
|
|
it('maps common extensions to languages and falls back to plain text', () => {
|
|
expect(languageKeyForExt('tsx')).toBe('tsx')
|
|
expect(languageKeyForExt('js')).toBe('js')
|
|
expect(languageKeyForExt('py')).toBe('python')
|
|
expect(languageKeyForExt('yaml')).toBe('yaml')
|
|
expect(languageKeyForExt('sh')).toBe('shell')
|
|
expect(languageKeyForExt('md')).toBe('md')
|
|
expect(languageKeyForExt('cs')).toBe('csharp')
|
|
expect(languageKeyForExt('kt')).toBe('kotlin')
|
|
expect(languageKeyForExt('swift')).toBe('swift')
|
|
expect(languageKeyForExt('txt')).toBeNull()
|
|
expect(languageKeyForExt('log')).toBeNull()
|
|
expect(languageKeyForExt('')).toBeNull()
|
|
})
|
|
})
|
|
|
|
describe('pdf preview kind', () => {
|
|
it('routes only .pdf to the browser-native preview', () => {
|
|
expect(isPdfExt('.pdf')).toBe(true)
|
|
expect(isPdfExt('.PDF')).toBe(false)
|
|
expect(isPdfExt('.docx')).toBe(false)
|
|
expect(isPdfExt('')).toBe(false)
|
|
})
|
|
})
|
|
|
|
describe('image preview kind', () => {
|
|
it('routes supported image extensions before binary probing', () => {
|
|
expect(isImageExt('.png')).toBe(true)
|
|
expect(isImageExt('.jpg')).toBe(true)
|
|
expect(isImageExt('.svg')).toBe(true)
|
|
expect(isImageExt('.avif')).toBe(true)
|
|
expect(isImageExt('.pdf')).toBe(false)
|
|
expect(isImageExt('')).toBe(false)
|
|
})
|
|
})
|