import pathlib ROOT=pathlib.Path(__file__).resolve().parents[1] def test_version_420(): assert (ROOT/"VERSION").read_text(encoding="utf-8").strip()=="4.6.15" def test_manifest_has_filename_and_sizes(): svc=(ROOT/"services"/"ocean_batch.py").read_text(encoding="utf-8") assert '"filename"' in svc assert '"size_bytes"' in svc assert '"known_size_bytes"' in svc assert '"known_size_file_count"' in svc def test_frontend_has_one_click_batch_download(): js=(ROOT/"static"/"js"/"app.js").read_text(encoding="utf-8") assert "function startOceanBatchDownloadAll" in js assert "function runOceanBatchDownloadQueue" in js assert "function waitManagedDownloadStatus" in js assert "下载全部" in js assert "查看文件" in js def test_batch_download_uses_managed_range_jobs(): js=(ROOT/"static"/"js"/"app.js").read_text(encoding="utf-8") assert 'j("/api/download/jobs"' in js assert "triggerBrowserSave(child.stream_url" in js assert "resume_supported" in js assert "30 秒无新字节" in js def test_queue_persists_across_page_refresh(): js=(ROOT/"static"/"js"/"app.js").read_text(encoding="utf-8") assert "ocean_batch_download_queue:" in js assert "restoreOceanBatchDownloadQueue" in js assert "localStorage.setItem" in js def test_batch_download_css(): css=(ROOT/"static"/"css"/"app.css").read_text(encoding="utf-8") assert ".ocean-batch-download-queue" in css assert ".ocean-batch-file-list" in css