package usecases;
import java.io.IOException;
import java.net.URI;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.util.Collections;
import com.beijunyi.parallelgit.AbstractParallelGitTest;
import com.beijunyi.parallelgit.filesystem.GitFileSystem;
import com.beijunyi.parallelgit.filesystem.utils.GfsUriBuilder;
import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.Before;
import org.junit.Test;
import static com.beijunyi.parallelgit.filesystem.GitFileSystemProvider.*;
import static java.util.Collections.singletonMap;
import static org.junit.Assert.*;
public class FileSystemsTest extends AbstractParallelGitTest {
private RevCommit head;
@Before
public void setupRepository() throws IOException {
head = initFileRepository(true);
}
@Test
public void newFileSystemFromUri_theResultFileSystemShouldBaseOnTheSpecifiedPath() throws IOException {
URI uri = GfsUriBuilder.prepare()
.repository(repoDir)
.build();
FileSystem fs = FileSystems.newFileSystem(uri, Collections.<String, String>emptyMap());
assertTrue(fs instanceof GitFileSystem);
assertEquals(repoDir, ((GitFileSystem)fs).getRepository().getDirectory());
}
@Test
public void newFileSystemFromUriWithBranchParam_theResultFileSystemShouldBeAttachedToTheSpecifiedBranch() throws IOException {
URI uri = GfsUriBuilder.prepare()
.repository(repoDir)
.build();
FileSystem fs = FileSystems.newFileSystem(uri, singletonMap(BRANCH, "test_branch"));
assertEquals("test_branch", ((GitFileSystem)fs).getStatusProvider().branch());
}
@Test
public void newFileSystemFromUriWithCommitParam_theResultFileSystemHeadCommitShouldBeTheSpecifiedCommit() throws IOException {
URI uri = GfsUriBuilder.prepare()
.repository(repoDir)
.build();
FileSystem fs = FileSystems.newFileSystem(uri, singletonMap(COMMIT, head.name()));
assertEquals(head, ((GitFileSystem)fs).getStatusProvider().commit());
}
@Test
public void newFileSystemFromPath_theResultFileSystemShouldBaseOnTheSpecifiedPath() throws IOException {
FileSystem fs = FileSystems.newFileSystem(repoDir.toPath(), null);
assertTrue(fs instanceof GitFileSystem);
assertEquals(repoDir, ((GitFileSystem)fs).getRepository().getDirectory());
}
}