from models.device import Device import os def test_device(): """Test Device model CRUD operations.""" db_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "db") device_file = os.path.join(db_dir, "device.json") if os.path.exists(device_file): os.remove(device_file) devices = Device() print("Testing create device") device_id = devices.create("Test Device", address="aa:bb:cc:dd:ee:ff", default_pattern="on", tabs=["1", "2"]) print(f"Created device with ID: {device_id}") assert device_id is not None assert device_id in devices print("\nTesting read device") device = devices.read(device_id) print(f"Read: {device}") assert device is not None assert device["name"] == "Test Device" assert device["address"] == "aabbccddeeff" assert device["default_pattern"] == "on" assert device["tabs"] == ["1", "2"] print("\nTesting address normalization") devices.update(device_id, {"address": "11:22:33:44:55:66"}) updated = devices.read(device_id) assert updated["address"] == "112233445566" print("\nTesting update device") update_data = { "name": "Updated Device", "default_pattern": "rainbow", "tabs": ["1", "2", "3"], } result = devices.update(device_id, update_data) assert result is True updated = devices.read(device_id) assert updated["name"] == "Updated Device" assert updated["default_pattern"] == "rainbow" assert len(updated["tabs"]) == 3 print("\nTesting list devices") device_list = devices.list() print(f"Device list: {device_list}") assert device_id in device_list print("\nTesting delete device") deleted = devices.delete(device_id) assert deleted is True assert device_id not in devices print("\nTesting read after delete") device = devices.read(device_id) assert device is None print("\nAll device tests passed!") if __name__ == "__main__": test_device()