From e1f0c7f1543870f39f85a7692e84a38f0683a100 Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Fri, 24 Dec 2021 14:56:15 -0800 Subject: [PATCH] add tests for setPref() --- meshtastic/tests/test_main.py | 55 ++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/meshtastic/tests/test_main.py b/meshtastic/tests/test_main.py index b94dcd6..28ef303 100644 --- a/meshtastic/tests/test_main.py +++ b/meshtastic/tests/test_main.py @@ -9,7 +9,7 @@ import logging from unittest.mock import patch, MagicMock import pytest -from meshtastic.__main__ import initParser, main, Globals, onReceive, onConnection, export_config, getPref +from meshtastic.__main__ import initParser, main, Globals, onReceive, onConnection, export_config, getPref, setPref #from ..radioconfig_pb2 import UserPreferences import meshtastic.radioconfig_pb2 from ..serial_interface import SerialInterface @@ -1551,3 +1551,56 @@ def test_main_getPref_invalid_field(capsys, reset_globals): # ensure they are sorted assert re.search(r'fixed_position\s+is_router\s+ls_secs', out, re.MULTILINE) assert err == '' + + +@pytest.mark.unit +def test_main_setPref_valid_field(capsys, reset_globals): + """Test setPref() with a valid field""" + + class Field: + """Simple class for testing.""" + + def __init__(self, name, enum_type): + """constructor""" + self.name = name + self.enum_type = enum_type + + ls_secs_field = Field('ls_secs', 'int') + prefs = MagicMock() + prefs.DESCRIPTOR.fields_by_name.get.return_value = ls_secs_field + + setPref(prefs, 'ls_secs', '300') + out, err = capsys.readouterr() + assert re.search(r'Set ls_secs to 300', out, re.MULTILINE) + assert err == '' + + +@pytest.mark.unit +def test_main_setPref_invalid_field(capsys, reset_globals): + """Test setPref() with a invalid field""" + + + class Field: + """Simple class for testing.""" + + def __init__(self, name): + """constructor""" + self.name = name + + prefs = MagicMock() + prefs.DESCRIPTOR.fields_by_name.get.return_value = None + + # Note: This is a subset of the real fields + ls_secs_field = Field('ls_secs') + is_router = Field('is_router') + fixed_position = Field('fixed_position') + + fields = [ ls_secs_field, is_router, fixed_position ] + prefs.DESCRIPTOR.fields = fields + + setPref(prefs, 'foo', '300') + out, err = capsys.readouterr() + assert re.search(r'does not have an attribute called foo', out, re.MULTILINE) + # ensure they are sorted + assert re.search(r'fixed_position\s+is_router\s+ls_secs', out, re.MULTILINE) + assert err == ''