Skip to content

test: improve coverage for PR #294 gap files#295

Merged
baoduy merged 1 commit into
devfrom
test/improve-coverage-pr294
May 22, 2026
Merged

test: improve coverage for PR #294 gap files#295
baoduy merged 1 commit into
devfrom
test/improve-coverage-pr294

Conversation

@baoduy
Copy link
Copy Markdown
Owner

@baoduy baoduy commented May 22, 2026

Adds 65 unit tests targeting the lowest-coverage files in the codecov report for PR #294. Closes the patch-coverage gap by exercising security validation branches, expression overloads, blob-service defensive paths, and data-seeding early-returns.

Coverage targets

File Before Gap addressed
DynamicPredicateExtensions.cs 50.0% Expression<Func<T,bool>> property-name + raw-expression overloads (none were tested)
DynamicPredicateBuilderExtensions.cs 83.5% IsValidPropertyName null/empty/oversized/bad-char branches, ValidateExpression null + every dangerous pattern, ValidateArrayValue non-enumerable rejection
LocalBlobService.cs 86.2% Null RootFolder fallback, path-traversal UnauthorizedAccessException, leading-slash normalization, cancellation-token early-exit (file + folder), nested-path SaveAsync
IDataSeedingConfiguration.cs 81.0% Empty seed-data early-return, all-rows-already-exist early-return, default Order/EntityType properties

Not addressed:

  • TaskSetups.cs (10% reported) — the file uses C# 14 extension members which the coverage instrumentation does not appear to track. The methods are already exercised by BackgroundJobTests.
  • IdempotencySqlServerStore.IsExpired branch — structurally unreachable because the EF query already filters ExpiresAt > DateTime.UtcNow; this is defensive code.

New test files

  • DynamicPredicateBuilderEdgeCaseTests.cs (29 cases)
  • DynamicPredicateExpressionOverloadTests.cs (12 cases)
  • LocalBlobServiceEdgeCaseTests.cs (7 cases)
  • DataSeedingEdgeCaseTests.cs (3 cases)

All new tests pass; full EfCore.Specifications.Tests (301), EfCore.Extensions.Tests (85), and Svc.BlobStorage.Tests Local-fixture suite (17) remain green.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Adds 65 new unit tests targeting the lowest-coverage files in the
codecov report for PR #294:

- DynamicPredicateBuilderEdgeCaseTests (29 cases):
  IsValidPropertyName null/empty/oversized/dangerous-char branches,
  ValidateExpression null/whitespace + all dangerous patterns,
  ValidateArrayValue null/string/non-enumerable/empty branches.
- DynamicPredicateExpressionOverloadTests (12 cases):
  Expression<Func<T,bool>> DynamicAnd/DynamicOr property-name and
  raw-expression overloads, plus the ExpressionStarter raw-expression
  overloads (none of these were exercised by existing tests).
- LocalBlobServiceEdgeCaseTests (7 cases):
  Null RootFolder fallback, path-traversal UnauthorizedAccessException
  on CheckExists/Delete, leading-slash normalization, cancellation-
  token early-exit for file and folder deletion, nested-path SaveAsync.
- DataSeedingEdgeCaseTests (3 cases):
  Empty seed data early-return, all-rows-already-exist early-return
  (using a value-equality ColorRow + ColorDbContext), and the default
  Order/EntityType/SeedAsync properties.

All new tests pass; existing tests still green.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown

📊 Code Coverage Report

| Metric | Coverage |
|--------|----------|
| **Line Coverage** | 87.7% |
| **Branch Coverage** | 82.7% |
| **Method Coverage** | 85.9% |

**Lines:** 3252/undefined covered
**Branches:** 1244/undefined covered

📈 [View Full Coverage Report](https://github.com/baoduy/DKNet/actions/runs/26265078885)

@codecov
Copy link
Copy Markdown

codecov Bot commented May 22, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.83%. Comparing base (51c6bfe) to head (5e145e3).

Additional details and impacted files
@@            Coverage Diff             @@
##              dev     #295      +/-   ##
==========================================
+ Coverage   83.62%   84.83%   +1.21%     
==========================================
  Files         159      159              
  Lines        3706     3706              
  Branches      575      575              
==========================================
+ Hits         3099     3144      +45     
+ Misses        444      412      -32     
+ Partials      163      150      -13     
Flag Coverage Δ
unittests 84.83% <ø> (+1.21%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@baoduy baoduy merged commit 95af2e7 into dev May 22, 2026
6 checks passed
@baoduy baoduy deleted the test/improve-coverage-pr294 branch May 22, 2026 02: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.

1 participant