Files
StarPilot/openpilot/starpilot/ui/tests/test_onroad_jetlink_layer.py
T

34 lines
1.5 KiB
Python

from types import SimpleNamespace as NS
from unittest.mock import Mock, patch
from openpilot.starpilot.ui.onroad_customization import default_document
from openpilot.starpilot.ui.onroad_jetlink_layer import NativeJetlinkLayer
def test_native_jetlink_polls_only_while_its_widget_is_showing_onroad():
with patch('openpilot.starpilot.ui.onroad_jetlink_layer.gui_app') as app, \
patch('openpilot.starpilot.ui.onroad_jetlink_layer.JetlinkStatusFeed') as feed:
widget, ui = Mock(), NS(started=True)
layer = NativeJetlinkLayer(widget, ui)
state = NS(customization=default_document())
app.add_render_prepare.assert_called_once_with(layer.prepare, layer.close)
layer.render(state)
layer.prepare()
widget.render.assert_not_called() # Off by default.
feed.return_value.set_enabled.assert_called_with(False)
state.customization['layouts']['large']['jetlink_status']['enabled'] = True
layer.render(state)
assert widget.status is feed.return_value.snapshot.return_value
widget.render.assert_called_once_with(state)
layer.prepare()
feed.return_value.set_enabled.assert_called_with(True)
layer.prepare() # No render request: the page is hidden.
feed.return_value.set_enabled.assert_called_with(False)
layer.render(state)
ui.started = False
layer.prepare()
feed.return_value.set_enabled.assert_called_with(False)
layer.close()
app.remove_render_prepare.assert_called_once_with(layer.prepare)
feed.return_value.close.assert_called_once()