Skip to content

Commit

Permalink
fixed bug with sortByDealAndPriceBucketOrCpm
Browse files Browse the repository at this point in the history
  • Loading branch information
RRSchweitzer committed Jul 16, 2020
1 parent 9fc9579 commit 697613f
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 50 deletions.
12 changes: 6 additions & 6 deletions src/targeting.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export function getHighestCpmBidsFromBidPool(bidsReceived, highestCpmCallback, a
Object.keys(bidsByBidder).forEach(key => bucketBids.push(bidsByBidder[key].reduce(highestCpmCallback)));
// if adUnitBidLimit is set, pass top N number bids
if (adUnitBidLimit > 0) {
bucketBids = dealPrioritization ? bucketBids(sortByDealAndPriceBucketOrCpm(true)) : bucketBids.sort((a, b) => b.cpm - a.cpm);
bucketBids = dealPrioritization ? bucketBids.sort(sortByDealAndPriceBucketOrCpm(true)) : bucketBids.sort((a, b) => b.cpm - a.cpm);
bids.push(...bucketBids.slice(0, adUnitBidLimit));
} else {
bids.push(...bucketBids);
Expand Down Expand Up @@ -76,11 +76,11 @@ export function getHighestCpmBidsFromBidPool(bidsReceived, highestCpmCallback, a
*/
export function sortByDealAndPriceBucketOrCpm(useCpm = false) {
return function(a, b) {
if (a.adUnitTargeting.hb_deal !== undefined && b.adUnitTargeting.hb_deal === undefined) {
if (a.adserverTargeting.hb_deal !== undefined && b.adserverTargeting.hb_deal === undefined) {
return -1;
}

if ((a.adUnitTargeting.hb_deal === undefined && b.adUnitTargeting.hb_deal !== undefined)) {
if ((a.adserverTargeting.hb_deal === undefined && b.adserverTargeting.hb_deal !== undefined)) {
return 1;
}

Expand All @@ -89,7 +89,7 @@ export function sortByDealAndPriceBucketOrCpm(useCpm = false) {
return b.cpm - a.cpm;
}

return b.adUnitTargeting.hb_pb - a.adUnitTargeting.hb_pb;
return b.adserverTargeting.hb_pb - a.adserverTargeting.hb_pb;
}
}

Expand Down Expand Up @@ -238,13 +238,13 @@ export function newTargeting(auctionManager) {
let targetingMap = Object.keys(targetingCopy).map(adUnitCode => {
return {
adUnitCode,
adUnitTargeting: targetingCopy[adUnitCode]
adserverTargeting: targetingCopy[adUnitCode]
};
}).sort(sortByDealAndPriceBucketOrCpm());

// iterate through the targeting based on above list and transform the keys into the query-equivalent and count characters
return targetingMap.reduce(function (accMap, currMap, index, arr) {
let adUnitQueryString = convertKeysToQueryForm(currMap.adUnitTargeting);
let adUnitQueryString = convertKeysToQueryForm(currMap.adserverTargeting);

// for the last adUnit - trim last encoded ampersand from the converted query string
if ((index + 1) === arr.length) {
Expand Down
88 changes: 44 additions & 44 deletions test/spec/unit/core/targeting_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -690,171 +690,171 @@ describe('targeting tests', function () {
describe('sortByDealAndPriceBucketOrCpm', function() {
it('will properly sort bids when some bids have deals and some do not', function () {
let bids = [{
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'abc',
hb_pb: '1.00',
hb_deal: '1234'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'def',
hb_pb: '0.50',
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'ghi',
hb_pb: '20.00',
hb_deal: '4532'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'jkl',
hb_pb: '9.00',
hb_deal: '9864'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'mno',
hb_pb: '50.00',
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'pqr',
hb_pb: '100.00',
}
}];
bids.sort(sortByDealAndPriceBucketOrCpm());
expect(bids[0].adUnitTargeting.hb_adid).to.equal('ghi');
expect(bids[1].adUnitTargeting.hb_adid).to.equal('jkl');
expect(bids[2].adUnitTargeting.hb_adid).to.equal('abc');
expect(bids[3].adUnitTargeting.hb_adid).to.equal('pqr');
expect(bids[4].adUnitTargeting.hb_adid).to.equal('mno');
expect(bids[5].adUnitTargeting.hb_adid).to.equal('def');
expect(bids[0].adserverTargeting.hb_adid).to.equal('ghi');
expect(bids[1].adserverTargeting.hb_adid).to.equal('jkl');
expect(bids[2].adserverTargeting.hb_adid).to.equal('abc');
expect(bids[3].adserverTargeting.hb_adid).to.equal('pqr');
expect(bids[4].adserverTargeting.hb_adid).to.equal('mno');
expect(bids[5].adserverTargeting.hb_adid).to.equal('def');
});

it('will properly sort bids when all bids have deals', function () {
let bids = [{
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'abc',
hb_pb: '1.00',
hb_deal: '1234'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'def',
hb_pb: '0.50',
hb_deal: '4321'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'ghi',
hb_pb: '2.50',
hb_deal: '4532'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'jkl',
hb_pb: '2.00',
hb_deal: '9864'
}
}];
bids.sort(sortByDealAndPriceBucketOrCpm());
expect(bids[0].adUnitTargeting.hb_adid).to.equal('ghi');
expect(bids[1].adUnitTargeting.hb_adid).to.equal('jkl');
expect(bids[2].adUnitTargeting.hb_adid).to.equal('abc');
expect(bids[3].adUnitTargeting.hb_adid).to.equal('def');
expect(bids[0].adserverTargeting.hb_adid).to.equal('ghi');
expect(bids[1].adserverTargeting.hb_adid).to.equal('jkl');
expect(bids[2].adserverTargeting.hb_adid).to.equal('abc');
expect(bids[3].adserverTargeting.hb_adid).to.equal('def');
});

it('will properly sort bids when no bids have deals', function () {
let bids = [{
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'abc',
hb_pb: '1.00'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'def',
hb_pb: '0.10'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'ghi',
hb_pb: '10.00'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'jkl',
hb_pb: '10.01'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'mno',
hb_pb: '1.00'
}
}, {
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'pqr',
hb_pb: '100.00'
}
}];
bids.sort(sortByDealAndPriceBucketOrCpm());
expect(bids[0].adUnitTargeting.hb_adid).to.equal('pqr');
expect(bids[1].adUnitTargeting.hb_adid).to.equal('jkl');
expect(bids[2].adUnitTargeting.hb_adid).to.equal('ghi');
expect(bids[3].adUnitTargeting.hb_adid).to.equal('abc');
expect(bids[4].adUnitTargeting.hb_adid).to.equal('mno');
expect(bids[5].adUnitTargeting.hb_adid).to.equal('def');
expect(bids[0].adserverTargeting.hb_adid).to.equal('pqr');
expect(bids[1].adserverTargeting.hb_adid).to.equal('jkl');
expect(bids[2].adserverTargeting.hb_adid).to.equal('ghi');
expect(bids[3].adserverTargeting.hb_adid).to.equal('abc');
expect(bids[4].adserverTargeting.hb_adid).to.equal('mno');
expect(bids[5].adserverTargeting.hb_adid).to.equal('def');
});

it('will properly sort bids when some bids have deals and some do not and by cpm when flag is set to true', function () {
let bids = [{
cpm: 1.04,
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'abc',
hb_pb: '1.00',
hb_deal: '1234'
}
}, {
cpm: 0.50,
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'def',
hb_pb: '0.50',
hb_deal: '4532'
}
}, {
cpm: 0.53,
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'ghi',
hb_pb: '0.50',
hb_deal: '4532'
}
}, {
cpm: 9.04,
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'jkl',
hb_pb: '9.00',
hb_deal: '9864'
}
}, {
cpm: 50.00,
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'mno',
hb_pb: '50.00',
}
}, {
cpm: 100.00,
adUnitTargeting: {
adserverTargeting: {
hb_adid: 'pqr',
hb_pb: '100.00',
}
}];
bids.sort(sortByDealAndPriceBucketOrCpm(true));
expect(bids[0].adUnitTargeting.hb_adid).to.equal('jkl');
expect(bids[1].adUnitTargeting.hb_adid).to.equal('abc');
expect(bids[2].adUnitTargeting.hb_adid).to.equal('ghi');
expect(bids[3].adUnitTargeting.hb_adid).to.equal('def');
expect(bids[4].adUnitTargeting.hb_adid).to.equal('pqr');
expect(bids[5].adUnitTargeting.hb_adid).to.equal('mno');
expect(bids[0].adserverTargeting.hb_adid).to.equal('jkl');
expect(bids[1].adserverTargeting.hb_adid).to.equal('abc');
expect(bids[2].adserverTargeting.hb_adid).to.equal('ghi');
expect(bids[3].adserverTargeting.hb_adid).to.equal('def');
expect(bids[4].adserverTargeting.hb_adid).to.equal('pqr');
expect(bids[5].adserverTargeting.hb_adid).to.equal('mno');
});
});

Expand Down

0 comments on commit 697613f

Please sign in to comment.