51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from backend.app.db.history_repository import HistoryRepository
|
|
|
|
|
|
class HistoryRepositoryTest(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
self.temp_dir = tempfile.TemporaryDirectory()
|
|
self.repo = HistoryRepository(str(Path(self.temp_dir.name) / 'history.db'))
|
|
|
|
def tearDown(self) -> None:
|
|
self.temp_dir.cleanup()
|
|
|
|
def test_list_history_sorted_created_at_desc(self) -> None:
|
|
self.repo.insert_entry_for_testing(
|
|
{
|
|
'id': 'old',
|
|
'operation': 'mkdir',
|
|
'status': 'completed',
|
|
'source': None,
|
|
'destination': None,
|
|
'path': 'storage1/old',
|
|
'error_code': None,
|
|
'error_message': None,
|
|
'created_at': '2026-03-10T10:00:00Z',
|
|
'finished_at': '2026-03-10T10:00:00Z',
|
|
}
|
|
)
|
|
self.repo.insert_entry_for_testing(
|
|
{
|
|
'id': 'new',
|
|
'operation': 'move',
|
|
'status': 'failed',
|
|
'source': 'storage1/a.txt',
|
|
'destination': 'storage1/b.txt',
|
|
'path': None,
|
|
'error_code': 'io_error',
|
|
'error_message': 'failed',
|
|
'created_at': '2026-03-10T10:01:00Z',
|
|
'finished_at': '2026-03-10T10:01:01Z',
|
|
}
|
|
)
|
|
|
|
items = self.repo.list_history(limit=100)
|
|
|
|
self.assertEqual([item['id'] for item in items], ['new', 'old'])
|