Ver código fonte

Don't throw cron job when some PayPal collection fails (#18795)

* Don't throw cron job when some PayPal collection fails

Follow-up of https://github.com/overleaf/internal/pull/18414 and https://github.com/overleaf/internal/pull/18572

This was causing `Heartbeat [cron-web-collect-paypal-prod] is expired.`
And the cron to rerun (altogether three times a day, instead of once a day)

https://cloudlogging.app.goo.gl/W4qBPFDeTUkRQ8J27

* Update tests

GitOrigin-RevId: a6a29cc84c0c72fd86b2e3a9739669d3a5fb0be5
Antoine Clausse 2 anos atrás
pai
commit
262a92083a

+ 1 - 1
services/web/scripts/recurly/collect_paypal_past_due_invoice.js

@@ -93,7 +93,7 @@ const main = async () => {
 
     const diff = INVOICES_COLLECTED.length - INVOICES_COLLECTED_SUCCESS.length
     if (diff !== 0) {
-      throw new Error(`Invoices collection failed for ${diff} invoices`)
+      logger.warn(`Invoices collection failed for ${diff} invoices`)
     }
 
     return {

+ 14 - 8
services/web/test/acceptance/src/CollectPayPalPastDueInvoiceTest.js

@@ -252,11 +252,14 @@ describe('CollectPayPalPastDueInvoice', function () {
     expect(apiRequestStub.callCount).to.eql(24)
   })
 
-  it('rejects when some invoice processing failed', async function () {
+  it("resolves when no invoices are processed so we don't fail in staging", async function () {
     fakeApiRequests([404])
-    await expect(main()).to.be.rejectedWith(
-      'Invoices collection failed for 1 invoices'
-    )
+    const r = await main()
+    expect(r).to.eql({
+      INVOICES_COLLECTED: [404],
+      INVOICES_COLLECTED_SUCCESS: [],
+      USERS_COLLECTED: ['404'],
+    })
   })
 
   it('doesnt reject when there are no invoices', async function () {
@@ -269,10 +272,13 @@ describe('CollectPayPalPastDueInvoice', function () {
     })
   })
 
-  it('resolves when some invoices are partially successful', async function () {
+  it("resolves when collection is partially successful so we don't fail in prod", async function () {
     fakeApiRequests([200, 404])
-    await expect(main()).to.be.rejectedWith(
-      'Invoices collection failed for 1 invoices'
-    )
+    const r = await main()
+    expect(r).to.eql({
+      INVOICES_COLLECTED: [200, 404],
+      INVOICES_COLLECTED_SUCCESS: [200],
+      USERS_COLLECTED: ['200', '404'],
+    })
   })
 })