package jp.co.worksap.workspace.ide.eclipse;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import java.io.File;
import java.io.IOException;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import com.google.common.base.Optional;
import com.google.common.io.Files;
public class FindBugsPluginConfiguratorTest {
private static final String METADATA_FILE = "edu.umd.cs.findbugs.plugin.eclipse.prefs";
@Rule
public TemporaryFolder folder = new TemporaryFolder();
private FindBugsPluginConfigurator configurator;
private File workspace;
@Before
public void setUp() throws IOException {
configurator = spy(new FindBugsPluginConfigurator());
workspace = folder.newFolder();
}
@Test
public void skipExecutionWhenNoConfigurationIsProvided() {
configurator.configure(Optional.fromNullable((FindBugsPluginConfiguration) null), workspace);
verify(configurator, never()).copy(any(File.class), any(File.class));
}
@Test
public void skipExecutionWhenConfigurationDoesNotExist() {
FindBugsPluginConfiguration configuration = new FindBugsPluginConfiguration("does-not-exist");
configurator.configure(Optional.fromNullable(configuration), workspace);
verify(configurator, never()).copy(any(File.class), any(File.class));
}
@Test
public void testPluginCreatesMetadataFile() throws IOException {
File source = new File("src/test/resources", METADATA_FILE);
FindBugsPluginConfiguration configuration = new FindBugsPluginConfiguration(source.getAbsolutePath());
File metadata = new File(workspace, ".metadata/.plugins/org.eclipse.core.runtime/.settings/" + METADATA_FILE);
assertThat(workspace.listFiles().length, is(0));
assertThat(metadata.isFile(), is(false));
configurator.configure(Optional.of(configuration), workspace);
assertThat(workspace.listFiles().length, is(1));
assertThat(workspace.listFiles()[0].getName(), is(".metadata"));
assertThat(metadata.isFile(), is(true));
assertThat(Files.equal(metadata, source), is(true));
}
}