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 = [
{