Skip to content

Commit

Permalink
Merge pull request #273 from mattprecious/mattp/2025-02-24/branch-cre…
Browse files Browse the repository at this point in the history
…ate-test

Add BranchCreateTest
  • Loading branch information
mattprecious authored Feb 25, 2025
2 parents 13c7140 + d092098 commit f08604d
Showing 1 changed file with 111 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package com.mattprecious.stacker.test.command

import assertk.assertThat
import assertk.assertions.containsExactly
import assertk.assertions.containsExactlyInAnyOrder
import assertk.assertions.isFalse
import assertk.assertions.isTrue
import com.mattprecious.stacker.command.branch.branchCreate
import com.mattprecious.stacker.command.repo.repoInit
import com.mattprecious.stacker.db.Branch
import com.mattprecious.stacker.delegates.Optional
import com.mattprecious.stacker.test.util.gitCommit
import com.mattprecious.stacker.test.util.gitCreateAndCheckoutBranch
import com.mattprecious.stacker.test.util.gitInit
import com.mattprecious.stacker.test.util.withTestEnvironment
import kotlin.test.Test

class BranchCreateTest {
@Test
fun branchFromTrunk() = withTestEnvironment {
gitInit()
val mainSha = gitCommit("Empty")
testCommand({ repoInit("main", Optional.None) })

testCommand({ branchCreate("change-a") }) {
awaitFrame("")
assertThat(awaitResult()).isTrue()
}

withDatabase {
assertThat(it.branchQueries.selectAll().executeAsList()).containsExactlyInAnyOrder(
Branch(
name = "main",
parent = null,
parentSha = null,
prNumber = null,
hasAskedToDelete = false,
),
Branch(
name = "change-a",
parent = "main",
parentSha = mainSha.long,
prNumber = null,
hasAskedToDelete = false,
),
)
}
}

@Test
fun branchFromNonTrunkBranch() = withTestEnvironment {
gitInit()
val mainSha = gitCommit("Empty")
testCommand({ repoInit("main", Optional.None) })
testCommand({ branchCreate("change-a") })
val parentSha = gitCommit("Change A")

testCommand({ branchCreate("change-b") }) {
awaitFrame("")
assertThat(awaitResult()).isTrue()
}

withDatabase {
assertThat(it.branchQueries.selectAll().executeAsList()).containsExactlyInAnyOrder(
Branch(
name = "main",
parent = null,
parentSha = null,
prNumber = null,
hasAskedToDelete = false,
),
Branch(
name = "change-a",
parent = "main",
parentSha = mainSha.long,
prNumber = null,
hasAskedToDelete = false,
),
Branch(
name = "change-b",
parent = "change-a",
parentSha = parentSha.long,
prNumber = null,
hasAskedToDelete = false,
),
)
}
}

@Test
fun branchFromUntrackedBranch() = withTestEnvironment {
gitInit()
gitCommit("Empty")
testCommand({ repoInit("main", Optional.None) })
gitCreateAndCheckoutBranch("change-a")

testCommand({ branchCreate("change-b") }) {
awaitFrame(
static = "Cannot branch from change-a since it is not tracked. Please track with st branch track.",
output = "",
)

assertThat(awaitResult()).isFalse()
}

withDatabase {
assertThat(it.branchQueries.selectAll().executeAsList().map { it.name })
.containsExactly("main")
}
}
}

0 comments on commit f08604d

Please sign in to comment.