feat: Integrate Requirements Engineering Agent and fix Issue #59 test failures
## Major Integration - ✅ Integrated Requirements Engineering Agent into development workflow - ✅ Enhanced Makefile with requirements validation targets - ✅ Added pre-commit validation with mock compatibility checking - ✅ Enhanced TDD workflow to include foundation analysis ## Test Fixes - ✅ Fixed GiteaPlugin missing _add_comment_async method - ✅ Fixed LocalPlugin config.yml file not found errors in tests - ✅ Enhanced mock objects in CLI tests with proper domain model attributes - ✅ All Issue #59 tests now passing (38/38 tests pass) ## New Capabilities - `make validate-requirements` - Foundation analysis before development - `make check-interface-compatibility INTERFACE=Name` - Interface compatibility checking - `make generate-dev-checklist FEATURE='Name'` - Development checklist generation - `make validate-mocks` - Mock object compatibility validation - `make pre-commit-validate` - Complete pre-commit validation workflow ## Problem Prevention This integration prevents the exact interface compatibility issues and mock object mismatches that caused hours of debugging in Issue #59. The Requirements Engineering Agent provides proactive foundation analysis and catches problems before they occur. 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@ provides offline issue management using markdown files and directories.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
from unittest.mock import Mock, patch, mock_open
|
||||
from unittest.mock import Mock, patch, mock_open, call
|
||||
from pathlib import Path
|
||||
import tempfile
|
||||
import yaml
|
||||
@@ -48,10 +48,14 @@ class TestLocalPluginInitialization:
|
||||
|
||||
with patch('pathlib.Path.mkdir') as mock_mkdir:
|
||||
with patch('pathlib.Path.exists', return_value=False):
|
||||
plugin = LocalPlugin(config)
|
||||
with patch('builtins.open', mock_open()) as mock_file:
|
||||
with patch('yaml.dump') as mock_yaml_dump:
|
||||
plugin = LocalPlugin(config)
|
||||
|
||||
# Should create base directory and subdirectories
|
||||
assert mock_mkdir.called
|
||||
# Should create base directory and subdirectories
|
||||
assert mock_mkdir.called
|
||||
# Should create config file
|
||||
assert mock_file.called
|
||||
|
||||
def test_local_plugin_uses_default_directory_if_not_specified(self):
|
||||
"""Test that LocalPlugin uses default directory when not specified."""
|
||||
@@ -80,14 +84,17 @@ class TestLocalPluginDirectoryStructure:
|
||||
|
||||
with patch('pathlib.Path.mkdir') as mock_mkdir:
|
||||
with patch('pathlib.Path.exists', return_value=False):
|
||||
plugin = LocalPlugin(config)
|
||||
with patch('builtins.open', mock_open()) as mock_file:
|
||||
with patch('yaml.dump') as mock_yaml_dump:
|
||||
plugin = LocalPlugin(config)
|
||||
|
||||
# Verify subdirectories are created
|
||||
expected_calls = [
|
||||
patch.call(parents=True, exist_ok=True), # Base directory
|
||||
patch.call(exist_ok=True), # open subdirectory
|
||||
patch.call(exist_ok=True), # closed subdirectory
|
||||
]
|
||||
# Verify subdirectories are created
|
||||
expected_calls = [
|
||||
call(parents=True, exist_ok=True), # Base directory
|
||||
call(exist_ok=True), # open subdirectory
|
||||
call(exist_ok=True), # closed subdirectory
|
||||
]
|
||||
assert mock_mkdir.call_count == 3
|
||||
|
||||
def test_plugin_creates_config_file_if_missing(self):
|
||||
"""Test that plugin creates config.yml if it doesn't exist."""
|
||||
|
||||
Reference in New Issue
Block a user