zotero-addons-scraper/tests/conftest.py
2025-12-23 16:22:54 +08:00

127 lines
3.6 KiB
Python

"""Pytest fixtures for Zotero addons scraper tests."""
import json
import tempfile
from pathlib import Path
from typing import Any
import pytest
@pytest.fixture
def fixtures_dir() -> Path:
"""Return path to fixtures directory."""
return Path(__file__).parent / "fixtures"
@pytest.fixture
def temp_dir():
"""Create a temporary directory for tests."""
with tempfile.TemporaryDirectory() as tmpdir:
yield Path(tmpdir)
@pytest.fixture
def sample_manifest_json() -> dict[str, Any]:
"""Return sample manifest.json data."""
return {
"name": "Test Addon",
"version": "1.0.0",
"description": "A test addon for Zotero",
"browser_specific_settings": {
"zotero": {
"id": "test@addon.com",
"strict_min_version": "6.0",
"strict_max_version": "7.*",
}
},
}
@pytest.fixture
def sample_addon_config() -> dict[str, Any]:
"""Return sample addon configuration."""
return {
"repo": "owner/repo",
"releases": [
{"targetZoteroVersion": "7", "tagName": "latest"},
{"targetZoteroVersion": "6", "tagName": "v1.0"},
],
}
@pytest.fixture
def sample_addon_info_output() -> dict[str, Any]:
"""Return sample output addon info."""
return {
"repo": "owner/repo",
"releases": [
{
"targetZoteroVersion": "7",
"tagName": "v2.0.0",
"xpiDownloadUrl": {
"github": "https://github.com/owner/repo/releases/download/v2.0.0/addon.xpi",
"ghProxy": "https://gh-proxy.com/?q=https%3A//github.com/owner/repo/releases/download/v2.0.0/addon.xpi",
"kgithub": "https://kkgithub.com/owner/repo/releases/download/v2.0.0/addon.xpi",
},
"releaseDate": "2024-01-01T00:00:00Z",
"id": "test@addon.com",
"xpiVersion": "2.0.0",
"name": "Test Addon",
"description": "A test addon",
"minZoteroVersion": "7.0",
"maxZoteroVersion": "7.*",
}
],
"name": "repo",
"description": "Test repository",
"stars": 100,
"star": 100,
"author": {
"name": "Test Author",
"url": "https://github.com/owner",
"avatar": "https://avatars.githubusercontent.com/owner",
},
}
@pytest.fixture
def github_user_response() -> dict[str, Any]:
"""Return sample GitHub user API response."""
return {
"login": "owner",
"name": "Test Owner",
"html_url": "https://github.com/owner",
"avatar_url": "https://avatars.githubusercontent.com/owner",
}
@pytest.fixture
def github_repo_response() -> dict[str, Any]:
"""Return sample GitHub repo API response."""
return {
"name": "repo",
"full_name": "owner/repo",
"description": "Test repository description",
"stargazers_count": 100,
}
@pytest.fixture
def github_release_response() -> dict[str, Any]:
"""Return sample GitHub release API response."""
return {
"tag_name": "v2.0.0",
"prerelease": False,
"published_at": "2024-01-01T00:00:00Z",
"assets": [
{
"id": 12345,
"name": "addon.xpi",
"browser_download_url": "https://github.com/owner/repo/releases/download/v2.0.0/addon.xpi",
"content_type": "application/x-xpinstall",
"updated_at": "2024-01-01T00:00:00Z",
}
],
}