import pytest from unittest.mock import MagicMock from sqlalchemy import func from datetime import datetime, timezone from src.models.activity import Activity from src.models.segment import Segment @pytest.fixture def mock_db_session(): return MagicMock() def test_optimization_logic(mock_db_session): # Setup test data object activity = MagicMock(spec=Activity) activity.id = 256 activity.last_segment_scan_timestamp = None # 1. Reset # Logic in original script: manually reset timestamp. # Here we test the optimization logic steps. # Scene 1: last_scan is None. Logic should PROCEED. last_scan = activity.last_segment_scan_timestamp assert last_scan is None # If the logic in Job Manager checks `if last_scan >= max_seg_date`, it returns False (Don't skip). # Scene 2: last_scan exists and new Segments exist. max_seg_date_mock = datetime(2023, 1, 2, 12, 0, 0, tzinfo=timezone.utc) mock_db_session.query.return_value.scalar.return_value = max_seg_date_mock # Set activity last scan to OLDER activity.last_segment_scan_timestamp = datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc) # Check Logic should_skip = (activity.last_segment_scan_timestamp >= max_seg_date_mock) assert should_skip is False # Scene 3: last_scan is NEWER activity.last_segment_scan_timestamp = datetime(2023, 1, 3, 12, 0, 0, tzinfo=timezone.utc) should_skip = (activity.last_segment_scan_timestamp >= max_seg_date_mock) assert should_skip is True