feat(webui): complete files quick access

This commit is contained in:
2026-08-19 19:48:56 +02:00
parent ad55d47645
commit e1361427b8
9 changed files with 228 additions and 17 deletions
+54 -1
View File
@@ -2,6 +2,7 @@ from __future__ import annotations
import unittest
from datetime import datetime, timedelta, timezone
from unittest.mock import patch
from sqlalchemy import create_engine, text
from sqlalchemy.orm import sessionmaker
@@ -12,7 +13,11 @@ from govoplan_core.core.change_sequence import ChangeSequenceEntry
from govoplan_core.db.base import Base
from govoplan_files.backend.capabilities import FilesAccessService, virtual_folder_resource_id
from govoplan_files.backend.db.models import FileAsset, FileFolder, FileShare
from govoplan_files.backend.storage.files import count_assets_for_user, list_assets_for_user
from govoplan_files.backend.storage.files import (
count_assets_for_user,
list_assets_for_user,
list_recent_assets_for_user,
)
TENANT_ID = "tenant-1"
@@ -22,6 +27,54 @@ GROUP_ID = "group-1"
class FilesAccessProviderTests(unittest.TestCase):
def test_recent_projection_is_bounded_ordered_and_access_filtered(self) -> None:
session = _session()
self.addCleanup(_close_session, session)
_seed_access_subjects(session)
now = datetime.now(timezone.utc)
session.add_all(
[
FileAsset(
id="owned-older",
tenant_id=TENANT_ID,
owner_type="user",
owner_user_id=USER_ID,
display_path="older.pdf",
filename="older.pdf",
updated_at=now - timedelta(hours=2),
),
FileAsset(
id="owned-newer",
tenant_id=TENANT_ID,
owner_type="user",
owner_user_id=USER_ID,
display_path="newer.pdf",
filename="newer.pdf",
updated_at=now - timedelta(hours=1),
),
FileAsset(
id="other-newest",
tenant_id=TENANT_ID,
owner_type="user",
owner_user_id=OTHER_USER_ID,
display_path="private.pdf",
filename="private.pdf",
updated_at=now,
),
]
)
session.commit()
with patch("govoplan_files.backend.storage.files.user_group_ids", return_value=[]):
recent = list_recent_assets_for_user(
session,
tenant_id=TENANT_ID,
user_id=USER_ID,
limit=1,
)
self.assertEqual(["owned-newer"], [asset.id for asset in recent])
def test_file_access_provider_explains_owner_share_admin_and_missing_resources(self) -> None:
session = _session()
self.addCleanup(_close_session, session)