package com.github.guikeller.jettyrunner.ui;
import com.github.guikeller.jettyrunner.model.JettyRunnerConfiguration;
import com.intellij.execution.configuration.EnvironmentVariablesComponent;
import org.jdom.Element;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import javax.swing.*;
import static org.junit.Assert.fail;
@RunWith(PowerMockRunner.class)
public class JettyRunnerEditorTest {
@Test
public void testApplyEditorTo() throws Exception {
// Set up
JettyRunnerConfiguration configuration = Mockito.mock(JettyRunnerConfiguration.class);
Mockito.doThrow(new IllegalArgumentException("MY-TEST")).when(configuration).writeExternal(Mockito.any(Element.class));
JettyRunnerConfPanel confPanel = Mockito.mock(JettyRunnerConfPanel.class);
JTextField pathField = Mockito.mock(JTextField.class);
Mockito.when(confPanel.getPathField()).thenReturn(pathField);
JTextField webappField = Mockito.mock(JTextField.class);
Mockito.when(confPanel.getWebappField()).thenReturn(webappField);
JTextField classesField = Mockito.mock(JTextField.class);
Mockito.when(confPanel.getClassesField()).thenReturn(classesField);
JTextField runOnPortField = Mockito.mock(JTextField.class);
Mockito.when(confPanel.getRunOnPortField()).thenReturn(runOnPortField);
JTextField xmlField = Mockito.mock(JTextField.class);
Mockito.when(confPanel.getXmlField()).thenReturn(xmlField);
JTextField vmArgsField = Mockito.mock(JTextField.class);
Mockito.when(confPanel.getVmArgsField()).thenReturn(vmArgsField);
EnvironmentVariablesComponent environmentVariables = Mockito.mock(EnvironmentVariablesComponent.class);
Mockito.when(confPanel.getEnvironmentVariables()).thenReturn(environmentVariables);
JettyRunnerEditor editor = Whitebox.newInstance(JettyRunnerEditor.class);
editor.setConfigurationPanel(confPanel);
// Test
try {
editor.applyEditorTo(configuration);
}catch(Exception ex){
if(!ex.getMessage().contains("MY-TEST")){
ex.printStackTrace();
fail(ex.getMessage());
}
}
Mockito.verify(confPanel, Mockito.times(1)).getClassesField();
Mockito.verify(confPanel, Mockito.times(1)).getPathField();
Mockito.verify(confPanel, Mockito.times(1)).getWebappField();
Mockito.verify(confPanel, Mockito.times(1)).getRunOnPortField();
Mockito.verify(confPanel, Mockito.times(1)).getXmlField();
Mockito.verify(confPanel, Mockito.times(1)).getVmArgsField();
Mockito.verify(confPanel, Mockito.times(2)).getEnvironmentVariables();
Mockito.verify(classesField, Mockito.times(1)).getText();
Mockito.verify(pathField, Mockito.times(1)).getText();
Mockito.verify(webappField, Mockito.times(1)).getText();
Mockito.verify(runOnPortField, Mockito.times(1)).getText();
Mockito.verify(xmlField, Mockito.times(1)).getText();
Mockito.verify(vmArgsField, Mockito.times(1)).getText();
Mockito.verify(environmentVariables, Mockito.times(1)).getEnvs();
Mockito.verify(environmentVariables, Mockito.times(1)).isPassParentEnvs();
}
}