This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/server/handlers/workflow_hooks_test.go
Jeffrey Smith 983d761bbe
All checks were successful
CI/CD / detect-changes (push) Successful in 4s
CI/CD / test-frontend (push) Has been skipped
CI/CD / test-runners (push) Has been skipped
CI/CD / e2e-smoke (push) Has been skipped
CI/CD / test-go-pg (push) Successful in 2m51s
CI/CD / test-sqlite (push) Successful in 3m1s
CI/CD / build-and-deploy (push) Successful in 1m17s
Feat v0.9.2 converter consolidation (#75)
Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
2026-04-03 14:32:14 +00:00

123 lines
3.3 KiB
Go

package handlers
import (
"encoding/json"
"testing"
"go.starlark.net/starlark"
"armature/sandbox"
)
// ── parseOnAdvanceResult ────────────────────
func TestParseOnAdvanceResult_None(t *testing.T) {
result := parseOnAdvanceResult(starlark.None)
if result != nil {
t.Errorf("expected nil for None, got %+v", result)
}
}
func TestParseOnAdvanceResult_Nil(t *testing.T) {
result := parseOnAdvanceResult(nil)
if result != nil {
t.Errorf("expected nil for nil, got %+v", result)
}
}
func TestParseOnAdvanceResult_Error(t *testing.T) {
d := starlark.NewDict(1)
_ = d.SetKey(starlark.String("error"), starlark.String("hook rejected"))
result := parseOnAdvanceResult(d)
if result == nil {
t.Fatal("expected non-nil result")
}
if result.Error != "hook rejected" {
t.Errorf("expected error='hook rejected', got %q", result.Error)
}
}
func TestParseOnAdvanceResult_EnrichedStageData(t *testing.T) {
inner := starlark.NewDict(2)
_ = inner.SetKey(starlark.String("title"), starlark.String("Bug Triage"))
_ = inner.SetKey(starlark.String("conversation_id"), starlark.String("conv-123"))
d := starlark.NewDict(1)
_ = d.SetKey(starlark.String("stage_data"), inner)
result := parseOnAdvanceResult(d)
if result == nil {
t.Fatal("expected non-nil result")
}
if result.Error != "" {
t.Errorf("unexpected error: %q", result.Error)
}
if result.EnrichedData == nil {
t.Fatal("expected enriched data")
}
var data map[string]any
if err := json.Unmarshal(result.EnrichedData, &data); err != nil {
t.Fatalf("unmarshal enriched data: %v", err)
}
if data["title"] != "Bug Triage" {
t.Errorf("expected title='Bug Triage', got %v", data["title"])
}
if data["conversation_id"] != "conv-123" {
t.Errorf("expected conversation_id='conv-123', got %v", data["conversation_id"])
}
}
func TestParseOnAdvanceResult_NonDict(t *testing.T) {
result := parseOnAdvanceResult(starlark.String("unexpected"))
if result != nil {
t.Errorf("expected nil for non-dict, got %+v", result)
}
}
func TestParseOnAdvanceResult_EmptyDict(t *testing.T) {
d := starlark.NewDict(0)
result := parseOnAdvanceResult(d)
if result != nil {
t.Errorf("expected nil for empty dict, got %+v", result)
}
}
// ── DictToMap ───────────────────────
func TestStarlarkDictToMap_NestedStructure(t *testing.T) {
inner := starlark.NewDict(1)
_ = inner.SetKey(starlark.String("key"), starlark.String("value"))
members := starlark.NewList([]starlark.Value{
starlark.String("alice"),
starlark.String("bob"),
})
outer := starlark.NewDict(3)
_ = outer.SetKey(starlark.String("title"), starlark.String("Test"))
_ = outer.SetKey(starlark.String("nested"), inner)
_ = outer.SetKey(starlark.String("members"), members)
m := sandbox.DictToMap(outer)
if m["title"] != "Test" {
t.Errorf("expected title='Test', got %v", m["title"])
}
nested, ok := m["nested"].(map[string]any)
if !ok {
t.Fatalf("expected nested to be map, got %T", m["nested"])
}
if nested["key"] != "value" {
t.Errorf("expected nested.key='value', got %v", nested["key"])
}
membersList, ok := m["members"].([]any)
if !ok {
t.Fatalf("expected members to be []any, got %T", m["members"])
}
if len(membersList) != 2 {
t.Errorf("expected 2 members, got %d", len(membersList))
}
}