Commit graph

11 commits

Author SHA1 Message Date
Babak K. Shandiz
cf40f9293d
chore(discussion/client): polish and cleanup tests
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-28 10:41:54 +01:00
Babak K. Shandiz
e263abfb2c
test(discussion/client): improve GetCommentReplies test coverage
Inline all JSON response helpers (getCommentRepliesResp, wrapRepliesBlock,
bareCommentNode, replyNode) to avoid cross-test coupling. Fix JSON response
shape to place "node" as sibling of "repository" under "data", matching the
real GraphQL query structure. Populate "maps all fields" with non-zero
values and use a single assert.Equal for the full Discussion struct.

Match real API error responses: discussions disabled returns NOT_FOUND on
discussion, node not found returns NOT_FOUND with null node, wrong-type
node returns empty object. Add missing test cases for repo not found and
first page newest reversal.

Move shared wantComments/wantTotal/wantCursor/wantNext/wantDirection fields
into assertDisc callbacks for both TestGetWithComments and
TestGetCommentReplies, giving each case full ownership of its assertions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-28 10:38:19 +01:00
Babak K. Shandiz
19369d0444
test(discussion/client): improve GetWithComments test coverage
Inline all JSON response helpers (getWithCommentsResp, wrapCommentsBlock,
commentNode) to avoid cross-test coupling. Add missing test cases for
empty comments, first page newest reversal, multiple replies on a single
comment, and repo not found. Populate the "maps comments with replies"
case with non-zero field values and use a single assert.Equal for the
full Discussion struct. Match real API error responses for discussions
disabled and repo not found cases. Rename wantDisc to assertDisc across
all client test functions and require it for non-error cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-28 10:38:19 +01:00
Babak K. Shandiz
573f3f0a63
test(discussion/test): use nil next page to match API behaviour
Signed-off-by: Babak K. Shandiz <babakks@github.com>
2026-04-28 10:38:19 +01:00
Babak K. Shandiz
45bd958f75
test(discussion/client): improve GetByNumber test coverage
Inline mock JSON responses, use non-default values for all fields to
verify mapping, add repo-not-found test case, and match real API
behaviour for discussions-disabled response (null discussion with
NOT_FOUND error).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-28 10:38:15 +01:00
Max Beizer
11130fd6be
test(discussion view): add tests for view command client methods and --replies mode
Add table-driven tests for:

Client (client_impl_test.go):
- TestGetByNumber: field mapping, discussions disabled
- TestGetWithComments: field mapping, forward/backward pagination,
  reply reversal in newest mode, discussions disabled
- TestGetCommentReplies: field mapping, forward/backward pagination,
  reply reversal, discussions disabled, nil node, wrong node type

Command (view_test.go):
- TestNewCmdView_repliesFlags: mutual exclusivity with --comments/--web,
  --order/--limit/--after require --comments or --replies, pagination
  flags work with --replies
- TestViewRun_replies: TTY/non-TTY/JSON output, pagination hints,
  routing assertion (GetCommentReplies called, not GetByNumber or
  GetWithComments)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-27 15:42:36 -05:00
Babak K. Shandiz
81117364ba
refactor(discussion/client): convert tests to httpStubs pattern
Replace responses/checkVarsFns with httpStubs func per test case in
TestList, TestSearch, and TestListCategories, matching the pattern used
in agent-task/capi tests. Expand inline JSON to heredoc, remove flower
box comments, and add "empty list" and "exact fit" test cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-24 14:19:19 +01:00
Max Beizer
45de7db4d5
style: run gofmt on client_impl_test.go
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-22 16:49:22 -05:00
Max Beizer
5db230b317
test(discussion): assert GQL variables, add Bot actor and limit>100 cases
- Replace false-positive filter tests with GraphQLQuery responders that
  assert on actual GQL variables (first, after, states, answered, orderBy,
  categoryId in List; query string qualifiers in Search)
- Add Bot actor test case (Bot.ID maps to DiscussionActor.ID, Name is empty)
- Add limit>100 test cases for both List and Search to verify the
  per-iteration first variable is set correctly (100 on page 1, remainder
  on page 2)
- Fix limit>100 bug in client_impl.go: move variables["first"] assignment
  inside the loop so each iteration caps at min(remaining, 100)
- Remove intStr helper; use strconv.Itoa directly

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-22 16:36:07 -05:00
Max Beizer
aa080ad28a
refactor(discussion): convert client tests to table-driven
Addresses babakks' review on PR #13252:
- Convert 18 individual test functions to 3 table-driven functions
- Replace ptr helper with new(value) syntax throughout
- Assert all Discussion struct fields in success cases
- Add after-cursor test cases for pagination
- Fold pagination tests into table structure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-22 15:04:59 -05:00
Max Beizer
35e8cc93cf
test(discussion): add httpmock unit tests for DiscussionClient
Add comprehensive httpmock-based unit tests for the client package covering:
- List: success path, discussions disabled, limit/filter validation, pagination
- Search: success path, filter validation, pagination
- ListCategories: success path, discussions disabled

Tests use httpmock.Registry with defer Verify(t) to ensure all stubs
are exercised, following the established testing pattern in this repo.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-21 09:12:31 -05:00