Skip to content

test: phase 2 coverage for ConfigService and HttpService - #25

Merged
jonas1307 merged 1 commit into
mainfrom
test/phase-2
Jul 25, 2026
Merged

test: phase 2 coverage for ConfigService and HttpService#25
jonas1307 merged 1 commit into
mainfrom
test/phase-2

Conversation

@jonas1307

Copy link
Copy Markdown
Owner

Phase 2: ConfigService and HttpService coverage

Follows Phase 1 (#22). Adds two small production seams and the tests they unlock, mirroring the timetracker-cli phase 2. No runtime behavior changes.

Production seams

  • ConfigService honors a DEVOPS_CONFIG_DIR override in GetConfigDirectory(). Unset for normal users, so the runtime config path is unchanged; tests point it at a throwaway directory.
  • HttpService.ClientFactory (Func<RestClientOptions, RestClient>, defaults to new RestClient(options)). The two CreateClientAsync overloads now build through it; tests inject a stub message handler on the options. No public API change and no changes to call sites.

Tests (15 new, 64 total)

  • ConfigServiceTests — Save/Load round-trip (PAT decrypts, auth mode inferred), non-destructive merge, ResolveProject (explicit/default/throws), ResolveUserId (present/throws), DeleteConfig, all against a temp dir.
  • ResolvePullRequestUrlConfigTests — the build-from-config fallback (org URL + project/repo).
  • HttpServiceTestsGetWorkItem, GetPullRequest, CreatePullRequest (asserts branch normalization + reviewers in the body), AddPullRequestComment — success and failure paths via a stub handler.

Pack of the tool is unaffected.

Closes #24

Add a config-directory override to ConfigService and an injectable client factory to
HttpService so config round-trip/merge/resolvers, the ResolvePullRequestUrl config path,
and the work-item/pull-request HTTP paths can be tested without the real store or network.
@jonas1307
jonas1307 merged commit 7e744f5 into main Jul 25, 2026
1 check passed
@jonas1307
jonas1307 deleted the test/phase-2 branch July 25, 2026 04:23
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.

Test coverage phase 2: services with I/O

1 participant