Просмотр исходного кода

Merge pull request #8895 from overleaf/jpa-allow-empty-segmentation-val

[web] allow empty event segmentation values again

GitOrigin-RevId: a02fd5085697bf7e2f2d4a5c2dc93dfebcd6e140
Jakob Ackermann 4 лет назад
Родитель
Сommit
daa9302fd3

+ 1 - 1
services/web/app/src/Features/Analytics/AnalyticsManager.js

@@ -243,7 +243,7 @@ function _checkPropertyValue(propertyValue) {
 }
 
 function _isAttributeValid(attribute) {
-  return attribute && /^[a-zA-Z0-9-_.:;,/]+$/.test(attribute)
+  return !attribute || /^[a-zA-Z0-9-_.:;,/]+$/.test(attribute)
 }
 
 function _isSegmentationValid(segmentation) {

+ 29 - 0
services/web/test/unit/src/Analytics/AnalyticsManagerTests.js

@@ -209,6 +209,35 @@ describe('AnalyticsManager', function () {
         }
       )
     })
+
+    it('empty field in event segmentation', async function () {
+      const timings = null
+      await this.AnalyticsManager.recordEventForUser(
+        this.fakeUserId,
+        'an_event',
+        { compileTime: timings?.compileE2E }
+      )
+      sinon.assert.calledWithMatch(this.analyticsEventsQueue.add, 'event', {
+        analyticsId: this.analyticsId,
+        event: 'an_event',
+        segmentation: { compileTime: undefined },
+        isLoggedIn: true,
+      })
+    })
+
+    it('boolean field in event segmentation', async function () {
+      await this.AnalyticsManager.recordEventForUser(
+        this.fakeUserId,
+        'an_event',
+        { isAutoCompile: false }
+      )
+      sinon.assert.calledWithMatch(this.analyticsEventsQueue.add, 'event', {
+        analyticsId: this.analyticsId,
+        event: 'an_event',
+        segmentation: { isAutoCompile: false },
+        isLoggedIn: true,
+      })
+    })
   })
 
   describe('AnalyticsIdMiddleware', function () {