Polish --json support for agent-task view
- Rename 'status' field to 'state' for consistency with struct and UI - Add missing JSON fields: completedAt, user, pullRequestTitle, pullRequestState - Add test for nil PullRequest with --json - Expand existing JSON test to cover new fields Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
250d5a850a
commit
ceb8cf2561
2 changed files with 55 additions and 5 deletions
|
|
@ -106,12 +106,16 @@ type SessionError struct {
|
|||
var SessionFields = []string{
|
||||
"id",
|
||||
"name",
|
||||
"status",
|
||||
"state",
|
||||
"repository",
|
||||
"user",
|
||||
"createdAt",
|
||||
"updatedAt",
|
||||
"completedAt",
|
||||
"pullRequestNumber",
|
||||
"pullRequestUrl",
|
||||
"pullRequestTitle",
|
||||
"pullRequestState",
|
||||
}
|
||||
|
||||
// ExportData implements the exportable interface for JSON output.
|
||||
|
|
@ -123,7 +127,7 @@ func (s *Session) ExportData(fields []string) map[string]interface{} {
|
|||
data[f] = s.ID
|
||||
case "name":
|
||||
data[f] = s.Name
|
||||
case "status":
|
||||
case "state":
|
||||
data[f] = s.State
|
||||
case "repository":
|
||||
if s.PullRequest != nil && s.PullRequest.Repository != nil {
|
||||
|
|
@ -131,10 +135,22 @@ func (s *Session) ExportData(fields []string) map[string]interface{} {
|
|||
} else {
|
||||
data[f] = nil
|
||||
}
|
||||
case "user":
|
||||
if s.User != nil {
|
||||
data[f] = s.User.Login
|
||||
} else {
|
||||
data[f] = nil
|
||||
}
|
||||
case "createdAt":
|
||||
data[f] = s.CreatedAt
|
||||
case "updatedAt":
|
||||
data[f] = s.LastUpdatedAt
|
||||
case "completedAt":
|
||||
if s.CompletedAt.IsZero() {
|
||||
data[f] = nil
|
||||
} else {
|
||||
data[f] = s.CompletedAt
|
||||
}
|
||||
case "pullRequestNumber":
|
||||
if s.PullRequest != nil {
|
||||
data[f] = s.PullRequest.Number
|
||||
|
|
@ -147,6 +163,18 @@ func (s *Session) ExportData(fields []string) map[string]interface{} {
|
|||
} else {
|
||||
data[f] = nil
|
||||
}
|
||||
case "pullRequestTitle":
|
||||
if s.PullRequest != nil {
|
||||
data[f] = s.PullRequest.Title
|
||||
} else {
|
||||
data[f] = nil
|
||||
}
|
||||
case "pullRequestState":
|
||||
if s.PullRequest != nil {
|
||||
data[f] = s.PullRequest.State
|
||||
} else {
|
||||
data[f] = nil
|
||||
}
|
||||
default:
|
||||
data[f] = nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1231,7 +1231,7 @@ func Test_viewRun(t *testing.T) {
|
|||
Number: 42,
|
||||
URL: "https://github.com/OWNER/REPO/pull/42",
|
||||
Title: "Fix login bug",
|
||||
State: "OPEN",
|
||||
State: "MERGED",
|
||||
Repository: &api.PRRepository{
|
||||
NameWithOwner: "OWNER/REPO",
|
||||
},
|
||||
|
|
@ -1242,8 +1242,30 @@ func Test_viewRun(t *testing.T) {
|
|||
}, nil
|
||||
}
|
||||
},
|
||||
wantOut: "{\"id\":\"some-session-id\",\"name\":\"Fix login bug\",\"pullRequestNumber\":42,\"pullRequestUrl\":\"https://github.com/OWNER/REPO/pull/42\",\"repository\":\"OWNER/REPO\",\"status\":\"completed\"}\n",
|
||||
jsonFields: []string{"id", "name", "status", "repository", "pullRequestNumber", "pullRequestUrl"},
|
||||
wantOut: "{\"id\":\"some-session-id\",\"name\":\"Fix login bug\",\"pullRequestNumber\":42,\"pullRequestState\":\"MERGED\",\"pullRequestTitle\":\"Fix login bug\",\"pullRequestUrl\":\"https://github.com/OWNER/REPO/pull/42\",\"repository\":\"OWNER/REPO\",\"state\":\"completed\",\"user\":\"testuser\"}\n",
|
||||
jsonFields: []string{"id", "name", "state", "repository", "user", "pullRequestNumber", "pullRequestUrl", "pullRequestTitle", "pullRequestState"},
|
||||
},
|
||||
{
|
||||
name: "json output with nil pull request",
|
||||
tty: false,
|
||||
opts: ViewOptions{
|
||||
SelectorArg: "some-session-id",
|
||||
SessionID: "some-session-id",
|
||||
},
|
||||
capiStubs: func(t *testing.T, m *capi.CapiClientMock) {
|
||||
m.GetSessionFunc = func(_ context.Context, id string) (*capi.Session, error) {
|
||||
return &capi.Session{
|
||||
ID: "some-session-id",
|
||||
Name: "New task",
|
||||
State: "in_progress",
|
||||
CreatedAt: sampleDate,
|
||||
LastUpdatedAt: sampleDate,
|
||||
ResourceType: "pull",
|
||||
}, nil
|
||||
}
|
||||
},
|
||||
wantOut: "{\"id\":\"some-session-id\",\"name\":\"New task\",\"pullRequestNumber\":null,\"pullRequestUrl\":null,\"repository\":null,\"state\":\"in_progress\",\"user\":null}\n",
|
||||
jsonFields: []string{"id", "name", "state", "repository", "user", "pullRequestNumber", "pullRequestUrl"},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue