mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-26 01:06:23 +02:00
feat: added ai file sorting
This commit is contained in:
parent
fa0b47dfca
commit
4bee367d4a
51 changed files with 1703 additions and 72 deletions
|
|
@ -0,0 +1,87 @@
|
|||
"""Unit tests for ensure_folder_hierarchy_with_depth_validation."""
|
||||
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_creates_missing_folders_in_chain():
|
||||
"""Should create all folders when none exist."""
|
||||
from app.services.folder_service import (
|
||||
ensure_folder_hierarchy_with_depth_validation,
|
||||
)
|
||||
|
||||
session = AsyncMock()
|
||||
# All lookups return None (no existing folders)
|
||||
mock_result = MagicMock()
|
||||
mock_result.scalar_one_or_none.return_value = None
|
||||
session.execute.return_value = mock_result
|
||||
|
||||
folder_instances = []
|
||||
|
||||
def track_add(obj):
|
||||
folder_instances.append(obj)
|
||||
|
||||
session.add = track_add
|
||||
|
||||
with (
|
||||
patch(
|
||||
"app.services.folder_service.validate_folder_depth", new_callable=AsyncMock
|
||||
),
|
||||
patch(
|
||||
"app.services.folder_service.generate_folder_position",
|
||||
new_callable=AsyncMock,
|
||||
return_value="a0",
|
||||
),
|
||||
):
|
||||
# Mock flush to assign IDs
|
||||
call_count = 0
|
||||
|
||||
async def mock_flush():
|
||||
nonlocal call_count
|
||||
call_count += 1
|
||||
if folder_instances:
|
||||
folder_instances[-1].id = call_count
|
||||
|
||||
session.flush = mock_flush
|
||||
|
||||
segments = [
|
||||
{"name": "Slack", "metadata": {"ai_sort": True, "ai_sort_level": 1}},
|
||||
{"name": "2025-03-15", "metadata": {"ai_sort": True, "ai_sort_level": 2}},
|
||||
]
|
||||
|
||||
result = await ensure_folder_hierarchy_with_depth_validation(
|
||||
session, 1, segments
|
||||
)
|
||||
|
||||
assert len(folder_instances) == 2
|
||||
assert folder_instances[0].name == "Slack"
|
||||
assert folder_instances[1].name == "2025-03-15"
|
||||
assert result is folder_instances[-1]
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_reuses_existing_folder():
|
||||
"""When a folder already exists, it should be reused, not created."""
|
||||
from app.services.folder_service import (
|
||||
ensure_folder_hierarchy_with_depth_validation,
|
||||
)
|
||||
|
||||
session = AsyncMock()
|
||||
|
||||
existing_folder = MagicMock()
|
||||
existing_folder.id = 42
|
||||
|
||||
mock_result = MagicMock()
|
||||
mock_result.scalar_one_or_none.return_value = existing_folder
|
||||
session.execute.return_value = mock_result
|
||||
|
||||
segments = [{"name": "Existing", "metadata": None}]
|
||||
|
||||
result = await ensure_folder_hierarchy_with_depth_validation(session, 1, segments)
|
||||
|
||||
assert result is existing_folder
|
||||
session.add.assert_not_called()
|
||||
Loading…
Add table
Add a link
Reference in a new issue