diff --git a/modules/visxBidAdapter.js b/modules/visxBidAdapter.js index 7d124864bc6..535beb8af3c 100644 --- a/modules/visxBidAdapter.js +++ b/modules/visxBidAdapter.js @@ -258,7 +258,7 @@ function _addBidResponse(serverBid, bidsMap, currency, bidResponses, bidsWithout bidResponse.ext = serverBid.ext.prebid; } - if (!_isVideoBid(bid)) { + if (!_isVideoInstreamBid(bid)) { bidResponse.ad = serverBid.adm; } else { bidResponse.vastXml = serverBid.adm; @@ -298,6 +298,10 @@ function _isVideoBid(bid) { return bid.mediaType === VIDEO || deepAccess(bid, 'mediaTypes.video'); } +function _isVideoInstreamBid(bid) { + return _isVideoBid(bid) && deepAccess(bid, 'mediaTypes.video', {}).context === VIDEO_INSTREAM; +} + function _isBannerBid(bid) { return bid.mediaType === BANNER || deepAccess(bid, 'mediaTypes.banner'); } @@ -305,7 +309,7 @@ function _isBannerBid(bid) { function _isValidVideoBid(bid, logErrors = false) { let result = true; const videoMediaType = deepAccess(bid, 'mediaTypes.video'); - if (videoMediaType.context !== VIDEO_INSTREAM) { + if (!_isVideoInstreamBid(bid)) { if (logErrors) { logError(LOG_ERROR_MESS.onlyVideoInstream); } diff --git a/test/spec/modules/visxBidAdapter_spec.js b/test/spec/modules/visxBidAdapter_spec.js index 62049e212f7..4a8207768ab 100755 --- a/test/spec/modules/visxBidAdapter_spec.js +++ b/test/spec/modules/visxBidAdapter_spec.js @@ -848,6 +848,57 @@ describe('VisxAdapter', function () { expect(result).to.deep.equal(expectedResponse); }); + it('handles multiformat bid response with outstream+banner as banner', function () { + const fullResponse = [ + {'bid': [{'price': 0.5, 'adm': '', 'auid': 903537, 'w': 400, 'h': 300, 'cur': 'EUR', 'mediaType': 'video'}], 'seat': '1'}, + ]; + const bidRequests = [ + { + 'bidder': 'visx', + 'params': { + 'uid': '903537' + }, + 'adUnitCode': 'adunit-code-1', + 'mediaTypes': { + 'video': { + 'context': 'outstream', + 'playerSize': [400, 300], + 'mimes': ['video/mp4'], + 'protocols': [3, 6] + } + }, + 'banner': { + 'sizes': [] + }, + 'sizes': [[400, 300]], + 'bidId': '2164be6358b9', + 'bidderRequestId': '106efe3247', + 'auctionId': '32a1f276cb87cb8', + } + ]; + const request = spec.buildRequests(bidRequests); + const expectedResponse = [ + { + 'ad': '', + 'requestId': '2164be6358b9', + 'cpm': 0.5, + 'creativeId': 903537, + 'dealId': undefined, + 'width': 400, + 'height': 300, + 'currency': 'EUR', + 'netRevenue': true, + 'ttl': 360, + 'meta': { + 'advertiserDomains': [], + 'mediaType': 'video', + }, + } + ]; + const result = spec.interpretResponse({'body': {'seatbid': fullResponse}}, request); + expect(result).to.deep.equal(expectedResponse); + }); + it('should get right ext data in bid response', function () { const bidRequests = [ {