Introduce abstraction for repository location

This commit is contained in:
René Pfeuffer
2019-05-09 14:08:18 +02:00
parent d29fa32c8e
commit c44d38cc61
15 changed files with 133 additions and 63 deletions

View File

@@ -91,7 +91,7 @@ public class AbstractTestBase
contextProvider = MockUtil.getSCMContextProvider(tempDirectory);
fileSystem = new DefaultFileSystem();
InitialRepositoryLocationResolver initialRepoLocationResolver = new InitialRepositoryLocationResolver();
repositoryLocationResolver = new RepositoryLocationResolver(contextProvider, repositoryDAO, initialRepoLocationResolver);
repositoryLocationResolver = new TempDirRepositoryLocationResolver(tempDirectory);
postSetUp();
}
@@ -254,4 +254,5 @@ public class AbstractTestBase
subjectThreadState = createThreadState(subject);
subjectThreadState.bind();
}
}

View File

@@ -74,7 +74,7 @@ public abstract class ManagerTestBase<T extends ModelObject>
contextProvider = MockUtil.getSCMContextProvider(temp);
InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver();
RepositoryDAO repoDao = mock(RepositoryDAO.class);
locationResolver = new RepositoryLocationResolver(contextProvider, repoDao ,initialRepositoryLocationResolver);
locationResolver = new TempDirRepositoryLocationResolver(temp);
manager = createManager();
manager.init(contextProvider);
}

View File

@@ -0,0 +1,21 @@
package sonia.scm;
import sonia.scm.repository.BasicRepositoryLocationResolver;
import sonia.scm.repository.RepositoryLocationResolver;
import java.io.File;
import java.nio.file.Path;
public class TempDirRepositoryLocationResolver extends BasicRepositoryLocationResolver {
private final File tempDirectory;
public TempDirRepositoryLocationResolver(File tempDirectory) {
super(Path.class);
this.tempDirectory = tempDirectory;
}
@Override
protected <T> RepositoryLocationResolverInstance<T> create(Class<T> type) {
return repositoryId -> (T) tempDirectory.toPath();
}
}

View File

@@ -44,6 +44,7 @@ import java.io.IOException;
import java.nio.file.Path;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -78,7 +79,10 @@ public abstract class SimpleRepositoryHandlerTestBase extends AbstractTestBase {
locationResolver = mock(RepositoryLocationResolver.class);
when(locationResolver.getPath(anyString())).then(ic -> {
RepositoryLocationResolver.RepositoryLocationResolverInstance instanceMock = mock(RepositoryLocationResolver.RepositoryLocationResolverInstance.class);
when(locationResolver.forClass(any())).thenReturn(instanceMock);
when(instanceMock.getLocation(anyString())).then(ic -> {
String id = ic.getArgument(0);
return baseDirectory.toPath().resolve(id);
});