fix more tests

This commit is contained in:
J. Nick Koston
2023-12-05 13:24:54 -10:00
parent d3624a09e9
commit 1494551405

View File

@@ -41,6 +41,29 @@ from . import (
from tests.common import async_fire_time_changed, load_fixture from tests.common import async_fire_time_changed, load_fixture
class FakeScanner(HomeAssistantRemoteScanner):
"""Fake scanner."""
def inject_advertisement(
self,
device: BLEDevice,
advertisement_data: AdvertisementData,
now: float | None = None,
) -> None:
"""Inject an advertisement."""
self._async_on_advertisement(
device.address,
advertisement_data.rssi,
device.name,
advertisement_data.service_uuids,
advertisement_data.service_data,
advertisement_data.manufacturer_data,
advertisement_data.tx_power,
{"scanner_specific_data": "test"},
now or MONOTONIC_TIME(),
)
@pytest.mark.parametrize("name_2", [None, "w"]) @pytest.mark.parametrize("name_2", [None, "w"])
async def test_remote_scanner( async def test_remote_scanner(
hass: HomeAssistant, enable_bluetooth: None, name_2: str | None hass: HomeAssistant, enable_bluetooth: None, name_2: str | None
@@ -88,23 +111,6 @@ async def test_remote_scanner(
rssi=-100, rssi=-100,
) )
class FakeScanner(HomeAssistantRemoteScanner):
def inject_advertisement(
self, device: BLEDevice, advertisement_data: AdvertisementData
) -> None:
"""Inject an advertisement."""
self._async_on_advertisement(
device.address,
advertisement_data.rssi,
device.name,
advertisement_data.service_uuids,
advertisement_data.service_data,
advertisement_data.manufacturer_data,
advertisement_data.tx_power,
{"scanner_specific_data": "test"},
MONOTONIC_TIME(),
)
new_info_callback = manager.scanner_adv_received new_info_callback = manager.scanner_adv_received
connector = ( connector = (
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False), HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
@@ -172,23 +178,6 @@ async def test_remote_scanner_expires_connectable(
rssi=-100, rssi=-100,
) )
class FakeScanner(HomeAssistantRemoteScanner):
def inject_advertisement(
self, device: BLEDevice, advertisement_data: AdvertisementData
) -> None:
"""Inject an advertisement."""
self._async_on_advertisement(
device.address,
advertisement_data.rssi,
device.name,
advertisement_data.service_uuids,
advertisement_data.service_data,
advertisement_data.manufacturer_data,
advertisement_data.tx_power,
{"scanner_specific_data": "test"},
MONOTONIC_TIME(),
)
new_info_callback = manager.scanner_adv_received new_info_callback = manager.scanner_adv_received
connector = ( connector = (
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False), HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
@@ -244,23 +233,6 @@ async def test_remote_scanner_expires_non_connectable(
rssi=-100, rssi=-100,
) )
class FakeScanner(HomeAssistantRemoteScanner):
def inject_advertisement(
self, device: BLEDevice, advertisement_data: AdvertisementData
) -> None:
"""Inject an advertisement."""
self._async_on_advertisement(
device.address,
advertisement_data.rssi,
device.name,
advertisement_data.service_uuids,
advertisement_data.service_data,
advertisement_data.manufacturer_data,
advertisement_data.tx_power,
{"scanner_specific_data": "test"},
MONOTONIC_TIME(),
)
new_info_callback = manager.scanner_adv_received new_info_callback = manager.scanner_adv_received
connector = ( connector = (
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False), HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
@@ -336,23 +308,6 @@ async def test_base_scanner_connecting_behavior(
rssi=-100, rssi=-100,
) )
class FakeScanner(HomeAssistantRemoteScanner):
def inject_advertisement(
self, device: BLEDevice, advertisement_data: AdvertisementData
) -> None:
"""Inject an advertisement."""
self._async_on_advertisement(
device.address,
advertisement_data.rssi,
device.name,
advertisement_data.service_uuids,
advertisement_data.service_data,
advertisement_data.manufacturer_data,
advertisement_data.tx_power,
{"scanner_specific_data": "test"},
MONOTONIC_TIME(),
)
new_info_callback = manager.scanner_adv_received new_info_callback = manager.scanner_adv_received
connector = ( connector = (
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False), HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
@@ -460,23 +415,6 @@ async def test_device_with_ten_minute_advertising_interval(
rssi=-100, rssi=-100,
) )
class FakeScanner(HomeAssistantRemoteScanner):
def inject_advertisement(
self, device: BLEDevice, advertisement_data: AdvertisementData
) -> None:
"""Inject an advertisement."""
self._async_on_advertisement(
device.address,
advertisement_data.rssi,
device.name,
advertisement_data.service_uuids,
advertisement_data.service_data,
advertisement_data.manufacturer_data,
advertisement_data.tx_power,
{"scanner_specific_data": "test"},
MONOTONIC_TIME(),
)
new_info_callback = manager.scanner_adv_received new_info_callback = manager.scanner_adv_received
connector = ( connector = (
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False), HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
@@ -505,7 +443,7 @@ async def test_device_with_ten_minute_advertising_interval(
) )
with patch_bluetooth_time(new_time): with patch_bluetooth_time(new_time):
scanner.inject_advertisement(bparasite_device, bparasite_device_adv) scanner.inject_advertisement(bparasite_device, bparasite_device_adv, new_time)
original_device = scanner.discovered_devices_and_advertisement_data[ original_device = scanner.discovered_devices_and_advertisement_data[
bparasite_device.address bparasite_device.address
@@ -515,7 +453,9 @@ async def test_device_with_ten_minute_advertising_interval(
for _ in range(1, 20): for _ in range(1, 20):
new_time += advertising_interval new_time += advertising_interval
with patch_bluetooth_time(new_time): with patch_bluetooth_time(new_time):
scanner.inject_advertisement(bparasite_device, bparasite_device_adv) scanner.inject_advertisement(
bparasite_device, bparasite_device_adv, new_time
)
# Make sure the BLEDevice object gets updated # Make sure the BLEDevice object gets updated
# and not replaced # and not replaced
@@ -567,25 +507,6 @@ async def test_scanner_stops_responding(
"""Test we mark a scanner are not scanning when it stops responding.""" """Test we mark a scanner are not scanning when it stops responding."""
manager = _get_manager() manager = _get_manager()
class FakeScanner(HomeAssistantRemoteScanner):
"""A fake remote scanner."""
def inject_advertisement(
self, device: BLEDevice, advertisement_data: AdvertisementData
) -> None:
"""Inject an advertisement."""
self._async_on_advertisement(
device.address,
advertisement_data.rssi,
device.name,
advertisement_data.service_uuids,
advertisement_data.service_data,
advertisement_data.manufacturer_data,
advertisement_data.tx_power,
{"scanner_specific_data": "test"},
MONOTONIC_TIME(),
)
new_info_callback = manager.scanner_adv_received new_info_callback = manager.scanner_adv_received
connector = ( connector = (
HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False), HaBluetoothConnector(MockBleakClient, "mock_bleak_client", lambda: False),
@@ -625,7 +546,9 @@ async def test_scanner_stops_responding(
failure_reached_time += 1 failure_reached_time += 1
with patch_bluetooth_time(failure_reached_time): with patch_bluetooth_time(failure_reached_time):
scanner.inject_advertisement(bparasite_device, bparasite_device_adv) scanner.inject_advertisement(
bparasite_device, bparasite_device_adv, failure_reached_time
)
# As soon as we get a detection, we know the scanner is working again # As soon as we get a detection, we know the scanner is working again
assert scanner.scanning is True assert scanner.scanning is True