"""Test deprecation helpers.""" from homeassistant.helpers.deprecation import ( deprecated_substitute, get_deprecated) from unittest.mock import patch, MagicMock class MockBaseClass(): """Mock base class for deprecated testing.""" @property @deprecated_substitute('old_property') def new_property(self): """Test property to fetch.""" raise NotImplementedError() class MockDeprecatedClass(MockBaseClass): """Mock deprecated class object.""" @property def old_property(self): """Test property to fetch.""" return True class MockUpdatedClass(MockBaseClass): """Mock updated class object.""" @property def new_property(self): """Test property to fetch.""" return True @patch('logging.getLogger') def test_deprecated_substitute_old_class(mock_get_logger): """Test deprecated class object.""" mock_logger = MagicMock() mock_get_logger.return_value = mock_logger mock_object = MockDeprecatedClass() assert mock_object.new_property is True assert mock_object.new_property is True assert mock_logger.warning.called assert len(mock_logger.warning.mock_calls) == 1 @patch('logging.getLogger') def test_deprecated_substitute_new_class(mock_get_logger): """Test deprecated class object.""" mock_logger = MagicMock() mock_get_logger.return_value = mock_logger mock_object = MockUpdatedClass() assert mock_object.new_property is True assert mock_object.new_property is True assert not mock_logger.warning.called @patch('logging.getLogger') def test_config_get_deprecated_old(mock_get_logger): """Test deprecated class object.""" mock_logger = MagicMock() mock_get_logger.return_value = mock_logger config = { 'old_name': True, } assert get_deprecated(config, 'new_name', 'old_name') is True assert mock_logger.warning.called assert len(mock_logger.warning.mock_calls) == 1 @patch('logging.getLogger') def test_config_get_deprecated_new(mock_get_logger): """Test deprecated class object.""" mock_logger = MagicMock() mock_get_logger.return_value = mock_logger config = { 'new_name': True, } assert get_deprecated(config, 'new_name', 'old_name') is True assert not mock_logger.warning.called