43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
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):
|
|
# Create a temporary directory structure
|
|
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 # 2 directories and 3 files
|
|
|
|
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 # Assuming all files have some content
|