"""The tests for the folder sensor.""" import unittest import os from homeassistant.components.sensor.folder import CONF_FOLDER_PATHS from homeassistant.setup import setup_component from tests.common import get_test_home_assistant CWD = os.path.join(os.path.dirname(__file__)) TEST_FOLDER = 'test_folder' TEST_DIR = os.path.join(CWD, TEST_FOLDER) TEST_TXT = 'mock_test_folder.txt' TEST_FILE = os.path.join(TEST_DIR, TEST_TXT) def create_file(path): """Create a test file.""" with open(path, 'w') as test_file: test_file.write("test") class TestFolderSensor(unittest.TestCase): """Test the filesize sensor.""" def setup_method(self, method): """Set up things to be run when tests are started.""" self.hass = get_test_home_assistant() if not os.path.isdir(TEST_DIR): os.mkdir(TEST_DIR) self.hass.config.whitelist_external_dirs = set((TEST_DIR)) def teardown_method(self, method): """Stop everything that was started.""" if os.path.isfile(TEST_FILE): os.remove(TEST_FILE) os.rmdir(TEST_DIR) self.hass.stop() def test_invalid_path(self): """Test that an invalid path is caught.""" config = { 'sensor': { 'platform': 'folder', CONF_FOLDER_PATHS: 'invalid_path'} } self.assertTrue( setup_component(self.hass, 'sensor', config)) assert len(self.hass.states.entity_ids()) == 0 def test_valid_path(self): """Test for a valid path.""" create_file(TEST_FILE) config = { 'sensor': { 'platform': 'folder', CONF_FOLDER_PATHS: TEST_DIR} } self.assertTrue( setup_component(self.hass, 'sensor', config)) assert len(self.hass.states.entity_ids()) == 1 state = self.hass.states.get('sensor.test_folder') assert state.state == '0.0' assert state.attributes.get('number_of_files') == 1