Skip to content

Commit a6b42d4

Browse files
jsnellbakermkendall07
authored andcommitted
Fixes #2276 - video.playerSize and Size Mapping not working together (#2311)
* initial commit - fix to make playerSize and sizeConfig work * removed commented from testing * adding support to use [300, 600] syntax in video.playerSize field
1 parent 4930622 commit a6b42d4

File tree

2 files changed

+41
-27
lines changed

2 files changed

+41
-27
lines changed

src/adaptermanager.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,11 @@ exports.makeBidRequests = function(adUnits, auctionStart, auctionId, cbTimeout,
216216
};
217217

218218
exports.checkBidRequestSizes = (adUnits) => {
219-
Array.prototype.forEach.call(adUnits, adUnit => {
219+
function isArrayOfNums(val) {
220+
return Array.isArray(val) && val.length === 2 && utils.isInteger(val[0]) && utils.isInteger(val[1]);
221+
}
222+
223+
adUnits.forEach((adUnit) => {
220224
if (adUnit.sizes) {
221225
utils.logWarn('Usage of adUnits.sizes will eventually be deprecated. Please define size dimensions within the corresponding area of the mediaTypes.<object> (eg mediaTypes.banner.sizes).');
222226
}
@@ -235,10 +239,15 @@ exports.checkBidRequestSizes = (adUnits) => {
235239
if (mediaTypes && mediaTypes.video) {
236240
const video = mediaTypes.video;
237241
if (video.playerSize) {
238-
if (Array.isArray(video.playerSize) && video.playerSize.length === 2 && utils.isInteger(video.playerSize[0]) && utils.isInteger(video.playerSize[1])) {
242+
if (Array.isArray(video.playerSize) && video.playerSize.length === 1 && video.playerSize.every(isArrayOfNums)) {
239243
adUnit.sizes = video.playerSize;
244+
} else if (isArrayOfNums(video.playerSize)) {
245+
let newPlayerSize = [];
246+
newPlayerSize.push(video.playerSize);
247+
utils.logInfo(`Transforming video.playerSize from ${video.playerSize} to ${newPlayerSize} so it's in the proper format.`);
248+
adUnit.sizes = video.playerSize = newPlayerSize;
240249
} else {
241-
utils.logError('Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [640, 480]. Removing invalid mediaTypes.video.playerSize property from request.');
250+
utils.logError('Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request.');
242251
delete adUnit.mediaTypes.video.playerSize;
243252
}
244253
}

test/spec/unit/core/adapterManager_spec.js

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -857,18 +857,23 @@ describe('adapterManager tests', () => {
857857

858858
describe('isValidBidRequest', () => {
859859
describe('positive tests for validating bid request', () => {
860-
beforeEach(() => {});
860+
beforeEach(() => {
861+
sinon.stub(utils, 'logInfo');
862+
});
861863

862-
afterEach(() => {});
863-
it('should main adUnit structure and adUnits.sizes is replaced', () => {
864+
afterEach(() => {
865+
utils.logInfo.restore();
866+
});
867+
868+
it('should maintain adUnit structure and adUnits.sizes is replaced', () => {
864869
let fullAdUnit = [{
865870
sizes: [[300, 250], [300, 600]],
866871
mediaTypes: {
867872
banner: {
868873
sizes: [[300, 250]]
869874
},
870875
video: {
871-
playerSize: [640, 480]
876+
playerSize: [[640, 480]]
872877
},
873878
native: {
874879
image: {
@@ -882,8 +887,8 @@ describe('adapterManager tests', () => {
882887
}
883888
}];
884889
let result = checkBidRequestSizes(fullAdUnit);
885-
expect(result[0].sizes).to.deep.equal([640, 480]);
886-
expect(result[0].mediaTypes.video.playerSize).to.deep.equal([640, 480]);
890+
expect(result[0].sizes).to.deep.equal([[640, 480]]);
891+
expect(result[0].mediaTypes.video.playerSize).to.deep.equal([[640, 480]]);
887892
expect(result[0].mediaTypes.native.image.sizes).to.deep.equal([150, 150]);
888893
expect(result[0].mediaTypes.native.icon.sizes).to.deep.equal([75, 75]);
889894
expect(result[0].mediaTypes.native.image.aspect_ratios).to.deep.equal([140, 140]);
@@ -916,7 +921,7 @@ describe('adapterManager tests', () => {
916921
mediaTypes: {
917922
video: {
918923
context: 'outstream',
919-
playerSize: [400, 350]
924+
playerSize: [[400, 350]]
920925
},
921926
native: {
922927
image: {
@@ -927,8 +932,22 @@ describe('adapterManager tests', () => {
927932
}
928933
}];
929934
result = checkBidRequestSizes(mixedAdUnit);
930-
expect(result[0].sizes).to.deep.equal([400, 350]);
935+
expect(result[0].sizes).to.deep.equal([[400, 350]]);
936+
expect(result[0].mediaTypes.video).to.exist;
937+
938+
let altVideoPlayerSize = [{
939+
sizes: [[600, 600]],
940+
mediaTypes: {
941+
video: {
942+
playerSize: [640, 480]
943+
}
944+
}
945+
}];
946+
result = checkBidRequestSizes(altVideoPlayerSize);
947+
expect(result[0].sizes).to.deep.equal([[640, 480]]);
948+
expect(result[0].mediaTypes.video.playerSize).to.deep.equal([[640, 480]]);
931949
expect(result[0].mediaTypes.video).to.exist;
950+
sinon.assert.calledOnce(utils.logInfo);
932951
});
933952
});
934953

@@ -959,7 +978,7 @@ describe('adapterManager tests', () => {
959978
sizes: [[600, 600]],
960979
mediaTypes: {
961980
video: {
962-
playerSize: '600x400'
981+
playerSize: ['600x400']
963982
}
964983
}
965984
}];
@@ -973,7 +992,7 @@ describe('adapterManager tests', () => {
973992
sizes: [[600, 600]],
974993
mediaTypes: {
975994
video: {
976-
playerSize: ['300', '200']
995+
playerSize: [['300', '200']]
977996
}
978997
}
979998
}];
@@ -983,20 +1002,6 @@ describe('adapterManager tests', () => {
9831002
expect(result[0].mediaTypes.video).to.exist;
9841003
sinon.assert.called(utils.logError);
9851004

986-
let badVideo3 = [{
987-
sizes: [[600, 600]],
988-
mediaTypes: {
989-
video: {
990-
playerSize: [[640, 480]]
991-
}
992-
}
993-
}];
994-
result = checkBidRequestSizes(badVideo3);
995-
expect(result[0].sizes).to.deep.equal([[600, 600]]);
996-
expect(result[0].mediaTypes.video.playerSize).to.be.undefined;
997-
expect(result[0].mediaTypes.video).to.exist;
998-
sinon.assert.called(utils.logError);
999-
10001005
let badNativeImgSize = [{
10011006
mediaTypes: {
10021007
native: {

0 commit comments

Comments
 (0)