Skip to content

Commit

Permalink
Prebid Core: Addition of Optional Category Targeting Key (prebid#9268)
Browse files Browse the repository at this point in the history
* addition of category optional targeting

* removed console log statements

* console.log statements for debugging

* updated tests

* formatting changes

* added pbs test
  • Loading branch information
jlquaccia authored and JacobKlein26 committed Feb 8, 2023
1 parent 4e463ff commit d587168
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 3 deletions.
12 changes: 11 additions & 1 deletion src/auction.js
Original file line number Diff line number Diff line change
Expand Up @@ -828,6 +828,16 @@ export const getAdvertiserDomain = () => {
}
}

/**
* This function returns a function to get the primary category id from bid response meta
* @returns {function}
*/
export const getPrimaryCatId = () => {
return (bid) => {
return (bid.meta && bid.meta.primaryCatId) ? bid.meta.primaryCatId : '';
}
}

// factory for key value objs
function createKeyVal(key, value) {
return {
Expand All @@ -853,6 +863,7 @@ function defaultAdserverTargeting() {
createKeyVal(TARGETING_KEYS.SOURCE, 'source'),
createKeyVal(TARGETING_KEYS.FORMAT, 'mediaType'),
createKeyVal(TARGETING_KEYS.ADOMAIN, getAdvertiserDomain()),
createKeyVal(TARGETING_KEYS.ACAT, getPrimaryCatId()),
]
}

Expand All @@ -865,7 +876,6 @@ function defaultAdserverTargeting() {
export function getStandardBidderSettings(mediaType, bidderCode) {
const TARGETING_KEYS = CONSTANTS.TARGETING_KEYS;
const standardSettings = Object.assign({}, bidderSettings.settingsFor(null));

if (!standardSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING]) {
standardSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING] = defaultAdserverTargeting();
}
Expand Down
3 changes: 2 additions & 1 deletion src/constants.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@
"UUID": "hb_uuid",
"CACHE_ID": "hb_cache_id",
"CACHE_HOST": "hb_cache_host",
"ADOMAIN": "hb_adomain"
"ADOMAIN": "hb_adomain",
"ACAT": "hb_acat"
},
"DEFAULT_TARGETING_KEYS": {
"BIDDER": "hb_bidder",
Expand Down
34 changes: 33 additions & 1 deletion test/spec/auctionmanager_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@ describe('auctionmanager.js', function () {
source: 'client',
mediaType: 'banner',
meta: {
advertiserDomains: ['adomain']
advertiserDomains: ['adomain'],
primaryCatId: 'IAB-test'
}
};

Expand All @@ -200,6 +201,7 @@ describe('auctionmanager.js', function () {
expected[ CONSTANTS.TARGETING_KEYS.SOURCE ] = bid.source;
expected[ CONSTANTS.TARGETING_KEYS.FORMAT ] = bid.mediaType;
expected[ CONSTANTS.TARGETING_KEYS.ADOMAIN ] = bid.meta.advertiserDomains[0];
expected[ CONSTANTS.TARGETING_KEYS.ACAT ] = bid.meta.primaryCatId;
if (bid.mediaType === 'video') {
expected[ CONSTANTS.TARGETING_KEYS.UUID ] = bid.videoCacheKey;
expected[ CONSTANTS.TARGETING_KEYS.CACHE_ID ] = bid.videoCacheKey;
Expand Down Expand Up @@ -290,6 +292,12 @@ describe('auctionmanager.js', function () {
val: function (bidResponse) {
return bidResponse.meta.advertiserDomains[0];
}
},
{
key: CONSTANTS.TARGETING_KEYS.ACAT,
val: function (bidResponse) {
return bidResponse.meta.primaryCatId;
}
}
]

Expand Down Expand Up @@ -367,6 +375,12 @@ describe('auctionmanager.js', function () {
val: function (bidResponse) {
return bidResponse.meta.advertiserDomains[0];
}
},
{
key: CONSTANTS.TARGETING_KEYS.ACAT,
val: function (bidResponse) {
return bidResponse.meta.primaryCatId;
}
}
]

Expand Down Expand Up @@ -455,6 +469,24 @@ describe('auctionmanager.js', function () {
assert.deepEqual(response, expected);
});

it('Should set targeting as expecting when pbs is enabled', function () {
config.setConfig({
s2sConfig: {
accountId: '1',
enabled: true,
defaultVendor: 'appnexus',
bidders: ['appnexus'],
timeout: 1000,
adapter: 'prebidServer'
}
});

$$PREBID_GLOBAL$$.bidderSettings = {};
let expected = getDefaultExpected(bid);
let response = getKeyValueTargetingPairs(bid.bidderCode, bid);
assert.deepEqual(response, expected);
});

it('Custom bidCpmAdjustment for one bidder and inherit standard but doesn\'t use standard bidCpmAdjustment', function () {
$$PREBID_GLOBAL$$.bidderSettings =
{
Expand Down

0 comments on commit d587168

Please sign in to comment.