test(02-01): add failing tests for protocol types, registry, and label store
- TestRequestMarshal, TestResponseWithSessions - TestRegistryUpdate, TestRegistryWaitingSince, TestRegistryRemoveStale - TestLabelStoreSetGet, TestLabelStorePersistence, TestLabelStoreLoadMissing
This commit is contained in:
103
protocol_test.go
Normal file
103
protocol_test.go
Normal file
@@ -0,0 +1,103 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestRequestMarshal(t *testing.T) {
|
||||
req := Request{Action: "list"}
|
||||
|
||||
data, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
t.Fatalf("marshal: %v", err)
|
||||
}
|
||||
|
||||
var got Request
|
||||
if err := json.Unmarshal(data, &got); err != nil {
|
||||
t.Fatalf("unmarshal: %v", err)
|
||||
}
|
||||
|
||||
if got.Action != "list" {
|
||||
t.Errorf("action = %q, want %q", got.Action, "list")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequestMarshalWithArgs(t *testing.T) {
|
||||
args, _ := json.Marshal(LabelArgs{SessionID: "abc", Label: "review MR"})
|
||||
req := Request{Action: "label", Args: args}
|
||||
|
||||
data, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
t.Fatalf("marshal: %v", err)
|
||||
}
|
||||
|
||||
var got Request
|
||||
if err := json.Unmarshal(data, &got); err != nil {
|
||||
t.Fatalf("unmarshal: %v", err)
|
||||
}
|
||||
|
||||
if got.Action != "label" {
|
||||
t.Errorf("action = %q, want %q", got.Action, "label")
|
||||
}
|
||||
|
||||
var la LabelArgs
|
||||
if err := json.Unmarshal(got.Args, &la); err != nil {
|
||||
t.Fatalf("unmarshal args: %v", err)
|
||||
}
|
||||
if la.SessionID != "abc" || la.Label != "review MR" {
|
||||
t.Errorf("args = %+v, want {abc, review MR}", la)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResponseWithSessions(t *testing.T) {
|
||||
now := time.Now()
|
||||
resp := Response{
|
||||
OK: true,
|
||||
Sessions: []SessionInfo{
|
||||
{
|
||||
PID: 1234,
|
||||
SessionID: "sess-1",
|
||||
Cwd: "/home/user/project",
|
||||
GitBranch: "main",
|
||||
State: "Working",
|
||||
Preview: "Building...",
|
||||
Workspace: "3",
|
||||
Label: "feature-x",
|
||||
WaitingSince: &now,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
data, err := json.Marshal(resp)
|
||||
if err != nil {
|
||||
t.Fatalf("marshal: %v", err)
|
||||
}
|
||||
|
||||
var got Response
|
||||
if err := json.Unmarshal(data, &got); err != nil {
|
||||
t.Fatalf("unmarshal: %v", err)
|
||||
}
|
||||
|
||||
if !got.OK {
|
||||
t.Error("ok = false, want true")
|
||||
}
|
||||
if len(got.Sessions) != 1 {
|
||||
t.Fatalf("sessions len = %d, want 1", len(got.Sessions))
|
||||
}
|
||||
|
||||
s := got.Sessions[0]
|
||||
if s.PID != 1234 {
|
||||
t.Errorf("pid = %d, want 1234", s.PID)
|
||||
}
|
||||
if s.Workspace != "3" {
|
||||
t.Errorf("workspace = %q, want %q", s.Workspace, "3")
|
||||
}
|
||||
if s.Label != "feature-x" {
|
||||
t.Errorf("label = %q, want %q", s.Label, "feature-x")
|
||||
}
|
||||
if s.WaitingSince == nil {
|
||||
t.Error("waiting_since = nil, want non-nil")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user