import pytest import os from pathlib import Path from sensorpajen.discovery_manager import DiscoveryManager, DiscoveredSensor def test_discovery_manager_init(tmp_path): db_file = tmp_path / "sensors.db" manager = DiscoveryManager(str(db_file)) assert db_file.exists() def test_discovery_manager_add_new(tmp_path): db_file = tmp_path / "sensors.db" manager = DiscoveryManager(str(db_file)) mac = "AA:BB:CC:DD:EE:FF" manager.add_or_update(mac, "ATC_123456", -70, 22.5, 45, 100, 3.0) pending = manager.get_pending() assert len(pending) == 1 sensor = pending[0] assert sensor.mac == mac assert sensor.name == "ATC_123456" assert sensor.sample_reading["temperature"] == 22.5 assert sensor.status == "pending" assert sensor.count == 1 def test_discovery_manager_update_existing(tmp_path): db_file = tmp_path / "sensors.db" manager = DiscoveryManager(str(db_file)) mac = "AA:BB:CC:DD:EE:FF" manager.add_or_update(mac, "ATC_123456", -70, 22.5, 45, 100, 3.0) # Update with new values manager.add_or_update(mac, "ATC_123456", -60, 23.0, 40, 99, 2.9) pending = manager.get_pending() assert len(pending) == 1 sensor = pending[0] assert sensor.rssi == -60 assert sensor.sample_reading["temperature"] == 23.0 assert sensor.sample_reading["humidity"] == 40.0 assert sensor.count == 2 def test_discovery_manager_persistence(tmp_path): db_file = tmp_path / "sensors.db" manager = DiscoveryManager(str(db_file)) mac = "AA:BB:CC:DD:EE:FF" manager.add_or_update(mac, "ATC_123456", -70, 22.5, 45, 100, 3.0) # Create new manager and load from same DB manager2 = DiscoveryManager(str(db_file)) pending = manager2.get_pending() assert len(pending) == 1 assert pending[0].mac == mac assert pending[0].name == "ATC_123456"