mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Improve test coverage of deprecation helper (#101335)
This commit is contained in:
parent
cc7e35e299
commit
2627abb9ef
@ -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.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user