package com.beijunyi.parallelgit.utils;
import java.io.IOException;
import com.beijunyi.parallelgit.AbstractParallelGitTest;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.ReflogEntry;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class BranchUtilsGetLogTest extends AbstractParallelGitTest {
@Before
public void setUp() throws Exception {
initFileRepository(false);
}
private void createCommits(String branch, int count) throws IOException {
for(int i = 0; i < count; i++) {
writeSomethingToCache();
commitToBranch(branch, null);
}
}
@Test
public void getLogs_theResultShouldContainAllRefLogs() throws IOException {
createCommits("test_branch", 3);
assertEquals(3, BranchUtils.getLogs("test_branch", repo).size());
}
@Test
public void getLogsWithMaxLimit_theResultShouldContainNoMoreThanTheSpecifiedLimit() throws IOException {
createCommits("test_branch", 3);
assertEquals(2, BranchUtils.getLogs("test_branch", 2, repo).size());
}
@Test
public void getLastLog_theResultShouldReferenceToTheLastCommitCreated() throws IOException {
writeSomethingToCache();
AnyObjectId firstCommit = commitToBranch("test_branch", "first commit", null);
AnyObjectId secondLastCommit = commitToBranch("test_branch", "second commit", firstCommit);
AnyObjectId lastCommit = commitToBranch("test_branch", "third commit", secondLastCommit);
ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
assert lastRefLog != null;
assertEquals(lastCommit, lastRefLog.getNewId());
}
@Test
public void getLastLogWhenThereIsNoRefLog_theResultShouldBeNull() throws IOException {
assertNull(BranchUtils.getLastLog("test_branch", repo));
}
}