diff --git a/tests/helpers/test_deprecation.py b/tests/helpers/test_deprecation.py index 1128f7d43c6..9a24cda74dd 100644 --- a/tests/helpers/test_deprecation.py +++ b/tests/helpers/test_deprecation.py @@ -4,68 +4,82 @@ from unittest.mock import MagicMock, Mock, patch import pytest from homeassistant.helpers.deprecation import ( + deprecated_class, deprecated_function, deprecated_substitute, get_deprecated, ) -class MockBaseClass: +class MockBaseClassDeprecatedProperty: """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 + return "default_new" @patch("logging.getLogger") def test_deprecated_substitute_old_class(mock_get_logger) -> None: """Test deprecated class object.""" + + class MockDeprecatedClass(MockBaseClassDeprecatedProperty): + """Mock deprecated class object.""" + + @property + def old_property(self): + """Test property to fetch.""" + return "old" + 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_object.new_property == "old" assert mock_logger.warning.called assert len(mock_logger.warning.mock_calls) == 1 +@patch("logging.getLogger") +def test_deprecated_substitute_default_class(mock_get_logger) -> None: + """Test deprecated class object.""" + + class MockDefaultClass(MockBaseClassDeprecatedProperty): + """Mock updated class object.""" + + mock_logger = MagicMock() + mock_get_logger.return_value = mock_logger + + mock_object = MockDefaultClass() + assert mock_object.new_property == "default_new" + assert not mock_logger.warning.called + + @patch("logging.getLogger") def test_deprecated_substitute_new_class(mock_get_logger) -> None: """Test deprecated class object.""" + + class MockUpdatedClass(MockBaseClassDeprecatedProperty): + """Mock updated class object.""" + + @property + def new_property(self): + """Test property to fetch.""" + return "new" + 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 mock_object.new_property == "new" assert not mock_logger.warning.called @patch("logging.getLogger") def test_config_get_deprecated_old(mock_get_logger) -> None: - """Test deprecated class object.""" + """Test deprecated config.""" mock_logger = MagicMock() mock_get_logger.return_value = mock_logger @@ -77,7 +91,7 @@ def test_config_get_deprecated_old(mock_get_logger) -> None: @patch("logging.getLogger") def test_config_get_deprecated_new(mock_get_logger) -> None: - """Test deprecated class object.""" + """Test deprecated config.""" mock_logger = MagicMock() mock_get_logger.return_value = mock_logger @@ -86,6 +100,22 @@ def test_config_get_deprecated_new(mock_get_logger) -> None: assert not mock_logger.warning.called +@deprecated_class("homeassistant.blah.NewClass") +class MockDeprecatedClass: + """Mock class for deprecated testing.""" + + +@patch("logging.getLogger") +def test_deprecated_class(mock_get_logger) -> None: + """Test deprecated class.""" + mock_logger = MagicMock() + mock_get_logger.return_value = mock_logger + + MockDeprecatedClass() + assert mock_logger.warning.called + assert len(mock_logger.warning.mock_calls) == 1 + + def test_deprecated_function(caplog: pytest.LogCaptureFixture) -> None: """Test deprecated_function decorator.