mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +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
|
import pytest
|
||||||
|
|
||||||
from homeassistant.helpers.deprecation import (
|
from homeassistant.helpers.deprecation import (
|
||||||
|
deprecated_class,
|
||||||
deprecated_function,
|
deprecated_function,
|
||||||
deprecated_substitute,
|
deprecated_substitute,
|
||||||
get_deprecated,
|
get_deprecated,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class MockBaseClass:
|
class MockBaseClassDeprecatedProperty:
|
||||||
"""Mock base class for deprecated testing."""
|
"""Mock base class for deprecated testing."""
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@deprecated_substitute("old_property")
|
@deprecated_substitute("old_property")
|
||||||
def new_property(self):
|
def new_property(self):
|
||||||
"""Test property to fetch."""
|
"""Test property to fetch."""
|
||||||
raise NotImplementedError()
|
return "default_new"
|
||||||
|
|
||||||
|
|
||||||
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")
|
@patch("logging.getLogger")
|
||||||
def test_deprecated_substitute_old_class(mock_get_logger) -> None:
|
def test_deprecated_substitute_old_class(mock_get_logger) -> None:
|
||||||
"""Test deprecated class object."""
|
"""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_logger = MagicMock()
|
||||||
mock_get_logger.return_value = mock_logger
|
mock_get_logger.return_value = mock_logger
|
||||||
|
|
||||||
mock_object = MockDeprecatedClass()
|
mock_object = MockDeprecatedClass()
|
||||||
assert mock_object.new_property is True
|
assert mock_object.new_property == "old"
|
||||||
assert mock_object.new_property is True
|
|
||||||
assert mock_logger.warning.called
|
assert mock_logger.warning.called
|
||||||
assert len(mock_logger.warning.mock_calls) == 1
|
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")
|
@patch("logging.getLogger")
|
||||||
def test_deprecated_substitute_new_class(mock_get_logger) -> None:
|
def test_deprecated_substitute_new_class(mock_get_logger) -> None:
|
||||||
"""Test deprecated class object."""
|
"""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_logger = MagicMock()
|
||||||
mock_get_logger.return_value = mock_logger
|
mock_get_logger.return_value = mock_logger
|
||||||
|
|
||||||
mock_object = MockUpdatedClass()
|
mock_object = MockUpdatedClass()
|
||||||
assert mock_object.new_property is True
|
assert mock_object.new_property == "new"
|
||||||
assert mock_object.new_property is True
|
|
||||||
assert not mock_logger.warning.called
|
assert not mock_logger.warning.called
|
||||||
|
|
||||||
|
|
||||||
@patch("logging.getLogger")
|
@patch("logging.getLogger")
|
||||||
def test_config_get_deprecated_old(mock_get_logger) -> None:
|
def test_config_get_deprecated_old(mock_get_logger) -> None:
|
||||||
"""Test deprecated class object."""
|
"""Test deprecated config."""
|
||||||
mock_logger = MagicMock()
|
mock_logger = MagicMock()
|
||||||
mock_get_logger.return_value = mock_logger
|
mock_get_logger.return_value = mock_logger
|
||||||
|
|
||||||
@ -77,7 +91,7 @@ def test_config_get_deprecated_old(mock_get_logger) -> None:
|
|||||||
|
|
||||||
@patch("logging.getLogger")
|
@patch("logging.getLogger")
|
||||||
def test_config_get_deprecated_new(mock_get_logger) -> None:
|
def test_config_get_deprecated_new(mock_get_logger) -> None:
|
||||||
"""Test deprecated class object."""
|
"""Test deprecated config."""
|
||||||
mock_logger = MagicMock()
|
mock_logger = MagicMock()
|
||||||
mock_get_logger.return_value = mock_logger
|
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
|
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:
|
def test_deprecated_function(caplog: pytest.LogCaptureFixture) -> None:
|
||||||
"""Test deprecated_function decorator.
|
"""Test deprecated_function decorator.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user