diff --git a/src/targeting.js b/src/targeting.js index 96692376d82..ce519f8add3 100644 --- a/src/targeting.js +++ b/src/targeting.js @@ -379,21 +379,18 @@ export function newTargeting(auctionManager) { targeting.setTargetingForGPT = function(targetingConfig, customSlotMatching) { window.googletag.pubads().getSlots().forEach(slot => { Object.keys(targetingConfig).filter(customSlotMatching ? customSlotMatching(slot) : isAdUnitCodeMatchingSlot(slot)) - .forEach(targetId => + .forEach(targetId => { Object.keys(targetingConfig[targetId]).forEach(key => { - let valueArr = targetingConfig[targetId][key]; - if (typeof valueArr === 'string') { - valueArr = valueArr.split(','); + let value = targetingConfig[targetId][key]; + if (typeof value === 'string' && value.indexOf(',') !== -1) { + // due to the check the array will be formed only if string has ',' else plain string will be assigned as value + value = value.split(','); } - valueArr = (valueArr.length > 1) ? [valueArr] : valueArr; - valueArr.map((value) => { - utils.logMessage(`Attempting to set key value for slot: ${slot.getSlotElementId()} key: ${key} value: ${value}`); - return value; - }).forEach(value => { - slot.setTargeting(key, value); - }); - }) - ) + targetingConfig[targetId][key] = value; + }); + utils.logMessage(`Attempting to set targeting-map for slot: ${slot.getSlotElementId()} with targeting-map:`, targetingConfig[targetId]); + slot.updateTargetingFromMap(targetingConfig[targetId]) + }) }) }; diff --git a/test/spec/unit/pbjs_api_spec.js b/test/spec/unit/pbjs_api_spec.js index 199ce699dc8..cc75b95a7ac 100644 --- a/test/spec/unit/pbjs_api_spec.js +++ b/test/spec/unit/pbjs_api_spec.js @@ -75,6 +75,10 @@ var Slot = function Slot(elementId, pathId) { clearTargeting: function clearTargeting() { this.targeting = {}; return this; + }, + + updateTargetingFromMap: function updateTargetingFromMap(targetingMap) { + Object.keys(targetingMap).forEach(key => this.setTargeting(key, targetingMap[key])) } }; slot.spySetTargeting = sinon.spy(slot, 'setTargeting');