From 5906aabd7c735efbfd9341b458d6ac5fbdfe8ea7 Mon Sep 17 00:00:00 2001 From: Marc Billow Date: Sun, 28 Jun 2026 15:55:35 -0500 Subject: [PATCH] test: end-to-end discovery pipeline over real dumps --- tests/test_end_to_end.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tests/test_end_to_end.py diff --git a/tests/test_end_to_end.py b/tests/test_end_to_end.py new file mode 100644 index 0000000..d21928f --- /dev/null +++ b/tests/test_end_to_end.py @@ -0,0 +1,25 @@ +import json + +import pytest + +from samsung_appliance.registry import (CAPABILITIES, discover, + build_runtime_descriptor) + + +@pytest.mark.parametrize('name,ip', [ + ('dishwasher', '10.0.0.129'), + ('refrigerator', '10.0.0.254'), +]) +def test_full_pipeline_produces_entities_and_observe_paths(name, ip): + resources = json.load(open(f'local-tools/dumps/{ip}.json'))['resources'] + bound = discover(resources, CAPABILITIES) + rd = build_runtime_descriptor( + bound, topic_prefix=f'samsung_{name}', ha_prefix='homeassistant', + device_name=name.title(), model='M', name=name, default_port=49154) + assert rd.discovery_payloads, "no entities discovered" + assert rd.observe_paths, "no observe paths" + assert any(t.name == 'hot' for t in rd.poll_tiers), "no hot tier" + assert any(t.is_sweep for t in rd.poll_tiers), "no sweep tier" + # flatten runs cleanly over the real rep set + flat = rd.flatten(resources) + assert flat