import unittest from mediaunmasked.analyzers.headline_analyzer import HeadlineAnalyzer import logging class TestHeadlineAnalyzer(unittest.TestCase): def setUp(self): self.analyzer = HeadlineAnalyzer() logging.basicConfig(level=logging.INFO) self.logger = logging.getLogger(__name__) def test_matching_headline(self): """Test when headline matches content""" headline = "Climate Change Impact on Global Weather Patterns" content = "Scientists have discovered significant changes in global weather patterns due to climate change. The study shows increasing temperatures are affecting weather systems worldwide." result = self.analyzer.analyze(headline, content) self.assertIsNotNone(result) self.assertIn('headline_vs_content_score', result) self.assertGreater(result['headline_vs_content_score'], 70) # Should have high score self.logger.info(f"Matching headline score: {result['headline_vs_content_score']}") def test_misleading_headline(self): """Test when headline is misleading compared to content""" headline = "Shocking New Diet Guarantees Weight Loss" content = "While some dietary changes may contribute to weight loss, there is no guaranteed method. Studies show sustainable weight loss requires lifestyle changes." result = self.analyzer.analyze(headline, content) self.assertIsNotNone(result) self.assertIn('headline_vs_content_score', result) self.assertLess(result['headline_vs_content_score'], 50) # Should have low score self.logger.info(f"Misleading headline score: {result['headline_vs_content_score']}") def test_empty_inputs(self): """Test handling of empty inputs""" result = self.analyzer.analyze("", "") self.assertIsNotNone(result) self.assertIn('headline_vs_content_score', result) def test_matching_headline(analyzer): headline = "New Study Shows Coffee Reduces Heart Disease Risk" content = "Recent research suggests that coffee may have cardiovascular benefits." result = analyzer.analyze(headline, content) assert result["headline_vs_content_score"] > 30 assert result["contradiction_score"] < 0.3 def test_contradictory_headline(analyzer): headline = "Coffee Increases Heart Disease Risk" content = "Studies show coffee decreases cardiovascular disease risk." result = analyzer.analyze(headline, content) assert result["headline_vs_content_score"] < 30 assert result["contradiction_score"] > 0.3