58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
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"
|