Skip to content

Conversation

@KSemenenko
Copy link
Member

No description provided.

Copilot AI review requested due to automatic review settings December 15, 2025 09:48
@codecov
Copy link

codecov bot commented Dec 15, 2025

Codecov Report

❌ Patch coverage is 64.67977% with 557 lines in your changes missing coverage. Please review.
✅ Project coverage is 56.68%. Comparing base (68a37b5) to head (37fd26b).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...gedCode.Storage.CloudKit/Clients/CloudKitClient.cs 71.76% 52 Missing and 44 partials ⚠️
...es/ManagedCode.Storage.CloudKit/CloudKitStorage.cs 51.63% 51 Missing and 8 partials ⚠️
...ages/ManagedCode.Storage.Dropbox/DropboxStorage.cs 53.33% 47 Missing and 9 partials ⚠️
...es/ManagedCode.Storage.OneDrive/OneDriveStorage.cs 52.99% 47 Missing and 8 partials ⚠️
...agedCode.Storage.GoogleDrive/GoogleDriveStorage.cs 54.95% 44 Missing and 6 partials ⚠️
...xtensions/Controller/ControllerUploadExtensions.cs 5.55% 34 Missing ⚠️
...raions/ManagedCode.Storage.Client/StorageClient.cs 57.57% 23 Missing and 5 partials ⚠️
...de.Storage.Dropbox/Clients/DropboxClientWrapper.cs 65.43% 19 Missing and 9 partials ⚠️
...CloudKit/Extensions/ServiceCollectionExtensions.cs 54.38% 21 Missing and 5 partials ⚠️
...e.Storage.GoogleDrive/Clients/GoogleDriveClient.cs 82.56% 7 Missing and 12 partials ⚠️
... and 28 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #112      +/-   ##
==========================================
+ Coverage   53.45%   56.68%   +3.22%     
==========================================
  Files         105      127      +22     
  Lines        4714     6162    +1448     
  Branches      702      913     +211     
==========================================
+ Hits         2520     3493     +973     
- Misses       1896     2249     +353     
- Partials      298      420     +122     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds comprehensive GitHub Pages documentation infrastructure and CloudKit/CloudDrive storage provider test coverage for the ManagedCode.Storage project. The changes include Jekyll-based documentation site setup, feature/API/ADR documentation, SEO optimization, and HTTP-handler-based test fakes for CloudKit, OneDrive, Google Drive, and Dropbox providers.

Key Changes

  • GitHub Pages documentation site with custom layout, CSS, SEO metadata, sitemap, and robots.txt
  • Documentation for all storage providers (Azure, AWS, GCS, FileSystem, SFTP, OneDrive, Google Drive, Dropbox, CloudKit), features (VFS, chunked uploads, DI), and integrations (ASP.NET Server, HTTP/SignalR clients)
  • CloudKit storage provider tests with fake HTTP handler
  • CloudDrive provider tests (OneDrive/Graph, Google Drive, Dropbox) using HTTP message handlers wired into official SDK clients
  • SEO audit document and development setup guide

Reviewed changes

Copilot reviewed 104 out of 161 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
github-pages/_layouts/default.html Jekyll layout with SEO metadata, structured data, navigation, dark mode toggle
github-pages/_config.yml Site configuration with SEO keywords and Jekyll settings
github-pages/sitemap.xml XML sitemap for search engines
github-pages/robots.txt Robots directives with sitemap reference
github-pages/assets/css/style.css Custom CSS with dark mode support and responsive design
github-pages/*.md Page templates for documentation site (home, setup, testing, templates, etc.)
docs/Features/*.md Feature documentation for providers and integrations
docs/API/*.md HTTP and SignalR API documentation
docs/ADR/*.md Architecture Decision Records
docs/Development/*.md Setup guide, credentials guide, SEO audit
docs/Testing/strategy.md Test strategy and suite structure
docs/templates/*.md Feature and ADR templates
docs/server-streaming-plan.md Added Mermaid diagram for architecture
Tests/.../CloudKit/*.cs CloudKit storage tests with fake HTTP handler
Tests/.../CloudDrive/*.cs OneDrive/Google Drive/Dropbox tests with HTTP fakes
Tests/.../GCS/GCSUploadTests.cs Discard unused parameter to suppress warning
Tests/.../FileSystem/FileSystemUploadTests.cs Code formatting (spacing around operators)
dotnet-install.sh .NET SDK installation script (Microsoft official)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +289 to +295
foreach (var part in query.TrimStart('?').Split('&', StringSplitOptions.RemoveEmptyEntries))
{
var kv = part.Split('=', 2);
var key = Uri.UnescapeDataString(kv[0]);
var value = kv.Length == 2 ? Uri.UnescapeDataString(kv[1]) : string.Empty;
result[key] = value;
}
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This foreach loop immediately maps its iteration variable to another variable - consider mapping the sequence explicitly using '.Select(...)'.

Copilot uses AI. Check for mistakes.
Comment on lines +289 to +295
foreach (var part in query.TrimStart('?').Split('&', StringSplitOptions.RemoveEmptyEntries))
{
var kv = part.Split('=', 2);
var key = Uri.UnescapeDataString(kv[0]);
var value = kv.Length == 2 ? Uri.UnescapeDataString(kv[1]) : string.Empty;
result[key] = value;
}
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This foreach loop immediately maps its iteration variable to another variable - consider mapping the sequence explicitly using '.Select(...)'.

Copilot uses AI. Check for mistakes.
}

_entries.Remove(entry.Id);
response = new HttpResponseMessage(HttpStatusCode.NoContent);
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'HttpResponseMessage' is created but not disposed.

Copilot uses AI. Check for mistakes.
Comment on lines +193 to +196
response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(existing.Content)
};
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'HttpResponseMessage' is created but not disposed.

Copilot uses AI. Check for mistakes.

private bool TryHandleChildrenRequest(HttpRequestMessage request, out HttpResponseMessage response)
{
response = new HttpResponseMessage(HttpStatusCode.NotFound);
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'HttpResponseMessage' is created but not disposed.

Copilot uses AI. Check for mistakes.

private bool TryHandleItemRequest(HttpRequestMessage request, out HttpResponseMessage response)
{
response = new HttpResponseMessage(HttpStatusCode.NotFound);
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'HttpResponseMessage' is created but not disposed.

Copilot uses AI. Check for mistakes.
// Arrange

var uploadStream1 = new MemoryStream(90*1024);
var uploadStream1 = new MemoryStream(90 * 1024);
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'MemoryStream' is created but not disposed.

Copilot uses AI. Check for mistakes.
@KSemenenko KSemenenko merged commit c222dc0 into main Dec 15, 2025
5 checks passed
@KSemenenko KSemenenko deleted the pr-111 branch December 15, 2025 10:47
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.

2 participants