import unittest
import shutil
from pathlib import Path
from slack_bot.context.storage import ContextStorage
from slack_bot.context.compressor import ContextCompressor
from health import config

class TestContext(unittest.TestCase):
    def setUp(self):
        self.test_channel = "TEST_CHANNEL_123"
        self.storage = ContextStorage(self.test_channel)
        # Clean up before test
        if self.storage.file_path.exists():
            self.storage.file_path.unlink()

    def tearDown(self):
        if self.storage.file_path.exists():
            self.storage.file_path.unlink()

    def test_add_and_load(self):
        self.storage.add_message("user", "Hello")
        self.storage.add_message("assistant", "Hi", model="gemini")
        
        context = self.storage._load()
        self.assertEqual(len(context), 2)
        self.assertEqual(context[0]["content"], "Hello")
        self.assertEqual(context[1]["model"], "gemini")

    def test_compressor(self):
        # Create list of 30 messages
        msgs = [{"role": "user", "content": f"msg {i}"} for i in range(30)]
        compressed = ContextCompressor.compress(msgs)
        self.assertEqual(len(compressed), 20)
        self.assertEqual(compressed[-1]["content"], "msg 29")

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