First upload, 18 controller version
This commit is contained in:
51
tests/test_device_assignment.py
Normal file
51
tests/test_device_assignment.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from app.config.device_assignment import assign_device_to_tile, find_tile_for_device
|
||||
from app.config.models import InfinityMirrorConfig, LogicalDisplayConfig, TileConfig
|
||||
from app.network.wled import DiscoveredWledDevice
|
||||
|
||||
|
||||
class DeviceAssignmentTests(unittest.TestCase):
|
||||
def _config(self) -> InfinityMirrorConfig:
|
||||
return InfinityMirrorConfig(
|
||||
logical_display=LogicalDisplayConfig(rows=1, cols=2),
|
||||
tiles=[
|
||||
TileConfig(tile_id="r1c1", row=1, col=1, controller_ip="192.0.2.10", controller_mac="AA:BB:CC:DD:EE:01"),
|
||||
TileConfig(tile_id="r1c2", row=1, col=2, controller_ip="192.0.2.11", controller_mac="AA:BB:CC:DD:EE:02"),
|
||||
],
|
||||
)
|
||||
|
||||
def test_find_tile_prefers_mac_match_over_stale_ip(self) -> None:
|
||||
config = self._config()
|
||||
device = DiscoveredWledDevice(ip_address="192.0.2.42", mac_address="AA:BB:CC:DD:EE:01")
|
||||
|
||||
matched = find_tile_for_device(config, device)
|
||||
|
||||
self.assertIsNotNone(matched)
|
||||
self.assertEqual(matched.tile_id, "r1c1")
|
||||
|
||||
def test_assign_device_moves_previous_assignment_and_overwrites_target(self) -> None:
|
||||
config = self._config()
|
||||
device = DiscoveredWledDevice(
|
||||
ip_address="192.0.2.42",
|
||||
hostname="tile-42.local",
|
||||
instance_name="Tile 42",
|
||||
mac_address="AA:BB:CC:DD:EE:01",
|
||||
)
|
||||
|
||||
assign_device_to_tile(config, device, "r1c2")
|
||||
|
||||
source_tile = config.tile_lookup()["r1c1"]
|
||||
target_tile = config.tile_lookup()["r1c2"]
|
||||
self.assertEqual(source_tile.controller_ip, "")
|
||||
self.assertEqual(source_tile.controller_mac, "")
|
||||
self.assertEqual(target_tile.controller_ip, "192.0.2.42")
|
||||
self.assertEqual(target_tile.controller_host, "tile-42.local")
|
||||
self.assertEqual(target_tile.controller_name, "Tile 42")
|
||||
self.assertEqual(target_tile.controller_mac, "AA:BB:CC:DD:EE:01")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user