package com.beijunyi.parallelgit.filesystem;
import java.io.IOException;
import com.beijunyi.parallelgit.utils.TreeUtils;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.junit.Test;
import static java.nio.file.Files.write;
import static org.junit.Assert.*;
public class GitFileSystemFlushTest extends PreSetupGitFileSystemTest {
@Test
public void flushWhenNoChangeIsMade_theResultShouldEqualToThePreviousTree() throws IOException {
AnyObjectId previousTree = gfs.getStatusProvider().commit().getTree();
assertEquals(previousTree, gfs.flush());
}
@Test
public void flushAfterChangeIsMade_theResultShouldNotEqualToThePreviousTree() throws IOException {
AnyObjectId previousTree = gfs.getStatusProvider().commit().getTree();
write(gfs.getPath("/some_file.txt"), someBytes());
assertNotEquals(previousTree, gfs.flush());
}
@Test
public void flushAfterChangeIsMade_theResultShouldReflectTheChanges() throws IOException {
byte[] expectedContent = someBytes();
write(gfs.getPath("/some_file.txt"), expectedContent);
AnyObjectId result = gfs.flush();
try(TreeWalk tw = TreeUtils.forPath("/some_file.txt", result, repo)) {
assert tw != null;
assertArrayEquals(expectedContent, repo.open(tw.getObjectId(0)).getBytes());
}
}
}