From 3cc9f30e662f6dcba3e098285b95a51800873d1b Mon Sep 17 00:00:00 2001 From: Jason Waters Date: Mon, 30 Oct 2023 14:48:36 -0600 Subject: [PATCH] PDCL-11250 (#1076) --- .../InAppMessagesDemo/InAppMessages.js | 3 +- .../createEvaluableRulesetPayload.js | 5 +-- .../DecisioningEngine/createEventRegistry.js | 4 ++ .../createEventRegistry.spec.js | 40 +++++++++++++++++++ 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/sandbox/src/components/InAppMessagesDemo/InAppMessages.js b/sandbox/src/components/InAppMessagesDemo/InAppMessages.js index 474701f0e..0941faefd 100644 --- a/sandbox/src/components/InAppMessagesDemo/InAppMessages.js +++ b/sandbox/src/components/InAppMessagesDemo/InAppMessages.js @@ -3,7 +3,8 @@ import React, { useEffect, useState } from "react"; import ContentSecurityPolicy from "../ContentSecurityPolicy"; import "./InAppMessagesStyle.css"; -const configKey = localStorage.getItem("iam-configKey") || "stage"; +const configKey = + localStorage.getItem("iam-configKey") || "aemonacpprodcampaign"; const config = { cjmProdNld2: { diff --git a/src/components/DecisioningEngine/createEvaluableRulesetPayload.js b/src/components/DecisioningEngine/createEvaluableRulesetPayload.js index d1fa20995..c65ee9f18 100644 --- a/src/components/DecisioningEngine/createEvaluableRulesetPayload.js +++ b/src/components/DecisioningEngine/createEvaluableRulesetPayload.js @@ -75,9 +75,8 @@ export default (payload, eventRegistry, decisionHistory) => { ) .map(consequenceAdapter) .map(item => { - const { - firstTimestamp: qualifiedDate - } = decisionHistory.recordQualified(activityId); + const { firstTimestamp: qualifiedDate } = + decisionHistory.recordQualified(activityId) || {}; return { ...item, diff --git a/src/components/DecisioningEngine/createEventRegistry.js b/src/components/DecisioningEngine/createEventRegistry.js index 87a840ac6..4fa1b8ffb 100644 --- a/src/components/DecisioningEngine/createEventRegistry.js +++ b/src/components/DecisioningEngine/createEventRegistry.js @@ -66,6 +66,10 @@ export default ({ storage }) => { setStorage(storage); const addEvent = (event, eventType, eventId, action) => { + if (!eventType || !eventId) { + return undefined; + } + if (!events[eventType]) { events[eventType] = {}; } diff --git a/test/unit/specs/components/DecisioningEngine/createEventRegistry.spec.js b/test/unit/specs/components/DecisioningEngine/createEventRegistry.spec.js index 364c3eea9..895ac06ff 100644 --- a/test/unit/specs/components/DecisioningEngine/createEventRegistry.spec.js +++ b/test/unit/specs/components/DecisioningEngine/createEventRegistry.spec.js @@ -131,6 +131,46 @@ describe("DecisioningEngine:createEventRegistry", () => { expect(eventRegistry.toJSON()).toEqual({}); }); + it("does not register events without type and id", () => { + const eventRegistry = createEventRegistry({ storage }); + + expect(eventRegistry.addEvent({}, "trigger")).toBeUndefined(); + expect(eventRegistry.addEvent({}, "trigger", undefined)).toBeUndefined(); + expect(eventRegistry.addEvent({})).toBeUndefined(); + + expect(eventRegistry.toJSON()).toEqual({}); + + expect( + eventRegistry.addEvent({ something: "special" }, "display", "abc#123") + ).toEqual({ + event: { + "iam.id": "abc#123", + "iam.eventType": "display", + "iam.action": undefined, + something: "special" + }, + firstTimestamp: jasmine.any(Number), + timestamp: jasmine.any(Number), + count: 1 + }); + + expect(eventRegistry.toJSON()).toEqual({ + display: { + "abc#123": { + event: { + "iam.id": "abc#123", + "iam.eventType": "display", + "iam.action": undefined, + something: "special" + }, + firstTimestamp: jasmine.any(Number), + timestamp: jasmine.any(Number), + count: 1 + } + } + }); + }); + it("increments count and sets timestamp", done => { const eventRegistry = createEventRegistry({ storage });