Skip to content

test(handlers): team/membership handlers to ≥95% coverage#152

Merged
mastermanas805 merged 1 commit into
masterfrom
coverage/api-handlers-team-95
May 22, 2026
Merged

test(handlers): team/membership handlers to ≥95% coverage#152
mastermanas805 merged 1 commit into
masterfrom
coverage/api-handlers-team-95

Conversation

@mastermanas805
Copy link
Copy Markdown
Member

Summary

  • Drives every team handler file to ≥95% statement coverage: teams.go (98.9%), team_self.go (100%), team_members.go (95.6%), team_settings.go (100%), team_summary.go (96.4%), team_deletion.go (97.0%).
  • Covers list/invite/remove/role/promote/leave members, RBAC invitation create/list/revoke/accept, team settings, team summary, and the deletion/restore lifecycle — every error, permission, and best-effort-audit branch.
  • Uses DB-backed tests for happy paths, sqlmock for DB-error/log branches the real schema can't produce, and an in-package table test for the teamsModelError / teamMembersModelError switches so every arm is locked against drift.

Remaining uncovered lines are unreachable defensive code (signSessionJWT failure under a valid config; the PortalSubscriptionCanceler "no live subscription" path that needs the live Razorpay portal).

Test plan

  • go build ./... clean
  • go vet ./internal/handlers clean
  • go test ./internal/handlers -run 'TestTeam|TestMember|TestInvit|TestPAT|TestToken' -count=1 -p 1 green
  • Per-file coverage verified ≥95% via go tool cover -func
  • CI coverage workflow green (migrations pre-applied up-front, avoiding the local full-package concurrent-migration race)

🤖 Generated with Claude Code

Adds DB-backed + sqlmock + in-package unit tests covering every team
handler file (teams.go, team_self.go, team_members.go, team_settings.go,
team_summary.go, team_deletion.go): list/invite/remove/role/promote/leave
members, RBAC invitation create/list/revoke/accept, team settings, team
summary, and the team deletion/restore lifecycle — including each error,
permission, and best-effort-audit branch.

Per-file statement coverage after this change:
  teams.go        98.9%
  team_self.go    100.0%
  team_members.go 95.6%
  team_settings.go 100.0%
  team_summary.go 96.4%
  team_deletion.go 97.0%

Branches that remain uncovered are unreachable defensive code (e.g.
signSessionJWT failure under a valid config, the PortalSubscriptionCanceler
"no live subscription" path that needs the live Razorpay portal). The
error-mapping switches (teamsModelError / teamMembersModelError) are
exercised directly via an in-package table test so every arm — including
the defensive ones the handlers can't produce — is locked against drift.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mastermanas805 mastermanas805 merged commit 38f915f into master May 22, 2026
10 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant