Conversation
dschom
reviewed
Mar 20, 2026
| }; | ||
| ( | ||
| appStoreSubscriptionPurchaseToAppStoreSubscriptionDTO as jest.Mock | ||
| ).mockClear(); |
Contributor
There was a problem hiding this comment.
Is it weird that we have to do this before each?
dschom
reviewed
Mar 20, 2026
| sinon.fake.resolves(customer); | ||
| promotionCode = { coupon: { id: 'test-coupon' } }; | ||
| stripeHelper.findValidPromoCode = sinon.fake.resolves(promotionCode); | ||
| buildTaxAddressStub.mockReset(); |
Contributor
There was a problem hiding this comment.
Should this go in afterEach?
dschom
reviewed
Mar 20, 2026
| stripeHelper.fetchCustomer = sinon.fake.throws( | ||
| error.backendServiceFailure() | ||
| ); | ||
| deleteAccountIfUnverifiedStub.mockReset(); |
Contributor
There was a problem hiding this comment.
I feel like these should be in an afterEach?
dschom
reviewed
Mar 20, 2026
| * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | ||
|
|
||
| import sinon from 'sinon'; |
Contributor
There was a problem hiding this comment.
Previously this file was stripe-webhoooks.js. Do we want to keep the name plural?
dschom
reviewed
Mar 20, 2026
| const event = deepCopy(eventCouponCreated); | ||
| event.type = eventType; | ||
| const coupon = deepCopy(event.data.object); | ||
| const sentryMod = require('../../sentry'); |
Contributor
There was a problem hiding this comment.
I know it was like this before, but just flagging that this is something we shoud clean up in the future. It'd be great to use a jest mock for this.
dschom
reviewed
Mar 20, 2026
| verifierSetAt: Date.now(), | ||
| }; | ||
| StripeWebhookHandlerInstance.db.account = sinon.spy( | ||
| async (data: any) => mockAccount |
Contributor
There was a problem hiding this comment.
do we need the data param at all?
dschom
approved these changes
Mar 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Because
This pull request
lib/routes/subscriptions/expect()equivalents and retainssinon.assert.*for spy/stub verificationproxyquiremodule stubbing withjest.mock()+jest.requireActual()Migration Parity Summary
Key Translation Patterns
assert.deepEqual(a, b)expect(a).toEqual(b)assert.equal/assert.strictEqualexpect(a).toBe(b)assert.instanceOf(x, T)expect(x).toBeInstanceOf(T)assert.deepInclude(a, b)expect(a).toEqual(expect.objectContaining(b))assert.fail('msg')throw new Error('msg')assert.calledOnce(spy)(merged sinon)sinon.assert.calledOnce(spy)proxyquirejest.mock()+jest.requireActual()Notable Improvements Over Original
async describe()anti-pattern in stripe-webhook testserror→fetchError,deleteAccountIfUnverifiedStub→localDeleteStub)undefinedvalues explicit in test data and sinon fakesIssue
Closes: https://mozilla-hub.atlassian.net/browse/FXA-12619
Checklist
How to review
This is a large PR so it is probably better to use some AI tools to help verify the changes. I have run analysis on the assertions and test comparions so to the best of my knowledge this has partiy with original. It would be good for others to also do the check.