# backend/tests/test_sync_storage.py
import pytest
from pathlib import Path
from unittest.mock import patch


def test_parse_local_url_new_format():
    from app.jobs.sync_storage import _parse_local_url
    result = _parse_local_url("/uploads/live/112201/20260506/housekeeping/abc-foto.jpg")
    assert result == {
        "env": "live",
        "spbu_code": "112201",
        "yyyymmdd": "20260506",
        "tipe": "housekeeping",
        "filename": "abc-foto.jpg",
    }


def test_parse_local_url_old_format():
    from app.jobs.sync_storage import _parse_local_url
    result = _parse_local_url("/uploads/live/112201/housekeeping/abc-foto.jpg")
    assert result == {
        "env": "live",
        "spbu_code": "112201",
        "yyyymmdd": "",
        "tipe": "housekeeping",
        "filename": "abc-foto.jpg",
    }


def test_parse_local_url_returns_none_for_gdrive():
    from app.jobs.sync_storage import _parse_local_url
    assert _parse_local_url("https://drive.google.com/file/d/abc/view") is None


def test_parse_local_url_returns_none_for_short_path():
    from app.jobs.sync_storage import _parse_local_url
    assert _parse_local_url("/uploads/only/two") is None


def test_local_path_new_format():
    from app.jobs.sync_storage import _local_path
    with patch("app.jobs.sync_storage.settings") as mock_settings:
        mock_settings.STORAGE_PATH = "/var/storage"
        path = _local_path("/uploads/live/112201/20260506/housekeeping/abc-foto.jpg")
    assert path == Path("/var/storage/live/112201/20260506/housekeeping/abc-foto.jpg")


def test_local_path_old_format():
    from app.jobs.sync_storage import _local_path
    with patch("app.jobs.sync_storage.settings") as mock_settings:
        mock_settings.STORAGE_PATH = "/var/storage"
        path = _local_path("/uploads/live/112201/housekeeping/abc-foto.jpg")
    assert path == Path("/var/storage/live/112201/housekeeping/abc-foto.jpg")
