11import * as assert from 'assert' ;
22import { fileActions } from '@/file_operations' ;
33import { readFileActions } from '@/read_files' ;
4- import type { RCEContext } from '@/context/rce ' ;
4+ import { fakeContext } from '@test/test_utils ' ;
55
66// Tests for file action prompt generators using real logic with loose checks
77suite ( 'file Actions' , ( ) => {
88 test ( 'get_workspace_files has a non-empty prompt' , ( ) => {
9+ assert . ok ( fileActions . list_files_and_folders . promptGenerator && typeof fileActions . list_files_and_folders . promptGenerator !== 'string' ) ;
910 // === Arrange & Act ===
10- const prompt = fileActions . list_files_and_folders . promptGenerator ( { data : { params : { } } } as RCEContext ) ;
11+ const prompt = fileActions . list_files_and_folders . promptGenerator ( fakeContext ( 'list_files_and_folders' , { } ) ) ;
1112
1213 // === Assert ===
1314 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
1415 } ) ;
1516
1617 test ( 'get_workspace_files correctly includes the folder in prompt' , ( ) => {
18+ assert . ok ( fileActions . list_files_and_folders . promptGenerator && typeof fileActions . list_files_and_folders . promptGenerator !== 'string' ) ;
1719 // === Arrange & Act ===
18- const prompt = fileActions . list_files_and_folders . promptGenerator ( { data : { params : { folder : 'src/' } } } as RCEContext ) ;
20+ const prompt = fileActions . list_files_and_folders . promptGenerator ( fakeContext ( 'list_files_and_folders' , { folder : 'src/' } ) ) ;
1921
2022 // === Assert ===
2123 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
2224 assert . ok ( prompt . includes ( 'src' ) ) ;
2325 } ) ;
2426
2527 test ( 'get_workspace_files correctly states if Neuro asked for recursive' , ( ) => {
28+ assert . ok ( fileActions . list_files_and_folders . promptGenerator && typeof fileActions . list_files_and_folders . promptGenerator !== 'string' ) ;
2629 // === Arrange & Act ===
27- const prompt = fileActions . list_files_and_folders . promptGenerator ( { data : { params : { recursive : true } } } as RCEContext ) ;
30+ const prompt = fileActions . list_files_and_folders . promptGenerator ( fakeContext ( 'list_files_and_folders' , { recursive : true } ) ) ;
2831
2932 // === Assert ===
3033 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
3134 assert . ok ( prompt . toLowerCase ( ) . includes ( 'recursively' ) ) ;
3235 } ) ;
3336
3437 test ( 'get_workspace_files correctly omits recursive if Neuro didn\'t ask' , ( ) => {
38+ assert . ok ( fileActions . list_files_and_folders . promptGenerator && typeof fileActions . list_files_and_folders . promptGenerator !== 'string' ) ;
3539 // === Arrange & Act ===
36- const prompt = fileActions . list_files_and_folders . promptGenerator ( { data : { params : { recursive : false } } } as RCEContext ) ;
40+ const prompt = fileActions . list_files_and_folders . promptGenerator ( fakeContext ( 'list_files_and_folders' , { recursive : false } ) ) ;
3741
3842 // === Assert ===
3943 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
4044 assert . ok ( ! prompt . includes ( 'recursively' ) ) ;
4145 } ) ;
4246
4347 test ( 'open_file prompt formats path' , ( ) => {
48+ assert . ok ( readFileActions . switch_files . promptGenerator && typeof readFileActions . switch_files . promptGenerator !== 'string' ) ;
4449 // === Arrange & Act ===
45- const prompt = readFileActions . switch_files . promptGenerator ( { data : { params : { filePath : 'src/index.ts' } } } as RCEContext ) ;
50+ const prompt = readFileActions . switch_files . promptGenerator ( fakeContext ( 'switch_files' , { filePath : 'src/index.ts' } ) ) ;
4651
4752 // === Assert ===
4853 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
4954 assert . ok ( prompt . includes ( 'src/index.ts' ) ) ;
5055 } ) ;
5156
5257 test ( 'read_file prompt formats path' , ( ) => {
58+ assert . ok ( readFileActions . read_file . promptGenerator && typeof readFileActions . read_file . promptGenerator !== 'string' ) ;
5359 // === Arrange & Act ===
54- const prompt = readFileActions . read_file . promptGenerator ( { data : { params : { filePath : 'README.md' } } } as RCEContext ) ;
60+ const prompt = readFileActions . read_file . promptGenerator ( fakeContext ( 'read_files' , { filePath : 'README.md' } ) ) ;
5561
5662 // === Assert ===
5763 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
5864 assert . ok ( prompt . includes ( 'README.md' ) ) ;
5965 } ) ;
6066
6167 test ( 'create_file prompt formats path' , ( ) => {
68+ assert . ok ( fileActions . create_file . promptGenerator && typeof fileActions . create_file . promptGenerator !== 'string' ) ;
6269 // === Arrange & Act ===
63- const prompt = fileActions . create_file . promptGenerator ( { data : { params : { filePath : 'new/file.txt' } } } as RCEContext ) ;
70+ const prompt = fileActions . create_file . promptGenerator ( fakeContext ( 'create_file' , { filePath : 'new/file.txt' } ) ) ;
6471
6572 // === Assert ===
6673 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
6774 assert . ok ( prompt . includes ( 'new/file.txt' ) ) ;
6875 } ) ;
6976
7077 test ( 'create_folder prompt formats path' , ( ) => {
78+ assert . ok ( fileActions . create_folder . promptGenerator && typeof fileActions . create_folder . promptGenerator !== 'string' ) ;
7179 // === Arrange & Act ===
72- const prompt = fileActions . create_folder . promptGenerator ( { data : { params : { folderPath : 'new/folder' } } } as RCEContext ) ;
80+ const prompt = fileActions . create_folder . promptGenerator ( fakeContext ( 'create_folder' , { folderPath : 'new/folder' } ) ) ;
7381
7482 // === Assert ===
7583 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
7684 assert . ok ( prompt . includes ( 'new/folder' ) ) ;
7785 } ) ;
7886
7987 test ( 'rename_file_or_folder prompt formats paths' , ( ) => {
88+ assert . ok ( fileActions . rename_file_or_folder . promptGenerator && typeof fileActions . rename_file_or_folder . promptGenerator !== 'string' ) ;
8089 // === Arrange & Act ===
81- const prompt = fileActions . rename_file_or_folder . promptGenerator ( { data : { params : { oldPath : 'old/a.txt' , newPath : 'new/a.txt' } } } as RCEContext ) ;
90+ const prompt = fileActions . rename_file_or_folder . promptGenerator ( fakeContext ( 'rename_file_or_folder' , { oldPath : 'old/a.txt' , newPath : 'new/a.txt' } ) ) ;
8291
8392 // === Assert ===
8493 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
@@ -87,8 +96,9 @@ suite('file Actions', () => {
8796 } ) ;
8897
8998 test ( 'delete_file_or_folder prompt formats path' , ( ) => {
99+ assert . ok ( fileActions . delete_file_or_folder . promptGenerator && typeof fileActions . delete_file_or_folder . promptGenerator !== 'string' ) ;
90100 // === Arrange & Act ===
91- const prompt = fileActions . delete_file_or_folder . promptGenerator ( { data : { params : { path : 'old/file.txt' } } } as RCEContext ) ;
101+ const prompt = fileActions . delete_file_or_folder . promptGenerator ( fakeContext ( 'delete_file_or_folder' , { path : 'old/file.txt' } ) ) ;
92102
93103 // === Assert ===
94104 assert . ok ( typeof prompt === 'string' && prompt . length > 0 ) ;
0 commit comments