@@ -10,35 +10,37 @@ afterEach(() => {
1010 vi . restoreAllMocks ( ) ;
1111} ) ;
1212
13- it ( 'shows empty state when no files' , ( ) => {
14- render ( < FileList files = { [ ] } onFileRemove = { vi . fn ( ) } onFileToggle = { vi . fn ( ) } onFileConfig = { vi . fn ( ) } /> ) ;
15- expect ( screen . getByText ( '📂 暂无文件' ) ) . toBeInTheDocument ( ) ;
16- } ) ;
17-
18- it ( 'renders file and triggers actions' , async ( ) => {
19- const user = userEvent . setup ( ) ;
20- const file = { id : '1' , name : 'test.log' , enabled : true } ;
21- const onFileRemove = vi . fn ( ) ;
22- const onFileToggle = vi . fn ( ) ;
23- const onFileConfig = vi . fn ( ) ;
24- render ( < FileList files = { [ file ] } onFileRemove = { onFileRemove } onFileToggle = { onFileToggle } onFileConfig = { onFileConfig } /> ) ;
25-
26- const checkbox = screen . getByRole ( 'checkbox' ) ;
27- await user . click ( checkbox ) ;
28- expect ( onFileToggle ) . toHaveBeenCalledWith ( 0 , false ) ;
29-
30- const configButton = screen . getByRole ( 'button' , { name : `配置文件 ${ file . name } ` } ) ;
31- await user . click ( configButton ) ;
32- expect ( onFileConfig ) . toHaveBeenCalledWith ( file ) ;
33-
34- const removeButton = screen . getByRole ( 'button' , { name : `删除文件 ${ file . name } ` } ) ;
35- await user . click ( removeButton ) ;
36- expect ( onFileRemove ) . toHaveBeenCalledWith ( 0 ) ;
37- } ) ;
38-
39- it ( 'disables config when file disabled' , ( ) => {
40- const file = { id : '2' , name : 'off.log' , enabled : false } ;
41- render ( < FileList files = { [ file ] } onFileRemove = { vi . fn ( ) } onFileToggle = { vi . fn ( ) } onFileConfig = { vi . fn ( ) } /> ) ;
42- const configButton = screen . getByRole ( 'button' , { name : `配置文件 ${ file . name } ` } ) ;
43- expect ( configButton ) . toBeDisabled ( ) ;
13+ describe ( 'FileList' , ( ) => {
14+ it ( 'shows empty state when no files' , ( ) => {
15+ render ( < FileList files = { [ ] } onFileRemove = { vi . fn ( ) } onFileToggle = { vi . fn ( ) } onFileConfig = { vi . fn ( ) } /> ) ;
16+ expect ( screen . getByText ( '📂 暂无文件' ) ) . toBeInTheDocument ( ) ;
17+ } ) ;
18+
19+ it ( 'renders file and triggers actions' , async ( ) => {
20+ const user = userEvent . setup ( ) ;
21+ const file = { id : '1' , name : 'test.log' , enabled : true } ;
22+ const onFileRemove = vi . fn ( ) ;
23+ const onFileToggle = vi . fn ( ) ;
24+ const onFileConfig = vi . fn ( ) ;
25+ render ( < FileList files = { [ file ] } onFileRemove = { onFileRemove } onFileToggle = { onFileToggle } onFileConfig = { onFileConfig } /> ) ;
26+
27+ const checkbox = screen . getByRole ( 'checkbox' ) ;
28+ await user . click ( checkbox ) ;
29+ expect ( onFileToggle ) . toHaveBeenCalledWith ( 0 , false ) ;
30+
31+ const configButton = screen . getByRole ( 'button' , { name : `配置文件 ${ file . name } ` } ) ;
32+ await user . click ( configButton ) ;
33+ expect ( onFileConfig ) . toHaveBeenCalledWith ( file ) ;
34+
35+ const removeButton = screen . getByRole ( 'button' , { name : `删除文件 ${ file . name } ` } ) ;
36+ await user . click ( removeButton ) ;
37+ expect ( onFileRemove ) . toHaveBeenCalledWith ( 0 ) ;
38+ } ) ;
39+
40+ it ( 'disables config when file disabled' , ( ) => {
41+ const file = { id : '2' , name : 'off.log' , enabled : false } ;
42+ render ( < FileList files = { [ file ] } onFileRemove = { vi . fn ( ) } onFileToggle = { vi . fn ( ) } onFileConfig = { vi . fn ( ) } /> ) ;
43+ const configButton = screen . getByRole ( 'button' , { name : `配置文件 ${ file . name } ` } ) ;
44+ expect ( configButton ) . toBeDisabled ( ) ;
45+ } ) ;
4446} ) ;
0 commit comments