import unittest
import core.aggregation_logic as aggregation_logic

class TestAggregationLogic(unittest.TestCase):

    def test_get_aggregated_downscale_trigger_counts_with_region_id(self):
        # Assuming there's data for region_id 1
        result = aggregation_logic.get_aggregated_downscale_trigger_counts(region_id=1)
        self.assertEqual(result['region_id'], 1)
        self.assertTrue(isinstance(result['aggregated_count'], int))

    def test_get_aggregated_downscale_trigger_counts_without_region_id(self):
        result = aggregation_logic.get_aggregated_downscale_trigger_counts()
        self.assertTrue(isinstance(result, list))
        self.assertTrue(all(isinstance(item['region_id'], int) and isinstance(item['aggregated_count'], int) for item in result))

    def test_get_aggregated_downscale_trigger_counts_invalid_region_id(self):
        with self.assertRaises(ValueError) as context:
            aggregation_logic.get_aggregated_downscale_trigger_counts(region_id='abc')
        self.assertEqual(str(context.exception), "Invalid region_id. Must be an integer.")

    def test_get_aggregated_downscale_trigger_counts_nonexistent_region_id(self):
        with self.assertRaises(ValueError) as context:
            aggregation_logic.get_aggregated_downscale_trigger_counts(region_id=999)
        self.assertEqual(str(context.exception), "No data found for region_id: 999")

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