import unittest
from unittest.mock import patch
from aiva.alerts.alert_suppression import AlertSuppressor

class TestAlertSuppressor(unittest.TestCase):

    def test_is_suppressed_not_suppressed(self):
        suppressor = AlertSuppressor(alert_name='test_alert', suppression_time=60)
        self.assertFalse(suppressor.is_suppressed())

    def test_is_suppressed_suppressed(self):
        suppressor = AlertSuppressor(alert_name='test_alert', suppression_time=60)
        suppressor.suppress()
        self.assertTrue(suppressor.is_suppressed())

    @patch('time.time')
    def test_is_suppressed_expired(self, mock_time):
        suppressor = AlertSuppressor(alert_name='test_alert', suppression_time=60)
        suppressor.suppress()
        mock_time.return_value = suppressor.suppression_start_time + 61 # Simulate time passing
        self.assertFalse(suppressor.is_suppressed())

    def test_suppress(self):
        suppressor = AlertSuppressor(alert_name='test_alert', suppression_time=60)
        suppressor.suppress()
        self.assertTrue(suppressor.suppression_start_time is not None)

if __name__ == '__main__':
    unittest.main()