From 3880e44305d527cc03610a78b0c887f41493f619 Mon Sep 17 00:00:00 2001 From: Zain Date: Wed, 5 Aug 2026 17:54:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(file-selector):=20=E5=B0=86=20.sup=20?= =?UTF-8?q?=E5=AD=97=E5=B9=95=E6=96=87=E4=BB=B6=E5=BD=92=E7=B1=BB=E4=B8=BA?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E7=B1=BB=E5=9E=8B=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 .sup 扩展名添加到视频文件类型识别列表中 - 新增单元测试验证 .sup 文件(包括大小写)被正确识别为视频文件 --- src/content/components/file-selector-panel.ts | 2 +- tests/unit/file-selector-panel-file-type.test.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 tests/unit/file-selector-panel-file-type.test.ts diff --git a/src/content/components/file-selector-panel.ts b/src/content/components/file-selector-panel.ts index d596437..eadc34c 100644 --- a/src/content/components/file-selector-panel.ts +++ b/src/content/components/file-selector-panel.ts @@ -405,7 +405,7 @@ export class FileSelectorPanel extends LitElement { private getFileType(ext: string): FileType { const lowerExt = ext.toLowerCase(); - const videoExts = ['.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv', '.webm', '.m4v']; + const videoExts = ['.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv', '.webm', '.m4v', '.sup']; const imageExts = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.webp', '.ico']; const audioExts = ['.mp3', '.wav', '.flac', '.aac', '.m4a', '.ogg', '.opus', '.wma']; const docExts = ['.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.txt', '.md']; diff --git a/tests/unit/file-selector-panel-file-type.test.ts b/tests/unit/file-selector-panel-file-type.test.ts new file mode 100644 index 0000000..add08e7 --- /dev/null +++ b/tests/unit/file-selector-panel-file-type.test.ts @@ -0,0 +1,16 @@ +import { describe, expect, it } from 'vitest'; +import { FileSelectorPanel } from '../../src/content/components/file-selector-panel'; +import type { FileType } from '../../src/types/file-selector'; + +type FileSelectorPanelTypeHarness = FileSelectorPanel & { + getFileType(ext: string): FileType; +}; + +describe('FileSelectorPanel file type classification', () => { + it('classifies .sup subtitle files with the video filter', () => { + const panel = new FileSelectorPanel() as unknown as FileSelectorPanelTypeHarness; + + expect(panel.getFileType('.sup')).toBe('video'); + expect(panel.getFileType('.SUP')).toBe('video'); + }); +});