def test_setActiveView(application): controller = Controller(application) view_1 = View() view_1.setPluginId("test_1") view_2 = View() view_2.setPluginId("test_2") controller.addView(view_1) controller.addView(view_2) controller.activeViewChanged.emit = MagicMock() # Attempting to set the view to a non existing one shouldn't do anything controller.setActiveView("blorp") assert controller.activeViewChanged.emit.call_count == 0 view_1.event = MagicMock() controller.setActiveView("test_1") assert controller.activeViewChanged.emit.call_count == 1 assert controller.getActiveView() == view_1 # Ensure that the view gets notified that it was activated. assert view_1.event.call_args_list[0][0][0].type == Event.ViewActivateEvent controller.setActiveView("test_2") assert controller.getActiveView() == view_2 assert controller.activeViewChanged.emit.call_count == 2 # Ensure that the view was notified that it got deactivated again assert view_1.event.call_args_list[1][0][0].type == Event.ViewDeactivateEvent
def test_getView(application): controller = Controller(application) view_1 = View() view_1.setPluginId("test_1") view_2 = View() view_2.setPluginId("test_2") controller.addView(view_1) controller.addView(view_2) assert controller.getView("test_1") == view_1 assert controller.getView("test_2") == view_2 assert controller.getView("NOPE") is None
def test_addView(application): controller = Controller(application) view_1 = View() view_1.setPluginId("test_1") view_2 = View() view_2.setPluginId("test_1") controller.viewsChanged.emit = MagicMock() controller.addView(view_1) assert controller.getAllViews() == {"test_1": view_1} assert controller.viewsChanged.emit.call_count == 1 # Attempting to add the same view twice should not have any effect. controller.addView(view_1) assert controller.getAllViews() == {"test_1": view_1} assert controller.viewsChanged.emit.call_count == 1 # It has the same ID (although the view is different). In that case it still shouldn't be added. controller.addView(view_2) assert controller.getAllViews() == {"test_1": view_1} assert controller.viewsChanged.emit.call_count == 1