import os

try:
    import unittest2 as unittest
except ImportError:
    import unittest

try:
    import watchdog
    from bpython.curtsiesfrontend.filewatch import ModuleChangedEventHandler
    has_watchdog = True
except ImportError:
    has_watchdog = False

from bpython.test import mock

@unittest.skipUnless(has_watchdog, "watchdog required")
class TestModuleChangeEventHandler(unittest.TestCase):

    def setUp(self):
        self.module = ModuleChangedEventHandler([], 1)
        self.module.observer = mock.Mock()

    def test_create_module_handler(self):
        self.assertIsInstance(self.module, ModuleChangedEventHandler)

    def test_add_module(self):
        self.module._add_module('something/test.py')
        self.assertIn(os.path.abspath('something/test'),
                      self.module.dirs[os.path.abspath('something')])

    def test_activate_throws_error_when_already_activated(self):
        self.module.activated = True
        with self.assertRaises(ValueError):
            self.module.activate()
