prebid.js 9.26.0 → 9.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/creative/renderers/native/renderer.js +29 -8
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/acuityadsBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioRtdProvider.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/akamaiDapRtdProvider.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bitmediaBidAdapter.js +1 -1
- package/dist/blueBidAdapter.js +1 -0
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgeuppBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/conceptxBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contxtfulBidAdapter.js +1 -1
- package/dist/contxtfulRtdProvider.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/creative-renderer-native.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +7 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/equativBidAdapter.js +1 -1
- package/dist/escalaxBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsBidAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmobiBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.js +1 -1
- package/dist/intentIqConstants.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerVideoProvider.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentId.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/liveIntentRtdProvider.js +1 -0
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/madsenseBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mspa.js +1 -1
- package/dist/nativeRendering.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +193 -191
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/omsBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/orbitsoftBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/riseUtils.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/showheroes-bsBidAdapter.js +1 -1
- package/dist/sizeUtils.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sparteoBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/symitriDapRtdProvider.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vdoaiBidAdapter.js +1 -1
- package/dist/vidazooUtils.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/wurflRtdProvider.js +1 -1
- package/dist/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldlabBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/liveIntentRtdProviderExample.html +164 -0
- package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +3 -1
- package/integrationExamples/videoModule/jwplayer/bidRequestScheduling.html +2 -0
- package/integrationExamples/videoModule/jwplayer/bidsBackHandlerOverride.html +2 -0
- package/integrationExamples/videoModule/jwplayer/eventListeners.html +2 -0
- package/integrationExamples/videoModule/jwplayer/eventsUI.html +2 -0
- package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +2 -0
- package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +3 -1
- package/integrationExamples/videoModule/jwplayer/playlist.html +3 -1
- package/libraries/creative-renderer-native/renderer.js +1 -1
- package/libraries/intentIqConstants/intentIqConstants.js +1 -1
- package/libraries/liveIntentId/shared.js +18 -5
- package/libraries/mspa/activityControls.js +26 -7
- package/libraries/riseUtils/constants.js +20 -0
- package/libraries/riseUtils/index.js +143 -38
- package/libraries/sizeUtils/sizeUtils.js +25 -0
- package/libraries/vidazooUtils/bidderUtils.js +2 -0
- package/modules/33acrossIdSystem.js +64 -23
- package/modules/33acrossIdSystem.md +2 -1
- package/modules/acuityadsBidAdapter.js +1 -1
- package/modules/adagioRtdProvider.js +15 -9
- package/modules/adlooxAnalyticsAdapter.js +12 -6
- package/modules/blueBidAdapter.js +122 -0
- package/modules/blueBidAdapter.md +28 -0
- package/modules/conceptxBidAdapter.js +2 -0
- package/modules/consumableBidAdapter.js +3 -1
- package/modules/contxtfulBidAdapter.js +25 -13
- package/modules/contxtfulRtdProvider.js +9 -12
- package/modules/eplanningBidAdapter.js +5 -1
- package/modules/equativBidAdapter.js +13 -18
- package/modules/escalaxBidAdapter.js +2 -2
- package/modules/eskimiBidAdapter.js +4 -1
- package/modules/improvedigitalBidAdapter.js +0 -67
- package/modules/intentIqAnalyticsAdapter.js +1 -1
- package/modules/ixBidAdapter.js +7 -1
- package/modules/jwplayerVideoProvider.js +99 -6
- package/modules/liveIntentRtdProvider.js +52 -0
- package/modules/liveIntentRtdProvider.md +45 -0
- package/modules/minutemediaBidAdapter.js +6 -80
- package/modules/minutemediaBidAdapter.md +1 -1
- package/modules/missenaBidAdapter.js +2 -0
- package/modules/nativeRendering.js +2 -1
- package/modules/omsBidAdapter.js +25 -11
- package/modules/omsBidAdapter.md +15 -0
- package/modules/openwebBidAdapter.js +6 -81
- package/modules/openwebBidAdapter.md +1 -1
- package/modules/openxBidAdapter.js +19 -6
- package/modules/openxBidAdapter.md +46 -1
- package/modules/orbitsoftBidAdapter.js +1 -1
- package/modules/permutiveRtdProvider.md +6 -5
- package/modules/pubmaticAnalyticsAdapter.js +61 -19
- package/modules/riseBidAdapter.js +11 -92
- package/modules/riseBidAdapter.md +1 -1
- package/modules/sharedIdSystem.js +9 -3
- package/modules/shinezBidAdapter.js +4 -80
- package/modules/shinezBidAdapter.md +2 -2
- package/modules/stnBidAdapter.js +7 -86
- package/modules/stnBidAdapter.md +1 -1
- package/modules/symitriDapRtdProvider.js +4 -4
- package/modules/symitriDapRtdProvider.md +2 -2
- package/modules/userId/eids.js +32 -5
- package/modules/wurflRtdProvider.js +7 -1
- package/modules/wurflRtdProvider.md +1 -1
- package/modules/yieldlabBidAdapter.js +2 -2
- package/modules/zeta_global_sspAnalyticsAdapter.js +5 -2
- package/package.json +2 -2
- package/src/adapters/bidderFactory.js +7 -6
- package/src/adloader.js +0 -1
- package/src/native.js +6 -3
- package/test/spec/creative/nativeRenderer_spec.js +45 -10
- package/test/spec/libraries/mspa/activityControls_spec.js +63 -9
- package/test/spec/modules/33acrossIdSystem_spec.js +288 -2
- package/test/spec/modules/acuityadsBidAdapter_spec.js +49 -0
- package/test/spec/modules/adagioRtdProvider_spec.js +119 -3
- package/test/spec/modules/adlooxAdServerVideo_spec.js +0 -1
- package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +31 -0
- package/test/spec/modules/blueBidAdapter_spec.js +91 -0
- package/test/spec/modules/consumableBidAdapter_spec.js +42 -0
- package/test/spec/modules/contxtfulRtdProvider_spec.js +37 -2
- package/test/spec/modules/eplanningBidAdapter_spec.js +74 -1
- package/test/spec/modules/equativBidAdapter_spec.js +5 -6
- package/test/spec/modules/excoBidAdapter_spec.js +33 -18
- package/test/spec/modules/illuminBidAdapter_spec.js +33 -18
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
- package/test/spec/modules/ixBidAdapter_spec.js +68 -2
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +33 -18
- package/test/spec/modules/liveIntentExternalIdSystem_spec.js +16 -6
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +16 -6
- package/test/spec/modules/liveIntentIdSystem_spec.js +49 -6
- package/test/spec/modules/liveIntentRtdProvider_spec.js +116 -0
- package/test/spec/modules/minutemediaBidAdapter_spec.js +126 -6
- package/test/spec/modules/missenaBidAdapter_spec.js +12 -3
- package/test/spec/modules/omsBidAdapter_spec.js +78 -0
- package/test/spec/modules/openwebBidAdapter_spec.js +126 -6
- package/test/spec/modules/openxBidAdapter_spec.js +236 -8
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +29 -36
- package/test/spec/modules/riseBidAdapter_spec.js +126 -6
- package/test/spec/modules/sharedIdSystem_spec.js +25 -1
- package/test/spec/modules/shinezBidAdapter_spec.js +133 -9
- package/test/spec/modules/shinezRtbBidAdapter_spec.js +33 -18
- package/test/spec/modules/stnBidAdapter_spec.js +126 -5
- package/test/spec/modules/symitriDapRtdProvider_spec.js +36 -0
- package/test/spec/modules/tagorasBidAdapter_spec.js +33 -18
- package/test/spec/modules/twistDigitalBidAdapter_spec.js +34 -18
- package/test/spec/modules/userId_spec.js +103 -2
- package/test/spec/modules/vidazooBidAdapter_spec.js +34 -18
- package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +81 -0
- package/test/spec/modules/wurflRtdProvider_spec.js +8 -3
- package/test/spec/modules/yieldlabBidAdapter_spec.js +5 -5
- package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +3 -2
- package/test/spec/native_spec.js +4 -2
- package/test/spec/unit/core/bidderFactory_spec.js +120 -43
|
@@ -94,6 +94,36 @@ const VIDEO_BID = {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
const ORTB2_DEVICE = {
|
|
98
|
+
sua: {
|
|
99
|
+
'source': 2,
|
|
100
|
+
'platform': {
|
|
101
|
+
'brand': 'Android',
|
|
102
|
+
'version': ['8', '0', '0']
|
|
103
|
+
},
|
|
104
|
+
'browsers': [
|
|
105
|
+
{'brand': 'Not_A Brand', 'version': ['99', '0', '0', '0']},
|
|
106
|
+
{'brand': 'Google Chrome', 'version': ['109', '0', '5414', '119']},
|
|
107
|
+
{'brand': 'Chromium', 'version': ['109', '0', '5414', '119']}
|
|
108
|
+
],
|
|
109
|
+
'mobile': 1,
|
|
110
|
+
'model': 'SM-G955U',
|
|
111
|
+
'bitness': '64',
|
|
112
|
+
'architecture': ''
|
|
113
|
+
},
|
|
114
|
+
w: 980,
|
|
115
|
+
h: 1720,
|
|
116
|
+
dnt: 0,
|
|
117
|
+
ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/125.0.6422.80 Mobile/15E148 Safari/604.1',
|
|
118
|
+
language: 'en',
|
|
119
|
+
devicetype: 1,
|
|
120
|
+
make: 'Apple',
|
|
121
|
+
model: 'iPhone 12 Pro Max',
|
|
122
|
+
os: 'iOS',
|
|
123
|
+
osv: '17.4',
|
|
124
|
+
ext: {fiftyonedegrees_deviceId: '17595-133085-133468-18092'},
|
|
125
|
+
};
|
|
126
|
+
|
|
97
127
|
const BIDDER_REQUEST = {
|
|
98
128
|
'gdprConsent': {
|
|
99
129
|
'consentString': 'consent_string',
|
|
@@ -129,24 +159,7 @@ const BIDDER_REQUEST = {
|
|
|
129
159
|
'gpp_sid': [7],
|
|
130
160
|
'coppa': 0
|
|
131
161
|
},
|
|
132
|
-
|
|
133
|
-
'sua': {
|
|
134
|
-
'source': 2,
|
|
135
|
-
'platform': {
|
|
136
|
-
'brand': 'Android',
|
|
137
|
-
'version': ['8', '0', '0']
|
|
138
|
-
},
|
|
139
|
-
'browsers': [
|
|
140
|
-
{'brand': 'Not_A Brand', 'version': ['99', '0', '0', '0']},
|
|
141
|
-
{'brand': 'Google Chrome', 'version': ['109', '0', '5414', '119']},
|
|
142
|
-
{'brand': 'Chromium', 'version': ['109', '0', '5414', '119']}
|
|
143
|
-
],
|
|
144
|
-
'mobile': 1,
|
|
145
|
-
'model': 'SM-G955U',
|
|
146
|
-
'bitness': '64',
|
|
147
|
-
'architecture': ''
|
|
148
|
-
}
|
|
149
|
-
},
|
|
162
|
+
device: ORTB2_DEVICE,
|
|
150
163
|
user: {
|
|
151
164
|
data: [
|
|
152
165
|
{
|
|
@@ -341,6 +354,7 @@ describe('TwistDigitalBidAdapter', function () {
|
|
|
341
354
|
},
|
|
342
355
|
contentLang: 'en',
|
|
343
356
|
coppa: 0,
|
|
357
|
+
device: ORTB2_DEVICE,
|
|
344
358
|
contentData: [{
|
|
345
359
|
'name': 'example.com',
|
|
346
360
|
'ext': {
|
|
@@ -422,6 +436,7 @@ describe('TwistDigitalBidAdapter', function () {
|
|
|
422
436
|
'bitness': '64',
|
|
423
437
|
'architecture': ''
|
|
424
438
|
},
|
|
439
|
+
device: ORTB2_DEVICE,
|
|
425
440
|
url: 'https%3A%2F%2Fwww.greatsite.com',
|
|
426
441
|
referrer: 'https://www.somereferrer.com',
|
|
427
442
|
cb: 1000,
|
|
@@ -510,6 +525,7 @@ describe('TwistDigitalBidAdapter', function () {
|
|
|
510
525
|
'bitness': '64',
|
|
511
526
|
'architecture': ''
|
|
512
527
|
},
|
|
528
|
+
device: ORTB2_DEVICE,
|
|
513
529
|
url: 'https%3A%2F%2Fwww.greatsite.com',
|
|
514
530
|
referrer: 'https://www.somereferrer.com',
|
|
515
531
|
cb: 1000,
|
|
@@ -456,14 +456,54 @@ describe('User ID', function () {
|
|
|
456
456
|
{'mockId2v1': {source: 'mock2source', atype: 2, getEidExt: () => ({v: 1})}}),
|
|
457
457
|
createMockIdSubmodule('mockId2v2', null, null,
|
|
458
458
|
{'mockId2v2': {source: 'mock2source', atype: 2, getEidExt: () => ({v: 2})}}),
|
|
459
|
+
createMockIdSubmodule('mockId2v3', null, null, {
|
|
460
|
+
'mockId2v3'(ids) {
|
|
461
|
+
return {
|
|
462
|
+
source: 'mock2source',
|
|
463
|
+
inserter: 'ins',
|
|
464
|
+
ext: {v: 2},
|
|
465
|
+
uids: ids.map(id => ({id, atype: 2}))
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}),
|
|
469
|
+
createMockIdSubmodule('mockId2v4', null, null, {
|
|
470
|
+
'mockId2v4'(ids) {
|
|
471
|
+
return ids.map(id => ({
|
|
472
|
+
uids: [{id, atype: 0}],
|
|
473
|
+
source: 'mock2source',
|
|
474
|
+
inserter: 'ins',
|
|
475
|
+
ext: {v: 2}
|
|
476
|
+
}))
|
|
477
|
+
}
|
|
478
|
+
})
|
|
479
|
+
]);
|
|
480
|
+
});
|
|
481
|
+
|
|
482
|
+
it('should filter out non-string uid returned by generator functions', () => {
|
|
483
|
+
const eids = createEidsArray({
|
|
484
|
+
mockId2v3: [null, 'id1', 123],
|
|
485
|
+
});
|
|
486
|
+
expect(eids[0].uids).to.eql([
|
|
487
|
+
{
|
|
488
|
+
atype: 2,
|
|
489
|
+
id: 'id1'
|
|
490
|
+
}
|
|
459
491
|
]);
|
|
460
492
|
});
|
|
461
493
|
|
|
462
|
-
it('should
|
|
494
|
+
it('should filter out entire EID if none of the uids are strings', () => {
|
|
495
|
+
const eids = createEidsArray({
|
|
496
|
+
mockId2v3: [null],
|
|
497
|
+
});
|
|
498
|
+
expect(eids).to.eql([]);
|
|
499
|
+
})
|
|
500
|
+
|
|
501
|
+
it('should group UIDs by everything except uid', () => {
|
|
463
502
|
const eids = createEidsArray({
|
|
464
503
|
mockId1: ['mock-1-1', 'mock-1-2'],
|
|
465
504
|
mockId2v1: ['mock-2-1', 'mock-2-2'],
|
|
466
|
-
mockId2v2: ['mock-2-1', 'mock-2-2']
|
|
505
|
+
mockId2v2: ['mock-2-1', 'mock-2-2'],
|
|
506
|
+
mockId2v3: ['mock-2-1', 'mock-2-2']
|
|
467
507
|
});
|
|
468
508
|
expect(eids).to.eql([
|
|
469
509
|
{
|
|
@@ -510,10 +550,50 @@ describe('User ID', function () {
|
|
|
510
550
|
atype: 2,
|
|
511
551
|
}
|
|
512
552
|
]
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
source: 'mock2source',
|
|
556
|
+
inserter: 'ins',
|
|
557
|
+
ext: {v: 2},
|
|
558
|
+
uids: [
|
|
559
|
+
{
|
|
560
|
+
id: 'mock-2-1',
|
|
561
|
+
atype: 2,
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
id: 'mock-2-2',
|
|
565
|
+
atype: 2,
|
|
566
|
+
}
|
|
567
|
+
]
|
|
513
568
|
}
|
|
514
569
|
])
|
|
515
570
|
});
|
|
516
571
|
|
|
572
|
+
it('should group matching EIDs regardless of entry order', () => {
|
|
573
|
+
const eids = createEidsArray({
|
|
574
|
+
mockId2v3: ['id1', 'id2'],
|
|
575
|
+
mockId2v4: ['id3']
|
|
576
|
+
});
|
|
577
|
+
expect(eids).to.eql([{
|
|
578
|
+
source: 'mock2source',
|
|
579
|
+
inserter: 'ins',
|
|
580
|
+
uids: [
|
|
581
|
+
{
|
|
582
|
+
id: 'id1',
|
|
583
|
+
atype: 2,
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
id: 'id2',
|
|
587
|
+
atype: 2
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
id: 'id3',
|
|
591
|
+
atype: 0
|
|
592
|
+
}
|
|
593
|
+
],
|
|
594
|
+
ext: {v: 2}
|
|
595
|
+
}])
|
|
596
|
+
})
|
|
517
597
|
it('when merging with pubCommonId, should not alter its eids', () => {
|
|
518
598
|
const uid = {
|
|
519
599
|
pubProvidedId: [
|
|
@@ -705,6 +785,27 @@ describe('User ID', function () {
|
|
|
705
785
|
});
|
|
706
786
|
});
|
|
707
787
|
|
|
788
|
+
it('pbjs.getUserIdsAsEids should pass config to eid function', async function () {
|
|
789
|
+
const eidFn = sinon.stub();
|
|
790
|
+
init(config);
|
|
791
|
+
setSubmoduleRegistry([createMockIdSubmodule('mockId', null, null, {
|
|
792
|
+
mockId: eidFn
|
|
793
|
+
})]);
|
|
794
|
+
const moduleConfig = {
|
|
795
|
+
name: 'mockId',
|
|
796
|
+
value: {mockId: 'mockIdValue'},
|
|
797
|
+
some: 'config'
|
|
798
|
+
};
|
|
799
|
+
config.setConfig({
|
|
800
|
+
userSync: {
|
|
801
|
+
auctionDelay: 10,
|
|
802
|
+
userIds: [moduleConfig]
|
|
803
|
+
}
|
|
804
|
+
});
|
|
805
|
+
await getGlobal().getUserIdsAsync();
|
|
806
|
+
sinon.assert.calledWith(eidFn, ['mockIdValue'], moduleConfig);
|
|
807
|
+
})
|
|
808
|
+
|
|
708
809
|
it('pbjs.getUserIdsAsEids should prioritize user ids according to config available to core', () => {
|
|
709
810
|
init(config);
|
|
710
811
|
setSubmoduleRegistry([
|
|
@@ -98,6 +98,36 @@ const VIDEO_BID = {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
const ORTB2_DEVICE = {
|
|
102
|
+
sua: {
|
|
103
|
+
'source': 2,
|
|
104
|
+
'platform': {
|
|
105
|
+
'brand': 'Android',
|
|
106
|
+
'version': ['8', '0', '0']
|
|
107
|
+
},
|
|
108
|
+
'browsers': [
|
|
109
|
+
{'brand': 'Not_A Brand', 'version': ['99', '0', '0', '0']},
|
|
110
|
+
{'brand': 'Google Chrome', 'version': ['109', '0', '5414', '119']},
|
|
111
|
+
{'brand': 'Chromium', 'version': ['109', '0', '5414', '119']}
|
|
112
|
+
],
|
|
113
|
+
'mobile': 1,
|
|
114
|
+
'model': 'SM-G955U',
|
|
115
|
+
'bitness': '64',
|
|
116
|
+
'architecture': ''
|
|
117
|
+
},
|
|
118
|
+
w: 980,
|
|
119
|
+
h: 1720,
|
|
120
|
+
dnt: 0,
|
|
121
|
+
ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/125.0.6422.80 Mobile/15E148 Safari/604.1',
|
|
122
|
+
language: 'en',
|
|
123
|
+
devicetype: 1,
|
|
124
|
+
make: 'Apple',
|
|
125
|
+
model: 'iPhone 12 Pro Max',
|
|
126
|
+
os: 'iOS',
|
|
127
|
+
osv: '17.4',
|
|
128
|
+
ext: {fiftyonedegrees_deviceId: '17595-133085-133468-18092'},
|
|
129
|
+
};
|
|
130
|
+
|
|
101
131
|
const BIDDER_REQUEST = {
|
|
102
132
|
'gdprConsent': {
|
|
103
133
|
'consentString': 'consent_string',
|
|
@@ -133,24 +163,7 @@ const BIDDER_REQUEST = {
|
|
|
133
163
|
'gpp_sid': [7],
|
|
134
164
|
'coppa': 0
|
|
135
165
|
},
|
|
136
|
-
|
|
137
|
-
'sua': {
|
|
138
|
-
'source': 2,
|
|
139
|
-
'platform': {
|
|
140
|
-
'brand': 'Android',
|
|
141
|
-
'version': ['8', '0', '0']
|
|
142
|
-
},
|
|
143
|
-
'browsers': [
|
|
144
|
-
{'brand': 'Not_A Brand', 'version': ['99', '0', '0', '0']},
|
|
145
|
-
{'brand': 'Google Chrome', 'version': ['109', '0', '5414', '119']},
|
|
146
|
-
{'brand': 'Chromium', 'version': ['109', '0', '5414', '119']}
|
|
147
|
-
],
|
|
148
|
-
'mobile': 1,
|
|
149
|
-
'model': 'SM-G955U',
|
|
150
|
-
'bitness': '64',
|
|
151
|
-
'architecture': ''
|
|
152
|
-
}
|
|
153
|
-
},
|
|
166
|
+
device: ORTB2_DEVICE,
|
|
154
167
|
user: {
|
|
155
168
|
data: [
|
|
156
169
|
{
|
|
@@ -346,6 +359,7 @@ describe('VidazooBidAdapter', function () {
|
|
|
346
359
|
},
|
|
347
360
|
contentLang: 'en',
|
|
348
361
|
coppa: 0,
|
|
362
|
+
device: ORTB2_DEVICE,
|
|
349
363
|
contentData: [{
|
|
350
364
|
'name': 'example.com',
|
|
351
365
|
'ext': {
|
|
@@ -430,6 +444,7 @@ describe('VidazooBidAdapter', function () {
|
|
|
430
444
|
'bitness': '64',
|
|
431
445
|
'architecture': ''
|
|
432
446
|
},
|
|
447
|
+
device: ORTB2_DEVICE,
|
|
433
448
|
url: 'https%3A%2F%2Fwww.greatsite.com',
|
|
434
449
|
referrer: 'https://www.somereferrer.com',
|
|
435
450
|
cb: 1000,
|
|
@@ -523,6 +538,7 @@ describe('VidazooBidAdapter', function () {
|
|
|
523
538
|
'bitness': '64',
|
|
524
539
|
'architecture': ''
|
|
525
540
|
},
|
|
541
|
+
device: ORTB2_DEVICE,
|
|
526
542
|
url: 'https%3A%2F%2Fwww.greatsite.com',
|
|
527
543
|
referrer: 'https://www.somereferrer.com',
|
|
528
544
|
cb: 1000,
|
|
@@ -26,6 +26,7 @@ function getPlayerMock() {
|
|
|
26
26
|
getVolume: function () {},
|
|
27
27
|
getConfig: function () {},
|
|
28
28
|
getHeight: function () {},
|
|
29
|
+
getContainer: function () {},
|
|
29
30
|
getWidth: function () {},
|
|
30
31
|
getFullscreen: function () {},
|
|
31
32
|
getPlaylistItem: function () {},
|
|
@@ -51,6 +52,9 @@ function makePlayerFactoryMock(playerMock_) {
|
|
|
51
52
|
function getUtilsMock() {
|
|
52
53
|
return {
|
|
53
54
|
getJwConfig: function () {},
|
|
55
|
+
getPlayerHeight: function () {},
|
|
56
|
+
getPlayerWidth: function () {},
|
|
57
|
+
getPlayerSizeFromAspectRatio: function () {},
|
|
54
58
|
getSupportedMediaTypes: function () {},
|
|
55
59
|
getStartDelay: function () {},
|
|
56
60
|
getPlacement: function () {},
|
|
@@ -212,6 +216,8 @@ describe('JWPlayerProvider', function () {
|
|
|
212
216
|
player.getWidth = () => test_width;
|
|
213
217
|
player.getFullscreen = () => true; //
|
|
214
218
|
|
|
219
|
+
utils.getPlayerHeight = () => 100;
|
|
220
|
+
utils.getPlayerWidth = () => 200;
|
|
215
221
|
utils.getSupportedMediaTypes = () => [test_media_type];
|
|
216
222
|
utils.getStartDelay = () => test_start_delay;
|
|
217
223
|
utils.getPlacement = () => test_placement;
|
|
@@ -690,6 +696,81 @@ describe('utils', function () {
|
|
|
690
696
|
expect(jwConfig.advertising).to.have.property('client', 'vast');
|
|
691
697
|
});
|
|
692
698
|
});
|
|
699
|
+
|
|
700
|
+
describe('getPlayerHeight', function () {
|
|
701
|
+
const getPlayerHeight = utils.getPlayerHeight;
|
|
702
|
+
|
|
703
|
+
it('should return height from API when defined', function () {
|
|
704
|
+
const expectedHeight = 500;
|
|
705
|
+
const playerMock = { getHeight: () => expectedHeight };
|
|
706
|
+
expect(getPlayerHeight(playerMock, {})).to.equal(expectedHeight);
|
|
707
|
+
});
|
|
708
|
+
|
|
709
|
+
it('should return height from config when API returns undefined', function () {
|
|
710
|
+
const expectedHeight = 500;
|
|
711
|
+
const playerMock = { getHeight: () => undefined };
|
|
712
|
+
expect(getPlayerHeight(playerMock, { height: 500 })).to.equal(expectedHeight);
|
|
713
|
+
});
|
|
714
|
+
});
|
|
715
|
+
|
|
716
|
+
describe('getPlayerWidth', function () {
|
|
717
|
+
const getPlayerWidth = utils.getPlayerWidth;
|
|
718
|
+
|
|
719
|
+
it('should return width from API when defined', function () {
|
|
720
|
+
const expectedWidth = 1000;
|
|
721
|
+
const playerMock = { getWidth: () => expectedWidth };
|
|
722
|
+
expect(getPlayerWidth(playerMock, {})).to.equal(expectedWidth);
|
|
723
|
+
});
|
|
724
|
+
|
|
725
|
+
it('should return width from config when API returns undefined', function () {
|
|
726
|
+
const expectedWidth = 1000;
|
|
727
|
+
const playerMock = { getWidth: () => undefined };
|
|
728
|
+
expect(getPlayerWidth(playerMock, { width: expectedWidth })).to.equal(expectedWidth);
|
|
729
|
+
});
|
|
730
|
+
|
|
731
|
+
it('should return undefined when width is string', function () {
|
|
732
|
+
const playerMock = { getWidth: () => undefined };
|
|
733
|
+
expect(getPlayerWidth(playerMock, { width: '50%' })).to.be.undefined;
|
|
734
|
+
});
|
|
735
|
+
});
|
|
736
|
+
|
|
737
|
+
describe('getPlayerSizeFromAspectRatio', function () {
|
|
738
|
+
const getPlayerSizeFromAspectRatio = utils.getPlayerSizeFromAspectRatio;
|
|
739
|
+
const testContainer = {
|
|
740
|
+
clientWidth: 640,
|
|
741
|
+
clientHeight: 480
|
|
742
|
+
};
|
|
743
|
+
|
|
744
|
+
it('should return an empty object when width and aspectratio are not strings', function () {
|
|
745
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {})).to.deep.equal({});
|
|
746
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {width: 100})).to.deep.equal({});
|
|
747
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: '1:2', width: 100})).to.deep.equal({});
|
|
748
|
+
});
|
|
749
|
+
|
|
750
|
+
it('should return an empty object when aspectratio is malformed', function () {
|
|
751
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: '0.5', width: '100%'})).to.deep.equal({});
|
|
752
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: '1-2', width: '100%'})).to.deep.equal({});
|
|
753
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: '1:', width: '100%'})).to.deep.equal({});
|
|
754
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: ':2', width: '100%'})).to.deep.equal({});
|
|
755
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: ':', width: '100%'})).to.deep.equal({});
|
|
756
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: '1:2:3', width: '100%'})).to.deep.equal({});
|
|
757
|
+
});
|
|
758
|
+
|
|
759
|
+
it('should return an empty object when player container cannot be obtained', function () {
|
|
760
|
+
expect(getPlayerSizeFromAspectRatio({}, {aspectratio: '1:2', width: '100%'})).to.deep.equal({});
|
|
761
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => undefined }, {aspectratio: '1:2', width: '100%'})).to.deep.equal({});
|
|
762
|
+
});
|
|
763
|
+
|
|
764
|
+
it('should calculate the size given the width percentage and aspect ratio', function () {
|
|
765
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: '2:1', width: '100%'})).to.deep.equal({ height: 320, width: 640 });
|
|
766
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: '4:1', width: '70%'})).to.deep.equal({ height: 112, width: 448 });
|
|
767
|
+
});
|
|
768
|
+
|
|
769
|
+
it('should return the container height when smaller than the calculated height', function () {
|
|
770
|
+
expect(getPlayerSizeFromAspectRatio({ getContainer: () => testContainer }, {aspectratio: '1:1', width: '100%'})).to.deep.equal({ height: 480, width: 640 });
|
|
771
|
+
});
|
|
772
|
+
});
|
|
773
|
+
|
|
693
774
|
describe('getSkipParams', function () {
|
|
694
775
|
const getSkipParams = utils.getSkipParams;
|
|
695
776
|
|
|
@@ -52,7 +52,8 @@ describe('wurflRtdProvider', function () {
|
|
|
52
52
|
pixel_density: 443,
|
|
53
53
|
pointing_method: 'touchscreen',
|
|
54
54
|
resolution_height: 1920,
|
|
55
|
-
resolution_width: 1080
|
|
55
|
+
resolution_width: 1080,
|
|
56
|
+
wurfl_id: 'lg_nexus5_ver1',
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
// expected analytics values
|
|
@@ -100,6 +101,7 @@ describe('wurflRtdProvider', function () {
|
|
|
100
101
|
const expectedURL = new URL(altHost);
|
|
101
102
|
expectedURL.searchParams.set('debug', true);
|
|
102
103
|
expectedURL.searchParams.set('mode', 'prebid');
|
|
104
|
+
expectedURL.searchParams.set('wurfl_id', true);
|
|
103
105
|
|
|
104
106
|
const callback = () => {
|
|
105
107
|
const v = {
|
|
@@ -147,7 +149,8 @@ describe('wurflRtdProvider', function () {
|
|
|
147
149
|
pixel_density: 443,
|
|
148
150
|
pointing_method: 'touchscreen',
|
|
149
151
|
resolution_height: 1920,
|
|
150
|
-
resolution_width: 1080
|
|
152
|
+
resolution_width: 1080,
|
|
153
|
+
wurfl_id: 'lg_nexus5_ver1',
|
|
151
154
|
},
|
|
152
155
|
},
|
|
153
156
|
},
|
|
@@ -187,7 +190,8 @@ describe('wurflRtdProvider', function () {
|
|
|
187
190
|
model_name: 'Nexus 5',
|
|
188
191
|
pixel_density: 443,
|
|
189
192
|
resolution_height: 1920,
|
|
190
|
-
resolution_width: 1080
|
|
193
|
+
resolution_width: 1080,
|
|
194
|
+
wurfl_id: 'lg_nexus5_ver1',
|
|
191
195
|
},
|
|
192
196
|
},
|
|
193
197
|
},
|
|
@@ -203,6 +207,7 @@ describe('wurflRtdProvider', function () {
|
|
|
203
207
|
is_mobile: !0,
|
|
204
208
|
model_name: 'Nexus 5',
|
|
205
209
|
brand_name: 'Google',
|
|
210
|
+
wurfl_id: 'lg_nexus5_ver1',
|
|
206
211
|
},
|
|
207
212
|
},
|
|
208
213
|
},
|
|
@@ -263,7 +263,7 @@ const REQPARAMS = {
|
|
|
263
263
|
|
|
264
264
|
const REQPARAMS_GDPR = Object.assign({}, REQPARAMS, {
|
|
265
265
|
gdpr: true,
|
|
266
|
-
|
|
266
|
+
gdpr_consent: 'BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA',
|
|
267
267
|
});
|
|
268
268
|
|
|
269
269
|
const REQPARAMS_IAB_CONTENT = Object.assign({}, REQPARAMS, {
|
|
@@ -457,8 +457,8 @@ describe('yieldlabBidAdapter', () => {
|
|
|
457
457
|
},
|
|
458
458
|
});
|
|
459
459
|
|
|
460
|
-
expect(gdprRequest.url).to.include('
|
|
461
|
-
expect(gdprRequest.url).to.include('gdpr=true');
|
|
460
|
+
expect(gdprRequest.url).to.include('&gdpr_consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA');
|
|
461
|
+
expect(gdprRequest.url).to.include('&gdpr=true');
|
|
462
462
|
});
|
|
463
463
|
|
|
464
464
|
describe('sizes handling', () => {
|
|
@@ -691,7 +691,7 @@ describe('yieldlabBidAdapter', () => {
|
|
|
691
691
|
const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [bidRequest], queryParams: REQPARAMS_GDPR});
|
|
692
692
|
|
|
693
693
|
expect(result[0].ad).to.include('&gdpr=true');
|
|
694
|
-
expect(result[0].ad).to.include('&
|
|
694
|
+
expect(result[0].ad).to.include('&gdpr_consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA');
|
|
695
695
|
});
|
|
696
696
|
|
|
697
697
|
it('should append iab_content to adtag', () => {
|
|
@@ -814,7 +814,7 @@ describe('yieldlabBidAdapter', () => {
|
|
|
814
814
|
const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS_GDPR});
|
|
815
815
|
|
|
816
816
|
expect(result[0].vastUrl).to.include('&gdpr=true');
|
|
817
|
-
expect(result[0].vastUrl).to.include('&
|
|
817
|
+
expect(result[0].vastUrl).to.include('&gdpr_consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA');
|
|
818
818
|
});
|
|
819
819
|
|
|
820
820
|
it('should add renderer if outstream context', () => {
|
|
@@ -529,6 +529,7 @@ describe('Zeta Global SSP Analytics Adapter', function () {
|
|
|
529
529
|
sandbox = sinon.sandbox.create();
|
|
530
530
|
requests = server.requests;
|
|
531
531
|
sandbox.stub(events, 'getEvents').returns([]);
|
|
532
|
+
config.setConfig({ pageUrl: 'https://www.config.domain.com/index.html' })
|
|
532
533
|
});
|
|
533
534
|
|
|
534
535
|
afterEach(function () {
|
|
@@ -624,8 +625,8 @@ describe('Zeta Global SSP Analytics Adapter', function () {
|
|
|
624
625
|
shortname: 'name'
|
|
625
626
|
}
|
|
626
627
|
});
|
|
627
|
-
expect(auctionSucceeded.domain).to.eql('
|
|
628
|
-
expect(auctionSucceeded.page).to.eql('
|
|
628
|
+
expect(auctionSucceeded.domain).to.eql('config.domain.com');
|
|
629
|
+
expect(auctionSucceeded.page).to.eql('https://www.config.domain.com/index.html');
|
|
629
630
|
expect(auctionSucceeded.bid).to.be.deep.equal({
|
|
630
631
|
adUnitCode: '/19968336/header-bid-tag-0',
|
|
631
632
|
adId: '5759bb3ef7be1e8',
|
package/test/spec/native_spec.js
CHANGED
|
@@ -402,7 +402,8 @@ describe('native.js', function () {
|
|
|
402
402
|
'returns native data': {
|
|
403
403
|
renderDataHook(next, bidResponse) {
|
|
404
404
|
next.bail({
|
|
405
|
-
native: getNativeRenderingData(bidResponse, adUnit)
|
|
405
|
+
native: getNativeRenderingData(bidResponse, adUnit),
|
|
406
|
+
rendererVersion: 'native-render-version'
|
|
406
407
|
});
|
|
407
408
|
},
|
|
408
409
|
renderSourceHook(next) {
|
|
@@ -433,8 +434,9 @@ describe('native.js', function () {
|
|
|
433
434
|
function checkRenderer(message) {
|
|
434
435
|
if (withRenderer) {
|
|
435
436
|
expect(message.renderer).to.eql('mock-native-renderer')
|
|
437
|
+
expect(message.rendererVersion).to.eql('native-render-version');
|
|
436
438
|
Object.entries(message).forEach(([key, val]) => {
|
|
437
|
-
if (!['native', 'adId', 'message', 'assets', 'renderer'].includes(key)) {
|
|
439
|
+
if (!['native', 'adId', 'message', 'assets', 'renderer', 'rendererVersion'].includes(key)) {
|
|
438
440
|
expect(message.native[key]).to.eql(val);
|
|
439
441
|
}
|
|
440
442
|
})
|