Skip to content

Commit 7106773

Browse files
authored
Merge branch 'MAINTAG-446' (#13415)
1 parent 6848fba commit 7106773

File tree

2 files changed

+123
-16
lines changed

2 files changed

+123
-16
lines changed

modules/onetagBidAdapter.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ function getPageInfo(bidderRequest) {
301301
timing: getTiming(),
302302
version: {
303303
prebid: '$prebid.version$',
304-
adapter: '1.1.3'
304+
adapter: '1.1.4'
305305
}
306306
};
307307
}
@@ -476,23 +476,23 @@ function getUserSyncs(syncOptions, serverResponses, gdprConsent, uspConsent, gpp
476476

477477
function getBidFloor(bidRequest, mediaType, sizes) {
478478
if (typeof bidRequest.getFloor !== 'function') return [];
479-
const getFloorObject = (size) => {
480-
const floorData = bidRequest.getFloor({
481-
currency: 'EUR',
482-
mediaType: mediaType || '*',
483-
size: size || '*'
484-
}) || {};
485-
486-
return {
487-
...floorData,
488-
size: size ? deepClone(size) : undefined,
489-
floor: floorData.floor != null ? floorData.floor : null
490-
};
479+
const getFloorObject = (size) => {
480+
const floorData = bidRequest.getFloor({
481+
currency: 'EUR',
482+
mediaType: mediaType || '*',
483+
size: size || null
484+
}) || {};
485+
486+
return {
487+
...floorData,
488+
size: size && size.length == 2 ? {width: size[0], height: size[1]} : null,
489+
floor: floorData.floor != null ? floorData.floor : null
490+
};
491491
};
492+
492493
if (Array.isArray(sizes) && sizes.length > 0) {
493494
return sizes.map(size => getFloorObject([size.width, size.height]));
494-
}
495-
return [getFloorObject('*')];
495+
} return [getFloorObject(null)];
496496
}
497497

498498
export function isSchainValid(schain) {

test/spec/modules/onetagBidAdapter_spec.js

Lines changed: 108 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,28 @@ import { hasTypeNative } from '../../../modules/onetagBidAdapter';
77

88
const NATIVE_SUFFIX = 'Ad';
99

10+
const getFloor = function(params) {
11+
let floorPrice = 0.0001;
12+
switch (params.mediaType) {
13+
case BANNER:
14+
floorPrice = 1.0;
15+
break;
16+
case VIDEO:
17+
floorPrice = 2.0;
18+
break;
19+
case INSTREAM:
20+
floorPrice = 3.0;
21+
break;
22+
case OUTSTREAM:
23+
floorPrice = 4.0;
24+
break;
25+
case NATIVE:
26+
floorPrice = 5.0;
27+
break;
28+
}
29+
return {currency: params.currency, floor: floorPrice};
30+
};
31+
1032
describe('onetag', function () {
1133
function createBid() {
1234
return {
@@ -84,6 +106,17 @@ describe('onetag', function () {
84106
bid.mediaTypes.native = {};
85107
bid.mediaTypes.native.adTemplate = bid.nativeParams.adTemplate;
86108
bid.mediaTypes.native.ortb = ortbConversion;
109+
bid.floors = {
110+
currency: 'EUR',
111+
schema: {
112+
delimiter: '|',
113+
fields: [ 'mediaType', 'size' ]
114+
},
115+
values: {
116+
'native|*': 1.10
117+
}
118+
}
119+
bid.getFloor = getFloor;
87120
return bid;
88121
}
89122

@@ -106,7 +139,7 @@ describe('onetag', function () {
106139
assets: [{
107140
id: 1,
108141
required: 1,
109-
title: {
142+
title: {
110143
len: 140
111144
}
112145
},
@@ -142,6 +175,19 @@ describe('onetag', function () {
142175
}]
143176
}
144177
};
178+
179+
bid.floors = {
180+
currency: 'EUR',
181+
schema: {
182+
delimiter: '|',
183+
fields: [ 'mediaType', 'size' ]
184+
},
185+
values: {
186+
'native|*': 1.10
187+
}
188+
}
189+
bid.getFloor = getFloor;
190+
145191
return bid;
146192
}
147193

@@ -151,6 +197,18 @@ describe('onetag', function () {
151197
bid.mediaTypes.banner = {
152198
sizes: [[300, 250]]
153199
};
200+
bid.floors = {
201+
currency: 'EUR',
202+
schema: {
203+
delimiter: '|',
204+
fields: [ 'mediaType', 'size' ]
205+
},
206+
values: {
207+
'banner|300x250': 0.10
208+
}
209+
}
210+
bid.getFloor = getFloor;
211+
154212
return bid;
155213
}
156214

@@ -162,6 +220,17 @@ describe('onetag', function () {
162220
mimes: ['video/mp4', 'video/webm', 'application/javascript', 'video/ogg'],
163221
playerSize: [640, 480]
164222
};
223+
bid.floors = {
224+
currency: 'EUR',
225+
schema: {
226+
delimiter: '|',
227+
fields: [ 'mediaType', 'size' ]
228+
},
229+
values: {
230+
'video|640x480': 0.10
231+
}
232+
}
233+
bid.getFloor = getFloor;
165234
return bid;
166235
}
167236

@@ -173,6 +242,17 @@ describe('onetag', function () {
173242
mimes: ['video/mp4', 'video/webm', 'application/javascript', 'video/ogg'],
174243
playerSize: [640, 480]
175244
};
245+
bid.floors = {
246+
currency: 'EUR',
247+
schema: {
248+
delimiter: '|',
249+
fields: [ 'mediaType', 'size' ]
250+
},
251+
values: {
252+
'video|640x480': 0.10
253+
}
254+
}
255+
bid.getFloor = getFloor;
176256
return bid;
177257
}
178258

@@ -483,6 +563,33 @@ describe('onetag', function () {
483563
}
484564
expect(bid.bidId).to.be.a('string');
485565
expect(bid.pubId).to.be.a('string');
566+
expect(bid.priceFloors).to.be.an('array');
567+
expect(bid.priceFloors).to.satisfy(function (priceFloors) {
568+
if (priceFloors.length === 0) {
569+
return true;
570+
}
571+
return priceFloors.every(function (priceFloor) {
572+
expect(priceFloor).to.have.all.keys('currency', 'floor', 'size');
573+
expect(priceFloor.currency).to.be.a('string');
574+
expect(priceFloor.floor).to.be.a('number');
575+
expect(priceFloor.size).to.satisfy(function (size) {
576+
if (typeof size !== 'object' && size !== null && typeof size !== 'undefined') {
577+
return false;
578+
}
579+
if (size !== null) {
580+
const keys = Object.keys(size);
581+
if (keys.length == 0) {
582+
return true;
583+
}
584+
expect(size).to.have.keys('width', 'height');
585+
expect(size.width).to.be.a('number');
586+
expect(size.height).to.be.a('number');
587+
}
588+
return true;
589+
});
590+
return true;
591+
});
592+
});
486593
}
487594
});
488595
it('Returns empty data if no valid requests are passed', function () {

0 commit comments

Comments
 (0)