feat: add proper error handling with full API error details

- Add ApiResult<T> type to carry success/failure with error details
- Add UpdateDocumentWithResultAsync and CreateTagWithResultAsync methods
- Update DocumentTools.Update and TagTools.Create to return actual
  HTTP status codes and response bodies in error responses
- Add comprehensive tests for error handling (18 new tests)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Barry Walker
2026-01-13 18:59:16 -05:00
parent 39768fdd45
commit c67781bac5
9 changed files with 462 additions and 33 deletions
@@ -79,6 +79,20 @@ public class MockHttpClientFactory : IDisposable
.Respond(statusCode);
}
public MockedRequest SetupPatchWithError(string url, HttpStatusCode statusCode, string responseBody)
{
return MockHandler
.When(HttpMethod.Patch, $"{Options.BaseUrl.TrimEnd('/')}/{url.TrimStart('/')}")
.Respond(statusCode, "application/json", responseBody);
}
public MockedRequest SetupPostWithError(string url, HttpStatusCode statusCode, string responseBody)
{
return MockHandler
.When(HttpMethod.Post, $"{Options.BaseUrl.TrimEnd('/')}/{url.TrimStart('/')}")
.Respond(statusCode, "application/json", responseBody);
}
public MockedRequest SetupDelete(string url, HttpStatusCode statusCode = HttpStatusCode.NoContent)
{
return MockHandler