"""Tests for app/tasks/upload_with_rclone.py module.""" from unittest.mock import patch import pytest from app.tasks.upload_with_rclone import upload_with_rclone @pytest.mark.unit class TestUploadWithRclone: """Tests for upload_with_rclone task.""" def test_raises_file_not_found(self): """Test raises FileNotFoundError for missing file.""" with pytest.raises(FileNotFoundError): upload_with_rclone("/nonexistent/file.pdf", "remote:path") @patch("app.tasks.upload_with_rclone.log_task_progress") def test_raises_value_error_invalid_destination(self, mock_log, tmp_path): """Test raises ValueError for invalid destination format.""" test_file = tmp_path / "test.pdf" test_file.write_bytes(b"test") with pytest.raises(ValueError, match="Invalid destination format"): upload_with_rclone(str(test_file), "invalid_destination") @patch("app.tasks.upload_with_rclone.log_task_progress") def test_raises_value_error_invalid_remote_name(self, mock_log, tmp_path): """Test raises ValueError for invalid remote name.""" test_file = tmp_path / "test.pdf" test_file.write_bytes(b"test") with pytest.raises(ValueError, match="Invalid remote name"): upload_with_rclone(str(test_file), ":path") @patch("app.tasks.upload_with_rclone.log_task_progress") def test_raises_value_error_no_config(self, mock_log, tmp_path): """Test raises ValueError when rclone config not found.""" test_file = tmp_path / "test.pdf" test_file.write_bytes(b"test") with patch("app.tasks.upload_with_rclone.settings") as mock_settings: mock_settings.workdir = str(tmp_path) with pytest.raises(ValueError, match="Rclone configuration not found"): upload_with_rclone(str(test_file), "gdrive:uploads")