| import pytest |
| from typing import List |
| from api_server.utils.file_operations import FileSystemOperations, FileSystemItem, is_file_info |
|
|
| @pytest.fixture |
| def temp_directory(tmp_path): |
| |
| dir1 = tmp_path / "dir1" |
| dir2 = tmp_path / "dir2" |
| dir1.mkdir() |
| dir2.mkdir() |
| (dir1 / "file1.txt").write_text("content1") |
| (dir2 / "file2.txt").write_text("content2") |
| (tmp_path / "file3.txt").write_text("content3") |
| return tmp_path |
|
|
| def test_walk_directory(temp_directory): |
| result: List[FileSystemItem] = FileSystemOperations.walk_directory(str(temp_directory)) |
| |
| assert len(result) == 5 |
| |
| files = [item for item in result if item['type'] == 'file'] |
| dirs = [item for item in result if item['type'] == 'directory'] |
| |
| assert len(files) == 3 |
| assert len(dirs) == 2 |
| |
| file_names = {file['name'] for file in files} |
| assert file_names == {'file1.txt', 'file2.txt', 'file3.txt'} |
| |
| dir_names = {dir['name'] for dir in dirs} |
| assert dir_names == {'dir1', 'dir2'} |
|
|
| def test_walk_directory_empty(tmp_path): |
| result = FileSystemOperations.walk_directory(str(tmp_path)) |
| assert len(result) == 0 |
|
|
| def test_walk_directory_file_size(temp_directory): |
| result: List[FileSystemItem] = FileSystemOperations.walk_directory(str(temp_directory)) |
| files = [item for item in result if is_file_info(item)] |
| for file in files: |
| assert file['size'] > 0 |
|
|