Added more tests to branches manager
This commit is contained in:
parent
a9accafafb
commit
06b4b883de
@ -3,6 +3,7 @@ package app.git
|
||||
import app.TestUtils.copyDir
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.eclipse.jgit.api.Git
|
||||
import org.eclipse.jgit.lib.ObjectId
|
||||
import org.eclipse.jgit.lib.Repository
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.Assertions.*
|
||||
@ -10,14 +11,33 @@ import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
import java.io.File
|
||||
|
||||
private const val DEFAULT_REMOTE = "origin"
|
||||
private const val DEFAULT_PRIMARY_BRANCH = "main"
|
||||
private const val DEFAULT_SECONDARY_BRANCH = "TestBranch1"
|
||||
|
||||
private const val LOCAL_PREFIX = "refs/heads"
|
||||
private const val DEFAULT_PRIMARY_BRANCH_FULL_NAME = "$LOCAL_PREFIX/$DEFAULT_PRIMARY_BRANCH"
|
||||
private const val DEFAULT_SECONDARY_BRANCH_FULL_NAME = "$LOCAL_PREFIX/$DEFAULT_SECONDARY_BRANCH"
|
||||
|
||||
private const val INITIAL_LOCAL_BRANCH_COUNT = 1
|
||||
private const val INITIAL_REMOTE_BRANCH_COUNT = 2
|
||||
|
||||
private const val REMOTE_PREFIX = "refs/remotes/$DEFAULT_REMOTE"
|
||||
|
||||
private val initialRemoteBranches = listOf(
|
||||
"$REMOTE_PREFIX/$DEFAULT_PRIMARY_BRANCH",
|
||||
"$REMOTE_PREFIX/$DEFAULT_SECONDARY_BRANCH",
|
||||
)
|
||||
|
||||
@ExtendWith(BeforeRepoAllTestsExtension::class)
|
||||
class BranchesManagerTest {
|
||||
private lateinit var repo: Repository
|
||||
private lateinit var git: Git
|
||||
private lateinit var branchesManagerTestDir: File
|
||||
private val branchesManager = BranchesManager()
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
fun setUp() {
|
||||
branchesManagerTestDir = File(tempDir, "branches_manager")
|
||||
branchesManagerTestDir.mkdir()
|
||||
|
||||
@ -28,57 +48,106 @@ class BranchesManagerTest {
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
fun clean() {
|
||||
fun tearDown() {
|
||||
repo.close()
|
||||
branchesManagerTestDir.deleteRecursively()
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun currentBranchRef() = runBlocking {
|
||||
val branchesManager = BranchesManager()
|
||||
val currentBranchRef = branchesManager.currentBranchRef(Git(repo))
|
||||
assertEquals(currentBranchRef?.name, "refs/heads/main")
|
||||
assertEquals(currentBranchRef?.name, "refs/heads/$DEFAULT_PRIMARY_BRANCH")
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun getBranches() = runBlocking {
|
||||
val branchesManager = BranchesManager()
|
||||
val branches = branchesManager.getBranches(git)
|
||||
assertEquals(branches.count(), 1)
|
||||
val containsMain = branches.any { it.name == "refs/heads/main" }
|
||||
assertEquals(branches.count(), INITIAL_LOCAL_BRANCH_COUNT)
|
||||
val containsMain = branches.any { it.name == "refs/heads/$DEFAULT_PRIMARY_BRANCH" }
|
||||
assert(containsMain) { println("Error: Branch main does not exist") }
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun checkoutRef() = runBlocking {
|
||||
val remoteBranchToCheckout = "$REMOTE_PREFIX/$DEFAULT_SECONDARY_BRANCH"
|
||||
|
||||
var currentBranch = branchesManager.currentBranchRef(git)
|
||||
assertEquals(currentBranch?.name, DEFAULT_PRIMARY_BRANCH_FULL_NAME)
|
||||
|
||||
// Checkout a remote branch
|
||||
var branchToCheckout = branchesManager.remoteBranches(git).first { it.name == remoteBranchToCheckout}
|
||||
branchesManager.checkoutRef(git, branchToCheckout)
|
||||
|
||||
currentBranch = branchesManager.currentBranchRef(git)
|
||||
assertEquals(DEFAULT_SECONDARY_BRANCH_FULL_NAME, currentBranch?.name)
|
||||
|
||||
// Checkout a local branch
|
||||
branchToCheckout = branchesManager.getBranches(git).first { it.name == DEFAULT_PRIMARY_BRANCH_FULL_NAME}
|
||||
branchesManager.checkoutRef(git, branchToCheckout)
|
||||
currentBranch = branchesManager.currentBranchRef(git)
|
||||
|
||||
assertEquals(DEFAULT_PRIMARY_BRANCH_FULL_NAME, currentBranch?.name)
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun createBranch() = runBlocking {
|
||||
val branchName = "test"
|
||||
val branchesManager = BranchesManager()
|
||||
branchesManager.createBranch(git, branchName)
|
||||
|
||||
val branches = branchesManager.getBranches(git)
|
||||
assertEquals(branches.count(), 2)
|
||||
assertEquals(INITIAL_LOCAL_BRANCH_COUNT + 1, branches.count())
|
||||
val containsNewBranch = branches.any { it.name == "refs/heads/$branchName" }
|
||||
|
||||
assert(containsNewBranch) { println("Error: Branch $branchName does not exist") }
|
||||
}
|
||||
//
|
||||
// @org.junit.jupiter.api.Test
|
||||
// fun createBranchOnCommit() {
|
||||
// }
|
||||
//
|
||||
// @org.junit.jupiter.api.Test
|
||||
// fun deleteBranch() {
|
||||
// }
|
||||
//
|
||||
// @org.junit.jupiter.api.Test
|
||||
// fun deleteLocallyRemoteBranches() {
|
||||
// }
|
||||
//
|
||||
// @org.junit.jupiter.api.Test
|
||||
// fun remoteBranches() {
|
||||
// }
|
||||
//
|
||||
// @org.junit.jupiter.api.Test
|
||||
// fun checkoutRef() {
|
||||
// }
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun createBranchOnCommit() = runBlocking {
|
||||
val branchName = "test"
|
||||
val commitId = "f66757e23dc5c43eccbe84d02c58245406c8f8f4"
|
||||
|
||||
val objectId = ObjectId.fromString(commitId)
|
||||
val revCommit = repo.parseCommit(objectId)
|
||||
branchesManager.createBranchOnCommit(git, branchName, revCommit)
|
||||
|
||||
val branches = branchesManager.getBranches(git)
|
||||
assertEquals(INITIAL_LOCAL_BRANCH_COUNT + 1, branches.count())
|
||||
val newBranch = branches.firstOrNull { it.name == "refs/heads/$branchName" }
|
||||
|
||||
assertNotNull(newBranch)
|
||||
assertEquals(commitId, newBranch?.objectId?.name())
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun deleteBranch() = runBlocking {
|
||||
val branchToDeleteName = "branch_to_delete"
|
||||
val currentBranch = branchesManager.currentBranchRef(git) // should be "main"
|
||||
assertNotNull(currentBranch)
|
||||
|
||||
val newBranch = branchesManager.createBranch(git, branchToDeleteName)
|
||||
branchesManager.checkoutRef(git, currentBranch!!)
|
||||
|
||||
branchesManager.deleteBranch(git, newBranch)
|
||||
|
||||
val branches = branchesManager.getBranches(git)
|
||||
assertEquals(INITIAL_LOCAL_BRANCH_COUNT, branches.count())
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun remoteBranches() = runBlocking {
|
||||
val remoteBranches = branchesManager.remoteBranches(git)
|
||||
assertEquals(remoteBranches.count(), INITIAL_REMOTE_BRANCH_COUNT)
|
||||
remoteBranches.forEach { ref ->
|
||||
assert(initialRemoteBranches.contains(ref.name))
|
||||
}
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun deleteLocallyRemoteBranches() = runBlocking {
|
||||
branchesManager.deleteLocallyRemoteBranches(git, initialRemoteBranches)
|
||||
|
||||
val branches = branchesManager.remoteBranches(git)
|
||||
assertEquals(0, branches.count())
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user