Files
Assistant/modules/work/application/agent_dispatch_test.go
m 7e703fe4b4
CI / test (push) Successful in 27s
CI / test (pull_request) Successful in 24s
chore: format bridge tests
2026-08-22 15:55:26 +03:00

43 lines
1.6 KiB
Go

package application
import (
"context"
"testing"
"time"
"git.cin.su/m/Assistant/contracts/work"
)
type bridgeStore struct {
callbacks []work.AgentCallback
lease work.AgentLease
}
func (s *bridgeStore) SaveDispatchIntent(context.Context, work.AgentDispatchIntent) error { return nil }
func (s *bridgeStore) SaveAgentLease(_ context.Context, lease work.AgentLease) error {
s.lease = lease
return nil
}
func (s *bridgeStore) AcceptAgentCallback(_ context.Context, callback work.AgentCallback) error {
s.callbacks = append(s.callbacks, callback)
return nil
}
type bridgeExecutor struct{}
func (bridgeExecutor) Execute(context.Context, work.AgentExecutionRequest) (work.AgentExecutionResult, error) {
return work.AgentExecutionResult{State: work.AgentExecutionCompleted, Summary: "done", ObservedAtUnixMillis: 2}, nil
}
func TestExecuteAgentDispatchPersistsLeaseAndBridgeCallbacks(t *testing.T) {
store := &bridgeStore{}
now := time.UnixMilli(1)
result, err := ExecuteAgentDispatch(context.Background(), store, bridgeExecutor{}, work.AgentDispatchIntent{DispatchID: "d", IdempotencyKey: "i", DelegationID: "del", RunID: "run", ImplementationID: "impl", ImplementationRevision: 1, SourceRevision: "source", WorktreeID: "tree", VerificationPlanRef: "verify", CreatedAtUnixMillis: 1}, "worker", 1, now, time.Minute)
if err != nil || result.State != work.AgentExecutionCompleted {
t.Fatalf("result=%+v err=%v", result, err)
}
if len(store.callbacks) != 2 || store.callbacks[0].Kind != work.AgentCallbackHeartbeat || store.callbacks[1].Kind != work.AgentCallbackResult {
t.Fatalf("callbacks=%+v", store.callbacks)
}
}