private void onStopProcess(@NotNull ProcessTreeNode node) { String processId = node.getId(); ProcessTreeNode parentNode = node.getParent(); int processIndex = view.getNodeIndex(processId); if (processIndex < 0) { return; } int countWidgets = terminals.size() + consoles.size(); if (countWidgets == 1) { view.hideProcessOutput(processId); removeChildFromMachineNode(node, parentNode); return; } int neighborIndex = processIndex > 0 ? processIndex - 1 : processIndex + 1; ProcessTreeNode neighborNode = view.getNodeByIndex(neighborIndex); String neighborNodeId = neighborNode.getId(); removeChildFromMachineNode(node, parentNode); view.selectNode(neighborNode); resfreshStopButtonState(neighborNodeId); view.showProcessOutput(neighborNodeId); view.hideProcessOutput(processId); }
@Test public void shouldCloseCommanOutputWhenCommandHasFinished() throws Exception { ProcessTreeNode machineNode = mock(ProcessTreeNode.class); ProcessTreeNode commandNode = mock(ProcessTreeNode.class); when(machineNode.getId()).thenReturn(MACHINE_ID); List<ProcessTreeNode> children = new ArrayList<>(); children.add(machineNode); presenter.rootNode = new ProcessTreeNode(ROOT_NODE, null, null, null, children); when(outputConsole.isFinished()).thenReturn(true); presenter.consoles.put(PROCESS_ID, outputConsole); machineNode.getChildren().add(commandNode); when(commandNode.getId()).thenReturn(PROCESS_ID); when(view.getNodeIndex(anyString())).thenReturn(0); when(machineNode.getChildren()).thenReturn(children); when(commandNode.getParent()).thenReturn(machineNode); presenter.onCloseCommandOutputClick(commandNode); verify(commandNode, times(2)).getId(); verify(commandNode).getParent(); verify(view).getNodeIndex(eq(PROCESS_ID)); verify(view).hideProcessOutput(eq(PROCESS_ID)); verify(view).removeProcessNode(eq(commandNode)); verify(view).setProcessesData(anyObject()); }
@Test public void shouldCloseTerminal() throws Exception { TerminalPresenter terminal = mock(TerminalPresenter.class); ProcessTreeNode machineNode = mock(ProcessTreeNode.class); ProcessTreeNode terminalNode = mock(ProcessTreeNode.class); when(machineNode.getId()).thenReturn(MACHINE_ID); List<ProcessTreeNode> children = new ArrayList<>(); children.add(machineNode); presenter.rootNode = new ProcessTreeNode(ROOT_NODE, null, null, null, children); presenter.terminals.put(PROCESS_ID, terminal); when(terminalNode.getId()).thenReturn(PROCESS_ID); when(view.getNodeIndex(anyString())).thenReturn(0); when(machineNode.getChildren()).thenReturn(children); when(terminalNode.getParent()).thenReturn(machineNode); presenter.onCloseTerminal(terminalNode); verify(terminal).stopTerminal(); verify(terminalNode, times(2)).getId(); verify(terminalNode).getParent(); verify(view).getNodeIndex(eq(PROCESS_ID)); verify(view).hideProcessOutput(eq(PROCESS_ID)); verify(view).removeProcessNode(eq(terminalNode)); verify(view).setProcessesData(anyObject()); }
@Test public void shouldStopProcessWithoutCloseCommanOutput() throws Exception { ProcessTreeNode machineNode = mock(ProcessTreeNode.class); ProcessTreeNode commandNode = mock(ProcessTreeNode.class); when(machineNode.getId()).thenReturn(MACHINE_ID); List<ProcessTreeNode> children = new ArrayList<>(); children.add(machineNode); presenter.rootNode = new ProcessTreeNode(ROOT_NODE, null, null, null, children); when(outputConsole.isFinished()).thenReturn(false); presenter.consoles.put(PROCESS_ID, outputConsole); //noinspection ConstantConditions machineNode.getChildren().add(commandNode); when(commandNode.getId()).thenReturn(PROCESS_ID); when(view.getNodeIndex(anyString())).thenReturn(0); when(machineNode.getChildren()).thenReturn(children); when(commandNode.getParent()).thenReturn(machineNode); presenter.onStopCommandProcess(commandNode); verify(outputConsole).stop(); verify(view, never()).hideProcessOutput(eq(PROCESS_ID)); verify(view, never()).removeProcessNode(eq(commandNode)); }