Skip to content

Commit 1f9a9f5

Browse files
authored
test: add tests for file-icons utils (#891)
1 parent c4755ed commit 1f9a9f5

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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

Comments
 (0)