-
Notifications
You must be signed in to change notification settings - Fork 1.5k
[PM-28100] families 2019 email #6645
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
|
Great job! No new security vulnerabilities introduced in this pull request |
|
Claude finished @kdenney's task —— View job Code Review CompleteSummary of Changes Since Last ReviewThe PR has been updated to address the critical issue identified in the previous review. The author confirmed they would throw exceptions instead of logging warnings for coupon validation failures. This change has been implemented correctly. Status of Previous FindingsFinding 1: Critical coupon validation timing issue ✅ FIXED
Finding 2: Missing test coverage for coupon validation
New Issues FoundFinding 1: Test coverage for exception paths is incomplete The implementation now throws
However, the test suite does not verify these exception-throwing behaviors. Consider adding: Suggested test cases[Fact]
public async Task HandleAsync_WhenMilestone3Enabled_AndCouponNotFound_ThrowsException()
{
// Arrange: Setup with null coupon
_stripeFacade.GetCoupon(CouponIDs.Milestone3SubscriptionDiscount).Returns((Coupon)null);
// Act & Assert
await Assert.ThrowsAsync<InvalidOperationException>(() => _sut.HandleAsync(parsedEvent));
}
[Fact]
public async Task HandleAsync_WhenMilestone3Enabled_AndCouponPercentOffNull_ThrowsException()
{
// Arrange: Setup with coupon.PercentOff = null
var coupon = new Coupon { PercentOff = null, Id = CouponIDs.Milestone3SubscriptionDiscount };
_stripeFacade.GetCoupon(CouponIDs.Milestone3SubscriptionDiscount).Returns(coupon);
// Act & Assert
await Assert.ThrowsAsync<InvalidOperationException>(() => _sut.HandleAsync(parsedEvent));
}Severity: Finding 2: ADR 0024 compliance for nullable reference types
Severity: ♻️ Technical debt - Pre-existing issue, not introduced by this PR. Consider tracking for future migration. Good Practices Observed
Action Items
ConclusionThe critical issue from the previous review has been properly resolved. The implementation now validates the coupon before making any state changes and throws exceptions for invalid cases, which is the correct approach for this scenario. The PR is ready for merge from a code review perspective. Test coverage for the exception paths would be nice to have but is not blocking. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #6645 +/- ##
==========================================
+ Coverage 53.27% 53.28% +0.01%
==========================================
Files 1906 1907 +1
Lines 84973 85010 +37
Branches 7639 7642 +3
==========================================
+ Hits 45268 45298 +30
- Misses 37952 37957 +5
- Partials 1753 1755 +2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
# Conflicts: # src/Billing/Services/Implementations/UpcomingInvoiceHandler.cs # test/Billing.Test/Services/UpcomingInvoiceHandlerTests.cs




🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-28100
📔 Objective
Families 2019 email for milestone 3.
⏰ Reminders before review
🦮 Reviewer guidelines
:+1:) or similar for great changes:memo:) or ℹ️ (:information_source:) for notes or general info:question:) for questions:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion:art:) for suggestions / improvements:x:) or:warning:) for more significant problems or concerns needing attention:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt:pick:) for minor or nitpick changes