v1
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
import pytest
|
||||
|
||||
from oms_tui.app import OmsApp, TelegramEvent
|
||||
|
||||
DLL = {
|
||||
"type": "dll",
|
||||
"id": "76348799",
|
||||
"manufacturer": "KAM",
|
||||
"version": "1b",
|
||||
"media": "Cold water meter",
|
||||
"driver": "kamwater",
|
||||
"c_field": "44",
|
||||
"rssi": 97,
|
||||
}
|
||||
JSON = {
|
||||
"type": "json",
|
||||
"id": "76348799",
|
||||
"driver": "kamwater",
|
||||
"media": "cold water",
|
||||
"fields": {"total_m3": 6.408, "status": "DRY"},
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_device_appears_and_selects():
|
||||
app = OmsApp(device="none", autostart=False)
|
||||
async with app.run_test() as pilot:
|
||||
app.post_message(TelegramEvent(DLL))
|
||||
await pilot.pause()
|
||||
table = app.query_one("#devices")
|
||||
assert table.row_count == 1
|
||||
|
||||
# nothing selected yet -> global stream mode
|
||||
assert app.show_all is True
|
||||
|
||||
# decrypted JSON updates the model
|
||||
app.post_message(TelegramEvent(JSON))
|
||||
await pilot.pause()
|
||||
dev = app.store.get("76348799")
|
||||
assert dev.decrypted is True
|
||||
assert dev.fields["total_m3"] == 6.408
|
||||
assert dev.count == 1 # one DLL telegram
|
||||
|
||||
# select the device
|
||||
app.action_select()
|
||||
await pilot.pause()
|
||||
assert app.show_all is False
|
||||
assert app.selected_id == "76348799"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_set_key_via_modal():
|
||||
app = OmsApp(device="none", autostart=False)
|
||||
async with app.run_test() as pilot:
|
||||
app.post_message(TelegramEvent(DLL))
|
||||
await pilot.pause()
|
||||
app.action_select()
|
||||
await pilot.pause()
|
||||
|
||||
app.action_set_key() # opens the modal prompt
|
||||
await pilot.pause()
|
||||
await pilot.press(*"28F64A24988064A079AA2C807D6102AE")
|
||||
await pilot.press("enter") # submit
|
||||
await pilot.pause()
|
||||
|
||||
dev = app.store.get("76348799")
|
||||
assert dev.key == "28F64A24988064A079AA2C807D6102AE"
|
||||
assert dev.status == "key set"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_import_preloads_key(tmp_path):
|
||||
path = str(tmp_path / "keys.csv")
|
||||
with open(path, "w") as f:
|
||||
f.write("id,aes_key\n76348799,28F64A24988064A079AA2C807D6102AE\n")
|
||||
|
||||
app = OmsApp(device="none", autostart=False)
|
||||
async with app.run_test() as pilot:
|
||||
app._do_import(path, announce=False)
|
||||
await pilot.pause()
|
||||
dev = app.store.get("76348799")
|
||||
assert dev is not None
|
||||
assert dev.key == "28F64A24988064A079AA2C807D6102AE"
|
||||
assert dev.status == "key set"
|
||||
Reference in New Issue
Block a user