Files
LangBot/tests/factories/__init__.py
huanghuoguoguo 70ec75f9a2 feat(test): Phase 1.5 coverage expansion - COV-001 to COV-013
Coverage baseline raised from 13.65% to 26% (+12.35%)
Gate raised from 12% to 18%

Tasks completed:
- COV-001: Command system unit tests (100% coverage)
- COV-002: API service unit tests batch 1 (user/apikey/model/provider)
- COV-003: Provider model manager unit tests
- COV-004: Pipeline remaining stage tests (aggregator/cntfilter/longtext/msgtrun)
- COV-005: Storage and utils coverage pass
- COV-006: Gate ratchet 12%→15%
- COV-007: Gate ratchet 15%→18%
- COV-008: API service batch 2 (bot/pipeline/webhook/space/maintenance/mcp)
- COV-009: Blocked - API controller circular import issue documented
- COV-010: Plugin runtime unit tests (+0.08%)
- COV-011: RAG and vector unit tests (+0.68%)
- COV-012: Core boot and migration unit tests
- COV-013: Provider requester logic unit tests (+0.62%)

Key additions:
- tests/utils/import_isolation.py: sys.modules isolation for circular imports
- Provider requester mock tests: proved HTTP-dependent code can be tested locally
- Vector filter utilities: 100% coverage on pure functions
- API services: fake persistence pattern for unit testing

Blocked issue COV-009 documented in langbot-test-plan/1.5/issues/

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 10:12:48 +08:00

102 lines
2.2 KiB
Python

"""
Shared test factories for LangBot tests.
Provides reusable factories for:
- Fake application (app.py)
- Messages and queries (message.py)
- Fake providers (provider.py)
- Fake platforms (platform.py)
Usage:
from tests.factories import FakeApp, text_query, FakeProvider
app = FakeApp()
query = text_query("hello")
provider = FakeProvider.returns("response")
"""
from tests.factories.app import FakeApp, fake_app
from tests.factories.message import (
text_chain,
group_text_chain,
mention_chain,
image_chain,
text_query,
group_text_query,
private_text_query,
command_query,
mention_query,
empty_query,
image_query,
file_query,
unsupported_query,
voice_query,
at_all_query,
query_with_session,
query_with_config,
friend_message_event,
group_message_event,
mock_adapter,
)
from tests.factories.provider import (
FakeProvider,
fake_provider,
fake_provider_pong,
fake_provider_timeout,
fake_provider_auth_error,
fake_provider_rate_limit,
fake_provider_malformed,
fake_model,
)
from tests.factories.platform import (
FakePlatform,
fake_platform,
fake_platform_with_streaming,
fake_platform_with_failure,
mock_platform_adapter,
)
__all__ = [
# App
"FakeApp",
"fake_app",
# Message chains
"text_chain",
"group_text_chain",
"mention_chain",
"image_chain",
# Message events
"friend_message_event",
"group_message_event",
# Mock adapters
"mock_adapter",
# Queries
"text_query",
"group_text_query",
"private_text_query",
"command_query",
"mention_query",
"empty_query",
"image_query",
"file_query",
"unsupported_query",
"voice_query",
"at_all_query",
"query_with_session",
"query_with_config",
# Provider
"FakeProvider",
"fake_provider",
"fake_provider_pong",
"fake_provider_timeout",
"fake_provider_auth_error",
"fake_provider_rate_limit",
"fake_provider_malformed",
"fake_model",
# Platform
"FakePlatform",
"fake_platform",
"fake_platform_with_streaming",
"fake_platform_with_failure",
"mock_platform_adapter",
]