pengzhanbo 4464703b7b
test: add unit test (#262)
* test: add unit test

* chore: tweak

* chore: tweak
2024-10-12 02:09:15 +08:00

49 lines
2.3 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { getFileIcon } from '../src/node/fileIcons/index.js'
describe('getFileIcon(filename, type)', () => {
it('should find icon with default', () => {
expect(getFileIcon('a.js')).toBe('vscode-icons:file-type-js')
expect(getFileIcon('a.cjs')).toBe('vscode-icons:file-type-js')
expect(getFileIcon('a.mjs')).toBe('vscode-icons:file-type-js')
expect(getFileIcon('a.jsx')).toBe('vscode-icons:file-type-reactjs')
expect(getFileIcon('a.ts')).toBe('vscode-icons:file-type-typescript')
expect(getFileIcon('a.d.ts')).toBe('vscode-icons:file-type-typescript')
expect(getFileIcon('a.cjs.map')).toBe('vscode-icons:file-type-jsmap')
expect(getFileIcon('a.mjs.map')).toBe('vscode-icons:file-type-jsmap')
expect(getFileIcon('vue')).toBe('vscode-icons:file-type-vue')
expect(getFileIcon('Svelte')).toBe('vscode-icons:file-type-svelte')
})
it('should find icon with folder', () => {
expect(getFileIcon('xxx', 'folder')).toBe('vscode-icons:default-folder')
expect(getFileIcon('src', 'folder')).toBe('vscode-icons:folder-type-src')
expect(getFileIcon('src/client', 'folder')).toBe('vscode-icons:folder-type-client')
})
it('should find icon with named file', () => {
expect(getFileIcon('webpack.config.js')).toBe('vscode-icons:file-type-webpack')
expect(getFileIcon('vite.config.mjs')).toBe('vscode-icons:file-type-vite')
expect(getFileIcon('test/vitest.config.js')).toBe('vscode-icons:file-type-js')
})
it('should find icon with extensions', () => {
expect(getFileIcon('a.cpp')).toBe('vscode-icons:file-type-cpp')
expect(getFileIcon('a.spec.mjs')).toBe('vscode-icons:file-type-light-testjs')
})
it('should find icon with partials', () => {
expect(getFileIcon('LICENSE')).toBe('vscode-icons:file-type-license')
expect(getFileIcon('Gemfile')).toBe('vscode-icons:file-type-ruby')
})
it('should return default icon when not find', () => {
expect(getFileIcon('a.abcxxx')).toBe('vscode-icons:default-file')
expect(getFileIcon('a.abcxxx.tbnmmb.z')).toBe('vscode-icons:default-file')
expect(getFileIcon('abc.', 'file')).toBe('vscode-icons:default-file')
expect(getFileIcon('abc.', 'folder')).toBe('vscode-icons:default-folder')
expect(getFileIcon('')).toBe('vscode-icons:default-file')
})
})