You've already forked agentic-coding-workflow
feat(workspace): GitOpsService for status/commit/push on main+worktree
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package workspace
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/yan1h/agent-coding-workflow/internal/infra/git"
|
||||
)
|
||||
|
||||
func newGitOpsSvc(t *testing.T) (*gitOpsService, *fakeRepo, *fakeGit, uuid.UUID) {
|
||||
t.Helper()
|
||||
pa := &fakePA{pid: uuid.New(), canRead: true, canWrite: true}
|
||||
gitr := &fakeGit{}
|
||||
repo := newFakeRepo()
|
||||
wsID := uuid.New()
|
||||
repo.wss[wsID] = &Workspace{ID: wsID, ProjectID: pa.pid, MainPath: "/data/main", DefaultBranch: "main"}
|
||||
cred := func(_ context.Context, _ uuid.UUID) (*git.Credential, error) {
|
||||
return &git.Credential{Kind: git.CredentialNone}, nil
|
||||
}
|
||||
svc := NewGitOpsService(repo, noopAudit{}, gitr, pa, cred).(*gitOpsService)
|
||||
return svc, repo, gitr, wsID
|
||||
}
|
||||
|
||||
func TestGitOps_CommitOnMain_NoPush(t *testing.T) {
|
||||
t.Parallel()
|
||||
svc, _, _, wsID := newGitOpsSvc(t)
|
||||
sha, err := svc.CommitOnMain(context.Background(), Caller{UserID: uuid.New()}, wsID, CommitInput{Message: "x", AddAll: true})
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, sha)
|
||||
}
|
||||
|
||||
func TestGitOps_CommitOnMain_WithPush(t *testing.T) {
|
||||
t.Parallel()
|
||||
svc, _, _, wsID := newGitOpsSvc(t)
|
||||
_, err := svc.CommitOnMain(context.Background(), Caller{UserID: uuid.New()}, wsID, CommitInput{Message: "x", Push: true, AddAll: true})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestGitOps_CommitOnWorktree(t *testing.T) {
|
||||
t.Parallel()
|
||||
svc, repo, _, wsID := newGitOpsSvc(t)
|
||||
wtID := uuid.New()
|
||||
repo.wts[wtID] = &Worktree{ID: wtID, WorkspaceID: wsID, Branch: "feat", Path: "/data/feat", Status: WorktreeStatusIdle}
|
||||
sha, err := svc.CommitOnWorktree(context.Background(), Caller{UserID: uuid.New()}, wtID, CommitInput{Message: "y", AddAll: true})
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, sha)
|
||||
}
|
||||
|
||||
func TestGitOps_StatusOnMain(t *testing.T) {
|
||||
t.Parallel()
|
||||
svc, _, _, wsID := newGitOpsSvc(t)
|
||||
st, err := svc.StatusOnMain(context.Background(), Caller{UserID: uuid.New()}, wsID)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, st)
|
||||
}
|
||||
Reference in New Issue
Block a user