Spaces:
Sleeping
Sleeping
| """Unit tests for rubric service.""" | |
| import pytest | |
| from writing_studio.services.rubric_service import RubricService | |
| class TestRubricService: | |
| """Tests for RubricService.""" | |
| def service(self): | |
| """Create rubric service instance.""" | |
| return RubricService() | |
| def test_analyze_empty_text(self, service): | |
| """Test analysis of empty text.""" | |
| results = service.analyze_text("") | |
| assert all(data["score"] == 0 for data in results.values()) | |
| def test_analyze_valid_text(self, service): | |
| """Test analysis of valid text.""" | |
| text = """This is a clear and concise text. It demonstrates good writing. | |
| Furthermore, it has proper organization. The sentences are well-structured. | |
| According to research, good writing includes evidence.""" | |
| results = service.analyze_text(text) | |
| assert "Clarity" in results | |
| assert "Conciseness" in results | |
| assert results["Clarity"]["score"] > 0 | |
| assert results["Clarity"]["max_score"] == 5 | |
| def test_score_clarity(self, service): | |
| """Test clarity scoring.""" | |
| # Short sentences - should get lower clarity | |
| text = "Short. Very short. Too short." | |
| score, _ = service._score_clarity(text) | |
| assert score <= 3 | |
| # Good sentence length | |
| text = "This is a well-structured sentence with appropriate length and clarity." | |
| score, _ = service._score_clarity(text) | |
| assert score >= 3 | |
| def test_score_conciseness(self, service): | |
| """Test conciseness scoring.""" | |
| # Wordy text | |
| text = "In order to achieve the goal, due to the fact that we need results." | |
| score, _ = service._score_conciseness(text) | |
| assert score <= 3 | |
| def test_format_feedback(self, service): | |
| """Test feedback formatting.""" | |
| results = { | |
| "Clarity": {"score": 4, "max_score": 5, "feedback": "Good clarity"}, | |
| } | |
| feedback = service.format_feedback(results) | |
| assert "Clarity: 4/5" in feedback | |
| assert "Good clarity" in feedback | |