/**
* Copyright 2014 Marin Solutions
*/
package com.captaindebug.errortrack.file;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.File;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.test.util.ReflectionTestUtils;
import com.captaindebug.errortrack.Validator;
import com.captaindebug.errortrack.report.Results;
/**
* @author Roger
*
*/
public class FileLocatorTest {
private FileLocator instance;
private MyCallback callback;
@Mock
private File mockFile;
@Mock
private Results results;
private int count;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
instance = new FileLocator() {
@Override
File createFile(String name) {
return mockFile;
}
};
ReflectionTestUtils.setField(instance, "scanIn", "/the/log/file/dir/*.log");
callback = new MyCallback();
ReflectionTestUtils.setField(instance, "validator", callback);
}
/** Dummy file found handler */
private class MyCallback implements Validator {
/**
* @see com.captaindebug.errortrack.file.FileFoundHandler#foundFile(java.io.File)
*/
@Override
public <T> boolean validate(T obj) {
count++;
return true;
}
}
@Test
public void testFindFile_for_a_single_file() {
when(mockFile.isDirectory()).thenReturn(false);
instance.findFile();
assertEquals(1, count);
verify(mockFile, never()).listFiles();
}
@Test
public void testFindFile_for_a_multiple_files() {
when(mockFile.isDirectory()).thenReturn(true).thenReturn(false);
when(mockFile.listFiles()).thenReturn(fileList());
instance.findFile();
assertEquals(2, count);
}
private File[] fileList() {
File[] array = new File[2];
array[0] = mockFile;
array[1] = mockFile;
return array;
}
}