feat: implement workflow list/view/run
This commit is contained in:
parent
d445e55737
commit
79df4eb780
4 changed files with 541 additions and 0 deletions
122
cmd/actions_test.go
Normal file
122
cmd/actions_test.go
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSplitKeyValue(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "valid key=value",
|
||||
input: "environment=production",
|
||||
expected: []string{"environment", "production"},
|
||||
},
|
||||
{
|
||||
name: "key with empty value",
|
||||
input: "key=",
|
||||
expected: []string{"key", ""},
|
||||
},
|
||||
{
|
||||
name: "value with equals sign",
|
||||
input: "url=https://example.com?foo=bar",
|
||||
expected: []string{"url", "https://example.com?foo=bar"},
|
||||
},
|
||||
{
|
||||
name: "no equals sign",
|
||||
input: "invalid",
|
||||
expected: []string{"invalid"},
|
||||
},
|
||||
{
|
||||
name: "multiple equals signs",
|
||||
input: "a=b=c=d",
|
||||
expected: []string{"a", "b=c=d"},
|
||||
},
|
||||
{
|
||||
name: "empty string",
|
||||
input: "",
|
||||
expected: []string{""},
|
||||
},
|
||||
{
|
||||
name: "just equals sign",
|
||||
input: "=",
|
||||
expected: []string{"", ""},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := splitKeyValue(tt.input)
|
||||
if !reflect.DeepEqual(result, tt.expected) {
|
||||
t.Errorf("splitKeyValue(%q) = %v, want %v", tt.input, result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatStatus(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
status string
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
name: "success status",
|
||||
status: "success",
|
||||
expected: "✓ success",
|
||||
},
|
||||
{
|
||||
name: "failure status",
|
||||
status: "failure",
|
||||
expected: "✗ failure",
|
||||
},
|
||||
{
|
||||
name: "cancelled status",
|
||||
status: "cancelled",
|
||||
expected: "- cancelled",
|
||||
},
|
||||
{
|
||||
name: "skipped status",
|
||||
status: "skipped",
|
||||
expected: "○ skipped",
|
||||
},
|
||||
{
|
||||
name: "in_progress status",
|
||||
status: "in_progress",
|
||||
expected: "● in progress",
|
||||
},
|
||||
{
|
||||
name: "running status",
|
||||
status: "running",
|
||||
expected: "● in progress",
|
||||
},
|
||||
{
|
||||
name: "queued status",
|
||||
status: "queued",
|
||||
expected: "○ queued",
|
||||
},
|
||||
{
|
||||
name: "waiting status",
|
||||
status: "waiting",
|
||||
expected: "○ queued",
|
||||
},
|
||||
{
|
||||
name: "unknown status",
|
||||
status: "unknown",
|
||||
expected: "unknown",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := formatStatus(tt.status)
|
||||
if result != tt.expected {
|
||||
t.Errorf("formatStatus(%q) = %q, want %q", tt.status, result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue