Spaces:
Runtime error
Runtime error
| """Tests for extraction module.""" | |
| import pytest | |
| from contractlens.extraction.extractor import ClauseExtractor | |
| from contractlens.extraction.prompts import ( | |
| EXTRACTION_PROMPTS, | |
| get_extraction_prompt, | |
| ) | |
| from contractlens.models import ClauseCategory, Span | |
| class TestExtractionPrompts: | |
| """Tests for extraction prompts.""" | |
| def test_all_categories_have_prompts(self): | |
| """Test all 41 categories have prompts.""" | |
| for category in ClauseCategory: | |
| assert category in EXTRACTION_PROMPTS | |
| def test_get_extraction_prompt(self): | |
| """Test getting extraction prompt for category.""" | |
| prompt = get_extraction_prompt(ClauseCategory.TERMINATION) | |
| assert "Termination" in prompt | |
| assert "{contract_text}" not in prompt # Should be formatted | |
| def test_prompt_contains_required_fields(self): | |
| """Test prompt contains required output fields.""" | |
| prompt = get_extraction_prompt(ClauseCategory.CONFIDENTIALITY) | |
| assert "text" in prompt | |
| assert "start_char" in prompt | |
| assert "end_char" in prompt | |
| assert "confidence" in prompt | |
| class TestClauseExtractor: | |
| """Tests for ClauseExtractor.""" | |
| def test_extractor_initialization(self): | |
| """Test extractor initialization.""" | |
| extractor = ClauseExtractor(default_model="gpt-4o-mini") | |
| assert extractor.default_model == "gpt-4o-mini" | |
| def test_parse_extraction_response_empty(self): | |
| """Test parsing empty response.""" | |
| extractor = ClauseExtractor() | |
| result = extractor._parse_extraction_response("[]", ClauseCategory.TERMINATION) | |
| assert result == [] | |
| def test_parse_extraction_response_valid(self): | |
| """Test parsing valid JSON response.""" | |
| extractor = ClauseExtractor() | |
| response = '[{"text": "Termination clause", "start_char": 0, "end_char": 18, "confidence": 0.9}]' | |
| result = extractor._parse_extraction_response( | |
| response, ClauseCategory.TERMINATION | |
| ) | |
| assert len(result) == 1 | |
| assert result[0].text == "Termination clause" | |
| assert result[0].category == ClauseCategory.TERMINATION | |
| def test_parse_extraction_response_invalid(self): | |
| """Test parsing invalid JSON.""" | |
| extractor = ClauseExtractor() | |
| result = extractor._parse_extraction_response( | |
| "not valid json", ClauseCategory.TERMINATION | |
| ) | |
| assert result == [] |