|
5 | 5 | import asyncio |
6 | 6 | import time |
7 | 7 | from datetime import timedelta |
8 | | -from unittest.mock import ANY |
| 8 | +from typing import Any |
| 9 | +from unittest.mock import ANY, MagicMock, patch |
9 | 10 |
|
10 | 11 | import pytest |
11 | 12 | from bleak.backends.device import BLEDevice |
|
14 | 15 |
|
15 | 16 | from habluetooth import ( |
16 | 17 | BaseHaRemoteScanner, |
| 18 | + BaseHaScanner, |
17 | 19 | BluetoothScanningMode, |
18 | 20 | HaBluetoothConnector, |
19 | 21 | HaScannerDetails, |
20 | 22 | HaScannerModeChange, |
| 23 | + HaScannerType, |
21 | 24 | get_manager, |
22 | 25 | ) |
23 | 26 | from habluetooth.const import ( |
@@ -150,6 +153,7 @@ async def test_remote_scanner(name_2: str | None) -> None: |
150 | 153 | connectable=scanner.connectable, |
151 | 154 | name=scanner.name, |
152 | 155 | adapter=scanner.adapter, |
| 156 | + scanner_type=HaScannerType.REMOTE, |
153 | 157 | ) |
154 | 158 | unsetup = scanner.async_setup() |
155 | 159 | cancel = manager.async_register_scanner(scanner) |
@@ -538,6 +542,7 @@ async def test_merge_manufacturer_data_history_existing() -> None: |
538 | 542 | connectable=scanner.connectable, |
539 | 543 | name=scanner.name, |
540 | 544 | adapter=scanner.adapter, |
| 545 | + scanner_type=HaScannerType.REMOTE, |
541 | 546 | ) |
542 | 547 | unsetup = scanner.async_setup() |
543 | 548 | cancel = manager.async_register_scanner(scanner) |
@@ -616,6 +621,7 @@ async def test_merge_manufacturer_data_history_new() -> None: |
616 | 621 | connectable=scanner.connectable, |
617 | 622 | name=scanner.name, |
618 | 623 | adapter=scanner.adapter, |
| 624 | + scanner_type=HaScannerType.REMOTE, |
619 | 625 | ) |
620 | 626 | unsetup = scanner.async_setup() |
621 | 627 | cancel = manager.async_register_scanner(scanner) |
@@ -683,6 +689,7 @@ async def test_filter_apple_data() -> None: |
683 | 689 | connectable=scanner.connectable, |
684 | 690 | name=scanner.name, |
685 | 691 | adapter=scanner.adapter, |
| 692 | + scanner_type=HaScannerType.REMOTE, |
686 | 693 | ) |
687 | 694 | unsetup = scanner.async_setup() |
688 | 695 | cancel = manager.async_register_scanner(scanner) |
@@ -807,3 +814,40 @@ def mode_callback(change: HaScannerModeChange) -> None: |
807 | 814 | # Clean up |
808 | 815 | unsetup() |
809 | 816 | cancel() |
| 817 | + |
| 818 | + |
| 819 | +def test_remote_scanner_type() -> None: |
| 820 | + """Test that remote scanners have REMOTE type.""" |
| 821 | + |
| 822 | + class TestRemoteScanner(BaseHaRemoteScanner): |
| 823 | + """Test remote scanner implementation.""" |
| 824 | + |
| 825 | + pass |
| 826 | + |
| 827 | + scanner = TestRemoteScanner("test_source", "test_adapter") |
| 828 | + assert scanner.details.scanner_type is HaScannerType.REMOTE |
| 829 | + |
| 830 | + |
| 831 | +def test_base_scanner_with_connector() -> None: |
| 832 | + """Test BaseHaScanner with connector and adapter type.""" |
| 833 | + manager = get_manager() |
| 834 | + |
| 835 | + mock_adapters: dict[str, dict[str, Any]] = { |
| 836 | + "test_adapter": { |
| 837 | + "address": "00:1A:7D:DA:71:04", |
| 838 | + "adapter_type": "usb", |
| 839 | + } |
| 840 | + } |
| 841 | + |
| 842 | + connector = HaBluetoothConnector( |
| 843 | + client=MagicMock, source="test_source", can_connect=lambda: True |
| 844 | + ) |
| 845 | + |
| 846 | + with patch.object(manager, "_adapters", mock_adapters): |
| 847 | + scanner = BaseHaScanner( |
| 848 | + source="test_source", |
| 849 | + adapter="test_adapter", |
| 850 | + connector=connector, |
| 851 | + connectable=True, |
| 852 | + ) |
| 853 | + assert scanner.details.scanner_type is HaScannerType.USB |
0 commit comments