74 lines
1.8 KiB
Python
74 lines
1.8 KiB
Python
"""
|
|
LinkSyncServer - Link API Tests
|
|
"""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_link():
|
|
"""Mock bookmark data."""
|
|
return {
|
|
"id": "test-link-id",
|
|
"url": "https://example.com",
|
|
"title": "Test Link",
|
|
"description": "A test link",
|
|
"notes": "",
|
|
"tags": ["test", "demo"],
|
|
"favicon_url": None,
|
|
"path": "/Test",
|
|
"created_at": "2026-05-11T00:00:00Z",
|
|
"updated_at": "2026-05-11T00:00:00Z",
|
|
"visit_count": 0,
|
|
"is_bookmarked": False,
|
|
"source_set_id": None
|
|
}
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_list_links_mock():
|
|
"""Test listing links with mock data."""
|
|
links = [
|
|
{
|
|
"id": "1",
|
|
"url": "https://example.com/1",
|
|
"title": "Link 1",
|
|
"description": "First link"
|
|
},
|
|
{
|
|
"id": "2",
|
|
"url": "https://example.com/2",
|
|
"title": "Link 2",
|
|
"description": "Second link"
|
|
}
|
|
]
|
|
assert len(links) == 2
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_link_mock(mock_link):
|
|
"""Test getting single link."""
|
|
link = mock_link
|
|
assert link["id"] == "test-link-id"
|
|
assert link["url"] == "https://example.com"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_create_link(mock_link):
|
|
"""Test creating a link."""
|
|
new_link = {
|
|
"url": "https://new-example.com",
|
|
"title": "New Link",
|
|
"description": "A new link"
|
|
}
|
|
mock_link["url"] = new_link["url"]
|
|
mock_link["title"] = new_link["title"]
|
|
assert mock_link["url"] == "https://new-example.com"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_delete_link(mock_link):
|
|
"""Test deleting a link."""
|
|
original_id = mock_link["id"]
|
|
mock_link["id"] = None
|
|
assert mock_link["id"] is None |