|
| 1 | +import { describe, expect, it } from 'vitest' |
| 2 | +import { getFileIcon } from '../../../../app/utils/file-icons' |
| 3 | + |
| 4 | +describe('getFileIcon', () => { |
| 5 | + it('returns correct icons for exact filename matches', () => { |
| 6 | + expect(getFileIcon('package.json')).toBe('i-vscode-icons-file-type-npm') |
| 7 | + expect(getFileIcon('Dockerfile')).toBe('i-vscode-icons-file-type-docker') |
| 8 | + expect(getFileIcon('.gitignore')).toBe('i-vscode-icons-file-type-git') |
| 9 | + expect(getFileIcon('eslint.config.js')).toBe('i-vscode-icons-file-type-eslint') |
| 10 | + expect(getFileIcon('vitest.config.ts')).toBe('i-vscode-icons-file-type-vitest') |
| 11 | + expect(getFileIcon('.env')).toBe('i-vscode-icons-file-type-dotenv') |
| 12 | + }) |
| 13 | + |
| 14 | + it('returns correct icons for compound extensions', () => { |
| 15 | + expect(getFileIcon('types.d.ts')).toBe('i-vscode-icons-file-type-typescriptdef') |
| 16 | + expect(getFileIcon('utils.test.ts')).toBe('i-vscode-icons-file-type-testts') |
| 17 | + expect(getFileIcon('utils.spec.js')).toBe('i-vscode-icons-file-type-testjs') |
| 18 | + expect(getFileIcon('Button.stories.tsx')).toBe('i-vscode-icons-file-type-storybook') |
| 19 | + }) |
| 20 | + |
| 21 | + it('returns correct icons for simple extensions', () => { |
| 22 | + expect(getFileIcon('index.js')).toBe('i-vscode-icons-file-type-js-official') |
| 23 | + expect(getFileIcon('main.ts')).toBe('i-vscode-icons-file-type-typescript-official') |
| 24 | + expect(getFileIcon('App.vue')).toBe('i-vscode-icons-file-type-vue') |
| 25 | + expect(getFileIcon('data.json')).toBe('i-vscode-icons-file-type-json') |
| 26 | + expect(getFileIcon('build.sh')).toBe('i-vscode-icons-file-type-shell') |
| 27 | + expect(getFileIcon('script.py')).toBe('i-vscode-icons-file-type-python') |
| 28 | + expect(getFileIcon('lib.rs')).toBe('i-vscode-icons-file-type-rust') |
| 29 | + expect(getFileIcon('logo.png')).toBe('i-vscode-icons-file-type-image') |
| 30 | + expect(getFileIcon('archive.tar')).toBe('i-vscode-icons-file-type-zip') |
| 31 | + }) |
| 32 | + |
| 33 | + it('returns default icon for unknown files', () => { |
| 34 | + expect(getFileIcon('file.xyz')).toBe('i-vscode-icons-default-file') |
| 35 | + expect(getFileIcon('unknownfile')).toBe('i-vscode-icons-default-file') |
| 36 | + }) |
| 37 | + |
| 38 | + it('prefers exact filename over extension, and compound over simple', () => { |
| 39 | + expect(getFileIcon('package.json')).toBe('i-vscode-icons-file-type-npm') |
| 40 | + expect(getFileIcon('foo.test.ts')).toBe('i-vscode-icons-file-type-testts') |
| 41 | + }) |
| 42 | +}) |
0 commit comments