Added test for CheckoutRefUseCase

This commit is contained in:
Abdelilah El Aissaoui 2023-04-21 00:05:00 +02:00
parent 3abfe69d4f
commit 5fd29fbc39
No known key found for this signature in database
GPG Key ID: 7587FC860F594869

View File

@ -0,0 +1,55 @@
package com.jetpackduba.gitnuro.git.branches
import com.jetpackduba.gitnuro.extensions.isBranch
import com.jetpackduba.gitnuro.extensions.simpleName
import io.mockk.*
import kotlinx.coroutines.runBlocking
import org.eclipse.jgit.api.CheckoutCommand
import org.eclipse.jgit.api.CreateBranchCommand
import org.eclipse.jgit.api.Git
import org.eclipse.jgit.lib.ObjectIdRef
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
class CheckoutRefUseCaseTest {
private val gitMock: Git = mockk()
private val refMock: ObjectIdRef.PeeledNonTag = mockk(relaxed = true)
@Test
fun `invokes git checkout when ref is a local branch`() {
val checkoutCommand = mockk<CheckoutCommand>(relaxed = true)
val branchName ="refs/heads/feature-branch"
every { refMock.name } returns branchName
every { gitMock.checkout() } returns checkoutCommand
every { checkoutCommand.setName(any()) } returns checkoutCommand
runBlocking {
CheckoutRefUseCase().invoke(gitMock, refMock)
}
verify { checkoutCommand.setName(branchName) }
}
@Test
fun `invokes git checkout when ref is a remote branch`() {
val checkoutCommand = mockk<CheckoutCommand>(relaxed = true)
val branchName = "refs/remotes/origin/feature-branch"
every { refMock.name } returns branchName
every { gitMock.checkout() } returns checkoutCommand
every { checkoutCommand.setCreateBranch(true) } returns checkoutCommand
every { checkoutCommand.setStartPoint(any() as String) } returns checkoutCommand
every { checkoutCommand.setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.SET_UPSTREAM) } returns checkoutCommand
runBlocking {
CheckoutRefUseCase().invoke(gitMock, refMock)
}
verify {
checkoutCommand.setCreateBranch(true)
checkoutCommand.setStartPoint(branchName)
checkoutCommand.setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.SET_UPSTREAM)
}
}
}