From 864506c0ac28c4d4f50c24ccd4c5b3fb425d08ec Mon Sep 17 00:00:00 2001 From: shahinrahbariasl <56240400+shahinrahbariasl@users.noreply.github.com> Date: Wed, 19 Oct 2022 12:13:11 -0400 Subject: [PATCH] IX Bid Adapter: send bid floor per size in format ext (#9084) * feat: send bid floor per size in format ext [PB-1311] * fix: remove typo [PB-1311] Co-authored-by: shahin.rahbariasl --- modules/ixBidAdapter.js | 13 +++++++++---- test/spec/modules/ixBidAdapter_spec.js | 12 ++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/ixBidAdapter.js b/modules/ixBidAdapter.js index 6913c98013c..fc387fac76a 100644 --- a/modules/ixBidAdapter.js +++ b/modules/ixBidAdapter.js @@ -809,10 +809,15 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) { }, }; - // We add sid in imp.ext.sid therefore, remove from banner.format[].ext - for (let bannerFormat of _bannerImpression.banner.format) { - if (bannerFormat.ext != null && bannerFormat.ext.sid != null) { - delete bannerFormat.ext.sid; + for (let i = 0; i < _bannerImpression.banner.format.length; i++) { + // We add sid in imp.ext.sid therefore, remove from banner.format[].ext + if (_bannerImpression.banner.format[i].ext != null && _bannerImpression.banner.format[i].ext.sid != null) { + delete _bannerImpression.banner.format[i].ext.sid; + } + + // add floor per size + if ('bidfloor' in impressionObjects[i]) { + _bannerImpression.banner.format[i].ext.bidfloor = impressionObjects[i].bidfloor } } diff --git a/test/spec/modules/ixBidAdapter_spec.js b/test/spec/modules/ixBidAdapter_spec.js index b110c9a4872..a1b79358e8c 100644 --- a/test/spec/modules/ixBidAdapter_spec.js +++ b/test/spec/modules/ixBidAdapter_spec.js @@ -1870,6 +1870,18 @@ describe('IndexexchangeAdapter', function () { expect(impression.banner.format[0].ext.fl).to.equal('x'); }); + it('banner multi size impression should have bidFloor both in imp and format ext obejcts', function () { + const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]); + bid.params.bidFloor = 50; + bid.params.bidFloorCur = 'USD'; + const requestBidFloor = spec.buildRequests([bid], {})[0]; + const impression = JSON.parse(requestBidFloor.data.r).imp[0]; + + expect(impression.bidfloor).to.equal(bid.params.bidFloor); + expect(impression.bidfloorcur).to.equal(bid.params.bidFloorCur); + expect(impression.banner.format[0].ext.bidfloor).to.equal(50); + }); + it('missing sizes impressions should contain floors from priceFloors module ', function () { const bid = utils.deepClone(ONE_BANNER[0]); bid.mediaTypes.banner.sizes.push([500, 400])