From 827d63390c577692d2dc5db881493f89d1fee305 Mon Sep 17 00:00:00 2001 From: Mike Ng Date: Fri, 25 Jan 2019 14:03:43 -0800 Subject: [PATCH 1/2] fix(event-tags): do not exclude falsy revenue and event values in the event payload. --- .../lib/core/event_builder/index.js | 4 +- .../lib/core/event_builder/index.tests.js | 96 +++++++++++++++++++ .../optimizely-sdk/lib/optimizely/index.js | 1 - 3 files changed, 98 insertions(+), 3 deletions(-) diff --git a/packages/optimizely-sdk/lib/core/event_builder/index.js b/packages/optimizely-sdk/lib/core/event_builder/index.js index 9e2fda7a6..cc977d3e7 100644 --- a/packages/optimizely-sdk/lib/core/event_builder/index.js +++ b/packages/optimizely-sdk/lib/core/event_builder/index.js @@ -133,12 +133,12 @@ function getVisitorSnapshot(configObj, eventKey, eventTags, logger) { if (eventTags) { var revenue = eventTagUtils.getRevenueValue(eventTags, logger); - if (revenue) { + if (revenue !== null) { eventDict[enums.RESERVED_EVENT_KEYWORDS.REVENUE] = revenue; } var eventValue = eventTagUtils.getEventValue(eventTags, logger); - if (eventValue) { + if (eventValue !== null) { eventDict[enums.RESERVED_EVENT_KEYWORDS.VALUE] = eventValue; } diff --git a/packages/optimizely-sdk/lib/core/event_builder/index.tests.js b/packages/optimizely-sdk/lib/core/event_builder/index.tests.js index d1e3558ec..3301ca1e1 100644 --- a/packages/optimizely-sdk/lib/core/event_builder/index.tests.js +++ b/packages/optimizely-sdk/lib/core/event_builder/index.tests.js @@ -1097,6 +1097,54 @@ describe('lib/core/event_builder', function() { assert.deepEqual(actualParams, expectedParams); }); + it('should include falsy revenue values in the event object', function() { + var expectedParams = { + url: 'https://logx.optimizely.com/v1/events', + httpVerb: 'POST', + params: { + 'client_version': packageJSON.version, + 'project_id': '111001', + 'visitors': [{ + 'attributes': [], + 'visitor_id': 'testUser', + 'snapshots': [{ + 'events': [{ + 'uuid': 'a68cf1ad-0393-4e18-af87-efe8f01a7c9c', + 'tags': { + 'revenue': 0 + }, + 'timestamp': Math.round(new Date().getTime()), + 'revenue': 0, + 'key': 'testEvent', + 'entity_id': '111095' + }] + }] + }], + 'account_id': '12001', + 'client_name': 'node-sdk', + 'revision': '42', + 'anonymize_ip': false, + 'enrich_decisions': true, + }, + }; + + var eventOptions = { + clientEngine: 'node-sdk', + clientVersion: packageJSON.version, + configObj: configObj, + eventKey: 'testEvent', + eventTags: { + 'revenue': 0, + }, + logger: mockLogger, + userId: 'testUser', + }; + + var actualParams = eventBuilder.getConversionEvent(eventOptions); + + assert.deepEqual(actualParams, expectedParams); + }); + describe('and the revenue value is invalid', function() { it('should not include the revenue value in the event object', function() { var expectedParams = { @@ -1200,6 +1248,54 @@ describe('lib/core/event_builder', function() { assert.deepEqual(actualParams, expectedParams); }); + it('should include the falsy event values in the event object', function() { + var expectedParams = { + url: 'https://logx.optimizely.com/v1/events', + httpVerb: 'POST', + params: { + 'client_version': packageJSON.version, + 'project_id': '111001', + 'visitors': [{ + 'attributes': [], + 'visitor_id': 'testUser', + 'snapshots': [{ + 'events': [{ + 'uuid': 'a68cf1ad-0393-4e18-af87-efe8f01a7c9c', + 'tags': { + 'value': '0.0' + }, + 'timestamp': Math.round(new Date().getTime()), + 'value': 0.0, + 'key': 'testEvent', + 'entity_id': '111095' + }] + }] + }], + 'account_id': '12001', + 'client_name': 'node-sdk', + 'revision': '42', + 'anonymize_ip': false, + 'enrich_decisions': true, + }, + }; + + var eventOptions = { + clientEngine: 'node-sdk', + clientVersion: packageJSON.version, + configObj: configObj, + eventKey: 'testEvent', + eventTags: { + 'value': '0.0', + }, + logger: mockLogger, + userId: 'testUser', + }; + + var actualParams = eventBuilder.getConversionEvent(eventOptions); + + assert.deepEqual(actualParams, expectedParams); + }); + describe('and the event value is invalid', function() { it('should not include the event value in the event object', function() { var expectedParams = { diff --git a/packages/optimizely-sdk/lib/optimizely/index.js b/packages/optimizely-sdk/lib/optimizely/index.js index e3ee2528f..a2090225d 100644 --- a/packages/optimizely-sdk/lib/optimizely/index.js +++ b/packages/optimizely-sdk/lib/optimizely/index.js @@ -231,7 +231,6 @@ Optimizely.prototype.track = function(eventKey, userId, attributes, eventTags) { // remove null values from eventTags eventTags = this.__filterEmptyValues(eventTags); - var conversionEventOptions = { attributes: attributes, clientEngine: this.clientEngine, From e7ed58ab19201e1f6cb57b6fd277f2f6325a9366 Mon Sep 17 00:00:00 2001 From: Mike Ng Date: Mon, 28 Jan 2019 14:55:05 -0800 Subject: [PATCH 2/2] fix nit from PR. --- packages/optimizely-sdk/lib/core/event_builder/index.tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/optimizely-sdk/lib/core/event_builder/index.tests.js b/packages/optimizely-sdk/lib/core/event_builder/index.tests.js index 3301ca1e1..e54336658 100644 --- a/packages/optimizely-sdk/lib/core/event_builder/index.tests.js +++ b/packages/optimizely-sdk/lib/core/event_builder/index.tests.js @@ -1097,7 +1097,7 @@ describe('lib/core/event_builder', function() { assert.deepEqual(actualParams, expectedParams); }); - it('should include falsy revenue values in the event object', function() { + it('should include revenue value of 0 in the event object', function() { var expectedParams = { url: 'https://logx.optimizely.com/v1/events', httpVerb: 'POST',