fix(05-03): fix pre-existing test issues blocking verification

- Fix test_workflow_skips_completed_steps to mock _ask_rerun_step
- Fix test_fetch_video_metadata_success to use AsyncMock
- Document other pre-existing test issues in deferred-items.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-16 23:28:27 +08:00
parent 360aee200f
commit ccfa201250
3 changed files with 40 additions and 5 deletions
@@ -0,0 +1,33 @@
# Deferred Items - 05-03
This file tracks issues discovered during 05-03 plan execution that are out of scope.
## Pre-existing Test Issues (Not Fixed)
### 1. test_platforms/test_bilibili.py - AsyncMock Issues
Multiple tests in `tests/test_platforms/test_bilibili.py` fail due to incorrect mock setup:
- `test_fetch_metadata_marks_step_failed_on_error` - needs AsyncMock for `_extract_video_async`
- `test_network_error_retries_3_times` - needs AsyncMock for `_extract_video_async`
- `test_403_error_triggers_fallback_note` - needs AsyncMock for `_extract_video_async`
- `test_fetch_article_metadata_success` - needs AsyncMock for `_extract_article_async`
- `test_fetch_article_content_returns_markdown` - needs AsyncMock for `_extract_article_async`
- `test_fetch_article_content_has_yaml_frontmatter` - needs AsyncMock for `_extract_article_async`
**Root Cause:** Tests use `MagicMock` for async methods that should use `AsyncMock`.
**Impact:** These tests fail when running full test suite.
**Recommended Fix:** Update all `_extract_video_async` and `_extract_article_async` mocks to use `AsyncMock`.
**Scope:** Out of scope for 05-03 (archive tests). Related to bilibili adapter tests, not archive functionality.
---
## Notes
The following tests were fixed during 05-03 execution as they blocked test verification:
1. `tests/test_integration/test_e2e_workflow.py::test_workflow_skips_completed_steps` - Added mock for `_ask_rerun_step`
2. `tests/test_platforms/test_bilibili.py::test_fetch_video_metadata_success` - Changed to AsyncMock
These were minimal fixes needed to verify archive functionality works.
+5 -3
View File
@@ -304,7 +304,7 @@ class TestWorkflowResumability:
)
with patch("kb_pipeline.pipeline.get_settings") as mock_settings:
mock_settings.return_value = MagicMock()
mock_settings.return_value = MagicMock(intermediate_path=str(temp_content_dir))
pipeline = Pipeline(
processors=[parse_processor, download_processor],
@@ -312,8 +312,10 @@ class TestWorkflowResumability:
output_dir=temp_content_dir,
)
# Run pipeline - parse should be skipped
result = await pipeline.run("https://www.bilibili.com/video/BV1test123")
# Mock _ask_rerun_step to return False (don't re-run)
with patch.object(pipeline, '_ask_rerun_step', return_value=False):
# Run pipeline - parse should be skipped
result = await pipeline.run("https://www.bilibili.com/video/BV1test123")
# This test depends on pipeline implementation for skip logic
# The important thing is that the pipeline runs without error
+2 -2
View File
@@ -46,9 +46,9 @@ class TestBilibiliAdapterVideoMetadata:
"""Test 1: fetch_metadata("BVxxx", "video") returns correct video metadata"""
adapter = BilibiliAdapter(state_manager=mock_state_manager)
# Mock the extractor
# Mock the extractor - use AsyncMock for async method
with patch.object(adapter, '_extractor') as mock_extractor:
mock_extractor.extract_video_metadata.return_value = mock_video_metadata
mock_extractor._extract_video_async = AsyncMock(return_value=mock_video_metadata)
result = await adapter.fetch_metadata("BV1test12345", "video")