package marubinotto.piggydb.model.files;
import java.util.List;
import marubinotto.piggydb.fixture.mock.FileItemMock;
import marubinotto.piggydb.impl.FileRepositoryImpl;
import marubinotto.piggydb.model.FileRepository;
import marubinotto.piggydb.model.RepositoryTestBase;
import marubinotto.piggydb.model.entity.RawFragment;
import marubinotto.util.FileSystemUtils;
import org.junit.runners.Parameterized.Parameters;
public abstract class FileRepositoryTestBase
extends RepositoryTestBase<FileRepository> {
public FileRepositoryTestBase(RepositoryFactory<FileRepository> factory) {
super(factory);
}
@Parameters
public static List<Object[]> factories() {
return toParameters(
// RI
new RepositoryFactory<FileRepository>() {
public FileRepository create() throws Exception {
return new FileRepository.InMemory();
}
},
// Real file system
new RepositoryFactory<FileRepository>() {
public FileRepository create() throws Exception {
FileRepositoryImpl repository = new FileRepositoryImpl();
repository.setBaseDirectory(FileSystemUtils.getEmptyDirectory());
return repository;
}
},
// Memory
new RepositoryFactory<FileRepository>() {
public FileRepository create() throws Exception {
FileRepositoryImpl repository = new FileRepositoryImpl();
repository.setDatabasePath("mem:piggydb");
return repository;
}
}
);
}
protected void registerFile(long id, String fileName, String content)
throws Exception{
RawFragment fragment = new RawFragment();
fragment.setId(id);
fragment.setFileInput(new FileItemMock("file", fileName, content.getBytes()));
this.object.putFile(fragment);
}
}