diff --git a/services/web/app/src/infrastructure/Queues.js b/services/web/app/src/infrastructure/Queues.js index 37842157da..c08f244999 100644 --- a/services/web/app/src/infrastructure/Queues.js +++ b/services/web/app/src/infrastructure/Queues.js @@ -27,6 +27,9 @@ const QUEUES_JOB_OPTIONS = { removeOnFail: MAX_FAILED_JOBS_RETAINED, attempts: 3, }, + 'analytics-email-change': { + removeOnFail: MAX_FAILED_JOBS_RETAINED_ANALYTICS, + }, 'emails-onboarding': { removeOnFail: MAX_FAILED_JOBS_RETAINED, }, @@ -59,6 +62,7 @@ const QUEUE_OPTIONS = { const ANALYTICS_QUEUES = [ 'analytics-account-mapping', + 'analytics-email-change', 'analytics-events', 'analytics-editing-sessions', 'analytics-user-properties', diff --git a/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js b/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js index 6d8a70afe4..fcd70fcddb 100644 --- a/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js +++ b/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js @@ -38,20 +38,25 @@ describe('AnalyticsManager', function () { add: sinon.stub().resolves(), process: sinon.stub().resolves(), } - const self = this + this.analyticsEmailChangeQueue = { + add: sinon.stub().resolves(), + process: sinon.stub().resolves(), + } this.Queues = { getQueue: queueName => { switch (queueName) { case 'analytics-events': - return self.analyticsEventsQueue + return this.analyticsEventsQueue case 'analytics-editing-sessions': - return self.analyticsEditingSessionQueue + return this.analyticsEditingSessionQueue case 'emails-onboarding': - return self.onboardingEmailsQueue + return this.onboardingEmailsQueue case 'analytics-user-properties': - return self.analyticsUserPropertiesQueue + return this.analyticsUserPropertiesQueue case 'analytics-account-mapping': - return self.analyticsAccountMappingQueue + return this.analyticsAccountMappingQueue + case 'analytics-email-change': + return this.analyticsEmailChangeQueue default: throw new Error('Unexpected queue name') } @@ -308,7 +313,6 @@ describe('AnalyticsManager', function () { beforeEach(function () { this.userId = '123abc' this.analyticsId = 'bccd308c-5d72-426e-a106-662e88557795' - const self = this this.AnalyticsManager = SandboxedModule.require(MODULE_PATH, { requires: { '@overleaf/settings': {}, @@ -316,15 +320,17 @@ describe('AnalyticsManager', function () { getQueue: queueName => { switch (queueName) { case 'analytics-events': - return self.analyticsEventsQueue + return this.analyticsEventsQueue case 'analytics-editing-sessions': - return self.analyticsEditingSessionQueue + return this.analyticsEditingSessionQueue case 'emails-onboarding': - return self.onboardingEmailsQueue + return this.onboardingEmailsQueue case 'analytics-user-properties': - return self.analyticsUserPropertiesQueue + return this.analyticsUserPropertiesQueue case 'analytics-account-mapping': - return self.analyticsAccountMappingQueue + return this.analyticsAccountMappingQueue + case 'analytics-email-change': + return this.analyticsEmailChangeQueue default: throw new Error('Unexpected queue name') }