109 lines
3.0 KiB
Go
109 lines
3.0 KiB
Go
package tui
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"superwork-tui/internal/files"
|
|
"superwork-tui/internal/git"
|
|
"superwork-tui/internal/issue"
|
|
)
|
|
|
|
func TestBranchSyncKey_ReturnsCmd(t *testing.T) {
|
|
m := makeLoadedModel([]issue.Issue{{Number: 1, Column: issue.ColumnTodo}}, 0, 0)
|
|
_, cmd := sendKey(m, "S")
|
|
if cmd == nil {
|
|
t.Error("S key should return a branchSyncCheckCmd")
|
|
}
|
|
}
|
|
|
|
func TestEnvLockKey_ReturnsCmd(t *testing.T) {
|
|
m := makeLoadedModel([]issue.Issue{{Number: 1, Column: issue.ColumnTodo}}, 0, 0)
|
|
_, cmd := sendKey(m, "E")
|
|
if cmd == nil {
|
|
t.Error("E key should return an envLockToggleCmd")
|
|
}
|
|
}
|
|
|
|
func TestPrDiffKey_NoIssue_NoOp(t *testing.T) {
|
|
m := makeLoadedModel([]issue.Issue{{Number: 1, Column: issue.ColumnTodo}}, 0, 0)
|
|
iss := issue.Issue{Number: 1, Column: issue.ColumnTodo}
|
|
m.state = stateDetail
|
|
m.detailIss = &iss
|
|
m2, cmd := sendKey(m, "g")
|
|
if cmd != nil {
|
|
t.Error("g key with no PR should not return cmd")
|
|
}
|
|
if m2.statusMsg == "" {
|
|
t.Error("g key with no PR should set statusMsg")
|
|
}
|
|
}
|
|
|
|
func TestPrDiffKey_WithPR_ReturnsCmd(t *testing.T) {
|
|
m := makeLoadedModel([]issue.Issue{}, 0, 0)
|
|
iss := issue.Issue{Number: 5, Column: issue.ColumnReview, PR: "42", Branch: "feature/abc"}
|
|
m.state = stateDetail
|
|
m.detailIss = &iss
|
|
_, cmd := sendKey(m, "g")
|
|
if cmd == nil {
|
|
t.Error("g key with PR and Branch should return prDiffSummaryCmd")
|
|
}
|
|
}
|
|
|
|
func TestBranchSyncStatusMsg_SetsConfirm(t *testing.T) {
|
|
m := makeLoadedModel([]issue.Issue{}, 0, 0)
|
|
msg := branchSyncStatusMsg{
|
|
status: git.BranchSyncStatus{
|
|
Behind: 3,
|
|
DevBranch: "dev",
|
|
AutoBuildBranch: "build",
|
|
},
|
|
}
|
|
next, _ := m.Update(msg)
|
|
m2 := next.(Model)
|
|
if m2.confirmPend == nil {
|
|
t.Error("branchSyncStatusMsg should set confirmPend")
|
|
}
|
|
if m2.confirmPend.action != confirmBranchSync {
|
|
t.Errorf("action = %v, want confirmBranchSync", m2.confirmPend.action)
|
|
}
|
|
}
|
|
|
|
func TestBranchSyncStatusMsg_Unavailable_SetsStatus(t *testing.T) {
|
|
m := makeLoadedModel([]issue.Issue{}, 0, 0)
|
|
msg := branchSyncStatusMsg{
|
|
status: git.BranchSyncStatus{Unavailable: true, Reason: "not a repo"},
|
|
}
|
|
next, _ := m.Update(msg)
|
|
m2 := next.(Model)
|
|
if m2.confirmPend != nil {
|
|
t.Error("unavailable status should not set confirmPend")
|
|
}
|
|
if m2.statusMsg == "" {
|
|
t.Error("unavailable status should set statusMsg")
|
|
}
|
|
}
|
|
|
|
func TestEnvLockDoneMsg_UpdatesState(t *testing.T) {
|
|
m := makeLoadedModel([]issue.Issue{}, 0, 0)
|
|
msg := envLockDoneMsg{locked: true, result: files.EnvLockResult{Total: 3, OK: []string{"a", "b", "c"}}}
|
|
next, _ := m.Update(msg)
|
|
m2 := next.(Model)
|
|
if !m2.envLocked {
|
|
t.Error("envLocked should be true after lock")
|
|
}
|
|
if m2.statusMsg == "" {
|
|
t.Error("statusMsg should be set")
|
|
}
|
|
}
|
|
|
|
func TestBranchSyncConfirm_Y_RunsSync(t *testing.T) {
|
|
m := makeLoadedModel([]issue.Issue{}, 0, 0)
|
|
status := git.BranchSyncStatus{Behind: 1, DevBranch: "dev", AutoBuildBranch: "build"}
|
|
m.branchSyncPending = &status
|
|
m.confirmPend = &confirmPending{action: confirmBranchSync}
|
|
_, cmd := sendKey(m, "y")
|
|
if cmd == nil {
|
|
t.Error("confirming branchSync with y should return branchSyncRunCmd")
|
|
}
|
|
}
|