import unittest
from mediaunmasked.analyzers.bias_analyzer import BiasAnalyzer
import logging

class TestBiasAnalyzer(unittest.TestCase):
    def setUp(self):
        self.analyzer = BiasAnalyzer()
        logging.basicConfig(level=logging.INFO)
        self.logger = logging.getLogger(__name__)

    def test_left_bias(self):
        """Test detection of left-leaning bias"""
        text = "Progressive policies have shown success in addressing income inequality and social justice issues. The government's intervention has helped protect workers' rights."
        
        result = self.analyzer.analyze(text)
        
        self.assertIsNotNone(result)
        self.assertIn('bias', result)
        self.assertLess(result['bias_score'], 0)  # Negative score indicates left bias
        self.logger.info(f"Left bias result: {result}")

    def test_right_bias(self):
        """Test detection of right-leaning bias"""
        text = "Free market solutions and deregulation have driven economic growth. Individual responsibility and traditional values remain crucial for society."
        
        result = self.analyzer.analyze(text)
        
        self.assertIsNotNone(result)
        self.assertIn('bias', result)
        self.assertGreater(result['bias_score'], 0)  # Positive score indicates right bias
        self.logger.info(f"Right bias result: {result}")

    def test_neutral_content(self):
        """Test detection of neutral content"""
        text = "The study examined various economic policies and their outcomes. Researchers analyzed data from multiple sources to draw conclusions."
        
        result = self.analyzer.analyze(text)
        
        self.assertIsNotNone(result)
        self.assertIn('bias', result)
        self.assertAlmostEqual(result['bias_score'], 0, delta=0.2)  # Should be close to neutral
        self.logger.info(f"Neutral content result: {result}")