From 162c49b8b847f60f0bcc64189b9ca8cd7baf0a38 Mon Sep 17 00:00:00 2001 From: Shane Tomlinson <stomlinson@mozilla.com> Date: Wed, 11 Jul 2012 13:49:51 +0100 Subject: [PATCH] Fix exception being thrown if KPI data is disabled. issue #1978 --- .../static/common/js/modules/interaction_data.js | 15 +++++++++++++-- .../cases/common/js/modules/interaction_data.js | 16 +++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/resources/static/common/js/modules/interaction_data.js b/resources/static/common/js/modules/interaction_data.js index 8f36514da..77267d474 100644 --- a/resources/static/common/js/modules/interaction_data.js +++ b/resources/static/common/js/modules/interaction_data.js @@ -155,9 +155,12 @@ BrowserID.Modules.InteractionData = (function() { } function onKPIData(msg, result) { + // currentData will be undefined if sampling is disabled. var currentData = this.getCurrent(); - _.extend(currentData, result); - model.setCurrent(currentData); + if (currentData) { + _.extend(currentData, result); + model.setCurrent(currentData); + } } // At every load, after session_context returns, try to publish the previous @@ -281,6 +284,14 @@ BrowserID.Modules.InteractionData = (function() { , setNameTable: function(table) { this.mediatorToKPINameTable = table; + }, + + enable: function() { + this.samplingEnabled = true; + }, + + disable: function() { + this.samplingEnabled = false; } // END TEST API }); diff --git a/resources/static/test/cases/common/js/modules/interaction_data.js b/resources/static/test/cases/common/js/modules/interaction_data.js index 1beb33008..669b0fe30 100644 --- a/resources/static/test/cases/common/js/modules/interaction_data.js +++ b/resources/static/test/cases/common/js/modules/interaction_data.js @@ -14,7 +14,7 @@ mediator = bid.Mediator, controller; - module("shared/modules/interaction_data", { + module("common/js/modules/interaction_data", { setup: function() { testHelpers.setup(); localStorage.removeItem("interaction_data"); @@ -246,13 +246,23 @@ }); }); - asyncTest("kpi_data message adds fields to current kpi_data", function() { + asyncTest("kpi_data message only adds fields to current kpi_data if sampling is enabled", function() { createController(); network.withContext(function() { + // number_emails will not be added to KPI data because sampling is + // disabled. + controller.disable(); mediator.publish("kpi_data", { number_emails: 1 }); + testHelpers.testUndefined(controller.getCurrent()); + + // number_emails will be added to KPI data because sampling is + // disabled. + controller.enable(); + mediator.publish("kpi_data", { number_emails: 2 }); testHelpers.testObjectValuesEqual(controller.getCurrent(), { - number_emails: 1 + number_emails: 2 }); + start(); }); }); -- GitLab