package org.infernus.idea.checkstyle;
import java.util.Arrays;
import java.util.List;
import com.intellij.openapi.project.Project;
import org.infernus.idea.checkstyle.model.ConfigurationLocation;
import org.infernus.idea.checkstyle.model.ConfigurationLocationFactory;
import org.infernus.idea.checkstyle.model.ConfigurationType;
import org.infernus.idea.checkstyle.model.ScanScope;
import org.infernus.idea.checkstyle.ui.CheckStyleConfigPanel;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
import org.mockito.Mockito;
import static org.junit.Assert.assertFalse;
import static org.mockito.Mockito.when;
public class CheckStyleConfigurableTest {
private static class CheckStyleConfigurable4Test extends CheckStyleConfigurable {
private final Project mockProject;
CheckStyleConfigurable4Test(@NotNull final Project project, @NotNull final CheckStyleConfigPanel configPanel) {
super(project, configPanel);
mockProject = project;
}
CheckStyleConfiguration getConfiguration() {
final ConfigurationLocationFactory mockLocFactory = new ConfigurationLocationFactory();
final List<ConfigurationLocation> mockLocations = buildMockLocations(mockProject, mockLocFactory);
CheckStyleConfiguration mockConfig = Mockito.mock(CheckStyleConfiguration.class);
when(mockConfig.getProject()).thenReturn(mockProject);
when(mockConfig.getCheckstyleVersion(Mockito.anyString())).thenReturn("7.1.2");
when(mockConfig.configurationLocationFactory()).thenReturn(mockLocFactory);
when(mockConfig.getActiveConfiguration()).thenReturn(mockLocations.get(0));
when(mockConfig.configurationLocations()).thenReturn(mockLocations);
when(mockConfig.getThirdPartyClassPath()).thenReturn(Arrays.asList("cp1", "cp2"));
when(mockConfig.getScanScope()).thenReturn(ScanScope.AllSources);
when(mockConfig.isSuppressingErrors()).thenReturn(Boolean.FALSE);
return mockConfig;
}
}
private static List<ConfigurationLocation> buildMockLocations(final Project mockProject,
final ConfigurationLocationFactory mockLocFactory) {
ConfigurationLocation mockLocation1 = mockLocFactory.create(mockProject, ConfigurationType.PROJECT_RELATIVE,
"src/test/resources/emptyFile1.xml", "description1");
ConfigurationLocation mockLocation2 = mockLocFactory.create(mockProject, ConfigurationType.PROJECT_RELATIVE,
"src/test/resources/emptyFile2.xml", "description2");
return Arrays.asList(mockLocation1, mockLocation2);
}
private CheckStyleConfigPanel buildMockPanel(final Project mockProject) {
CheckStyleConfigPanel mockPanel = Mockito.mock(CheckStyleConfigPanel.class);
final List<ConfigurationLocation> mockLocations = buildMockLocations(mockProject,
new ConfigurationLocationFactory());
when(mockPanel.getCheckstyleVersion()).thenReturn("7.1.2");
when(mockPanel.getActiveLocation()).thenReturn(mockLocations.get(0));
when(mockPanel.getConfigurationLocations()).thenReturn(mockLocations);
when(mockPanel.getThirdPartyClasspath()).thenReturn(Arrays.asList("cp1", "cp2"));
when(mockPanel.getScanScope()).thenReturn(ScanScope.AllSources);
when(mockPanel.isSuppressingErrors()).thenReturn(Boolean.FALSE);
return mockPanel;
}
@Test
public void testIsModified() {
Project mockProject = Mockito.mock(Project.class);
CheckStyleConfigPanel mockPanel = buildMockPanel(mockProject);
CheckStyleConfigurable classUnderTest = new CheckStyleConfigurable4Test(mockProject, mockPanel);
boolean actualModified = classUnderTest.isModified();
assertFalse(actualModified);
}
}