prebid.js 7.10.0 → 7.13.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/.github/PULL_REQUEST_TEMPLATE.md +16 -10
- package/.github/codeql/codeql-config.yml +4 -0
- package/.github/workflows/codeql-analysis.yml +73 -0
- package/.github/workflows/issue_tracker.yml +1 -1
- package/README.md +0 -2
- package/babelConfig.js +10 -4
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/acuityAdsBidAdapter.js +1 -0
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adriverBidAdapter.js +1 -1
- package/dist/adriverIdSystem.js +1 -1
- package/dist/adtelligentBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -0
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/alkimiBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/betweenBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/cpmstarBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/datawrkzBidAdapter.js +1 -0
- package/dist/debugging-standalone.js +1 -1
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dgkeywordRtdProvider.js +1 -1
- package/dist/displayioBidAdapter.js +1 -3
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/enrichmentFpdModule.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imRtdProvider.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.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 -0
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -0
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.js +1 -0
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +153 -147
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/oneKeyIdSystem.js +1 -0
- package/dist/oneKeyRtdProvider.js +1 -0
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/permutiveRtdProvider.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- 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/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/rasBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.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/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/trustpidSystem.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/viewability.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/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
- package/karma.conf.maker.js +2 -13
- package/modules/.submodules.json +2 -0
- package/modules/acuityAdsBidAdapter.js +207 -0
- package/modules/acuityAdsBidAdapter.md +79 -0
- package/modules/adagioBidAdapter.js +2 -3
- package/modules/adgenerationBidAdapter.js +2 -2
- package/modules/adkernelBidAdapter.js +28 -12
- package/modules/admixerBidAdapter.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adpod.js +1 -1
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adriverBidAdapter.js +5 -12
- package/modules/adriverIdSystem.js +2 -1
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +6 -2
- package/modules/adtrgtmeBidAdapter.js +333 -0
- package/modules/adtrgtmeBidAdapter.md +69 -0
- package/modules/adtrueBidAdapter.js +1 -1
- package/modules/adxpremiumAnalyticsAdapter.js +1 -1
- package/modules/adyoulikeBidAdapter.js +1 -1
- package/modules/alkimiBidAdapter.js +2 -1
- package/modules/aniviewBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +13 -93
- package/modules/apstreamBidAdapter.js +2 -2
- package/modules/beopBidAdapter.js +4 -4
- package/modules/betweenBidAdapter.js +4 -4
- package/modules/bidwatchAnalyticsAdapter.js +112 -59
- package/modules/bizzclickBidAdapter.js +1 -1
- package/modules/brightMountainMediaBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +24 -10
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/consentManagement.js +1 -1
- package/modules/consentManagementUsp.js +1 -1
- package/modules/consumableBidAdapter.js +43 -3
- package/modules/cpmstarBidAdapter.js +23 -13
- package/modules/criteoBidAdapter.js +19 -13
- package/modules/currency.js +1 -0
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/datablocksBidAdapter.js +1 -1
- package/modules/datawrkzBidAdapter.js +633 -0
- package/modules/datawrkzBidAdapter.md +160 -0
- package/modules/dfpAdServerVideo.js +2 -2
- package/modules/dgkeywordRtdProvider.js +10 -1
- package/modules/displayioBidAdapter.js +92 -97
- package/modules/dspxBidAdapter.js +1 -1
- package/modules/e_volutionBidAdapter.js +3 -3
- package/modules/ebdrBidAdapter.js +1 -1
- package/modules/emx_digitalBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +11 -0
- package/modules/fabrickIdSystem.js +2 -2
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/getintentBidAdapter.js +1 -1
- package/modules/gjirafaBidAdapter.js +2 -2
- package/modules/goldbachBidAdapter.js +8 -8
- package/modules/gothamadsBidAdapter.js +2 -2
- package/modules/gumgumBidAdapter.js +3 -3
- package/modules/h12mediaBidAdapter.js +1 -1
- package/modules/id5AnalyticsAdapter.js +1 -1
- package/modules/id5IdSystem.js +160 -111
- package/modules/id5IdSystem.md +16 -14
- package/modules/imRtdProvider.js +20 -7
- package/modules/imRtdProvider.md +3 -1
- package/modules/impactifyBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +50 -28
- package/modules/inskinBidAdapter.js +1 -1
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/integr8BidAdapter.js +2 -2
- package/modules/intentIqIdSystem.js +2 -2
- package/modules/interactiveOffersBidAdapter.js +1 -1
- package/modules/iqmBidAdapter.js +1 -1
- package/modules/ixBidAdapter.js +21 -328
- package/modules/ixBidAdapter.md +1 -19
- package/modules/kargoBidAdapter.js +4 -5
- package/modules/krushmediaBidAdapter.js +2 -2
- package/modules/lassoBidAdapter.js +3 -3
- package/modules/lifestreetBidAdapter.js +143 -0
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/livewrappedAnalyticsAdapter.js +3 -3
- package/modules/lkqdBidAdapter.js +3 -3
- package/modules/loganBidAdapter.js +2 -2
- package/modules/luponmediaBidAdapter.js +3 -3
- package/modules/mabidderBidAdapter.js +60 -0
- package/modules/mabidderBidAdapter.md +31 -0
- package/modules/malltvBidAdapter.js +2 -2
- package/modules/mediagoBidAdapter.js +462 -0
- package/modules/mediagoBidAdapter.md +34 -0
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/mgidBidAdapter.js +2 -2
- package/modules/nextMillenniumBidAdapter.js +25 -6
- package/modules/nobidBidAdapter.js +2 -2
- package/modules/novatiqIdSystem.js +1 -1
- package/modules/oneKeyIdSystem.js +78 -0
- package/modules/oneKeyIdSystem.md +109 -0
- package/modules/oneKeyRtdProvider.js +98 -0
- package/modules/oneKeyRtdProvider.md +127 -0
- package/modules/open8BidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +5 -744
- package/modules/openxAnalyticsAdapter.md +4 -0
- package/modules/openxBidAdapter.js +3 -3
- package/modules/permutiveRtdProvider.js +55 -8
- package/modules/pixfutureBidAdapter.js +1 -1
- package/modules/prebidmanagerAnalyticsAdapter.js +1 -1
- package/modules/priceFloors.js +1 -1
- package/modules/pubmaticAnalyticsAdapter.js +1 -1
- package/modules/pubmaticBidAdapter.js +19 -1
- package/modules/pubwiseAnalyticsAdapter.js +1 -1
- package/modules/pubwiseBidAdapter.js +3 -3
- package/modules/pubxBidAdapter.js +1 -1
- package/modules/pubxaiAnalyticsAdapter.js +2 -2
- package/modules/quantcastIdSystem.js +1 -1
- package/modules/radsBidAdapter.js +1 -1
- package/modules/rasBidAdapter.js +8 -0
- package/modules/rasBidAdapter.md +14 -13
- package/modules/revcontentBidAdapter.js +1 -1
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +25 -1
- package/modules/schain.js +1 -1
- package/modules/seedtagBidAdapter.md +25 -56
- package/modules/showheroes-bsBidAdapter.js +1 -1
- package/modules/sizeMappingV2.js +1 -1
- package/modules/smaatoBidAdapter.js +2 -2
- package/modules/sonobiAnalyticsAdapter.js +1 -1
- package/modules/sonobiBidAdapter.js +4 -3
- package/modules/staqAnalyticsAdapter.js +1 -1
- package/modules/tappxBidAdapter.js +11 -2
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/theAdxBidAdapter.js +2 -2
- package/modules/tpmnBidAdapter.js +1 -1
- package/modules/trionBidAdapter.js +2 -2
- package/modules/tripleliftBidAdapter.js +20 -1
- package/modules/trustpidSystem.js +6 -42
- package/modules/trustpidSystem.md +10 -10
- package/modules/underdogmediaBidAdapter.js +1 -1
- package/modules/userId/eids.js +26 -0
- package/modules/userId/userId.md +2 -2
- package/modules/vdoaiBidAdapter.js +1 -1
- package/modules/vidazooBidAdapter.js +7 -5
- package/modules/vidoomyBidAdapter.js +1 -1
- package/modules/viewability.js +14 -14
- package/modules/winrBidAdapter.js +1 -1
- package/modules/yahoosspBidAdapter.js +3 -3
- package/modules/yandexBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +3 -3
- package/modules/yieldoneBidAdapter.js +2 -2
- package/modules/zeta_global_sspBidAdapter.js +24 -21
- package/package.json +3 -3
- package/src/Renderer.js +1 -1
- package/src/adloader.js +2 -1
- package/src/adserver.js +0 -56
- package/src/auction.js +60 -16
- package/src/bidfactory.js +1 -1
- package/src/native.js +75 -60
- package/src/refererDetection.js +12 -1
- package/src/sizeMapping.js +5 -7
- package/src/targeting.js +1 -1
- package/src/userSync.js +1 -1
- package/src/utils/promise.js +3 -1
- package/src/utils.js +27 -0
- package/src/video.js +5 -4
- package/src/videoCache.js +8 -2
- package/test/pages/instream.html +2 -2
- package/test/spec/modules/acuityAdsBidAdapter_spec.js +398 -0
- package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
- package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
- package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
- package/test/spec/modules/adriverIdSystem_spec.js +3 -8
- package/test/spec/modules/adtelligentBidAdapter_spec.js +2 -0
- package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
- package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +1 -0
- package/test/spec/modules/beopBidAdapter_spec.js +11 -0
- package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
- package/test/spec/modules/big-richmediaBidAdapter_spec.js +1 -0
- package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
- package/test/spec/modules/consumableBidAdapter_spec.js +158 -0
- package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
- package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
- package/test/spec/modules/currency_spec.js +22 -0
- package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
- package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
- package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
- package/test/spec/modules/enrichmentFpdModule_spec.js +16 -1
- package/test/spec/modules/fpdModule_spec.js +2 -1
- package/test/spec/modules/id5IdSystem_spec.js +529 -172
- package/test/spec/modules/imRtdProvider_spec.js +10 -5
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
- package/test/spec/modules/ixBidAdapter_spec.js +216 -123
- package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
- package/test/spec/modules/lifestreetBidAdapter_spec.js +232 -0
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +59 -7
- package/test/spec/modules/mabidderBidAdapter_spec.js +125 -0
- package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
- package/test/spec/modules/oneKeyIdSystem_spec.js +107 -0
- package/test/spec/modules/oneKeyRtdProvider_spec.js +152 -0
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
- package/test/spec/modules/permutiveRtdProvider_spec.js +152 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +69 -4
- package/test/spec/modules/rasBidAdapter_spec.js +2 -0
- package/test/spec/modules/tripleliftBidAdapter_spec.js +18 -0
- package/test/spec/modules/trustpidSystem_spec.js +27 -45
- package/test/spec/modules/vidazooBidAdapter_spec.js +36 -23
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +59 -0
- package/test/spec/native_spec.js +257 -2
- package/test/spec/videoCache_spec.js +37 -7
|
@@ -6,6 +6,7 @@ const REQUEST = {
|
|
|
6
6
|
'bidId': '456',
|
|
7
7
|
'bidder': 'alkimi',
|
|
8
8
|
'sizes': [[300, 250]],
|
|
9
|
+
'adUnitCode': 'bannerAdUnitCode',
|
|
9
10
|
'mediaTypes': {
|
|
10
11
|
'banner': {
|
|
11
12
|
'sizes': [[300, 250]]
|
|
@@ -138,7 +139,7 @@ describe('alkimiBidAdapter', function () {
|
|
|
138
139
|
expect(bidderRequest.data.requestId).to.equal('123')
|
|
139
140
|
expect(bidderRequest.data.referer).to.equal('http://test.com/path.html')
|
|
140
141
|
expect(bidderRequest.data.schain).to.deep.contains({ver: '1.0', complete: 1, nodes: [{asi: 'alkimi-onboarding.com', sid: '00001', hp: 1}]})
|
|
141
|
-
expect(bidderRequest.data.signRequest.bids).to.deep.contains({ token: 'e64782a4-8e68-4c38-965b-80ccf115d46f', pos: 7, bidFloor: 0.1, width: 300, height: 250, impMediaType: 'Banner' })
|
|
142
|
+
expect(bidderRequest.data.signRequest.bids).to.deep.contains({ token: 'e64782a4-8e68-4c38-965b-80ccf115d46f', pos: 7, bidFloor: 0.1, width: 300, height: 250, impMediaType: 'Banner', adUnitCode: 'bannerAdUnitCode' })
|
|
142
143
|
expect(bidderRequest.data.signRequest.randomUUID).to.equal(undefined)
|
|
143
144
|
expect(bidderRequest.data.bidIds).to.deep.contains('456')
|
|
144
145
|
expect(bidderRequest.data.signature).to.equal(undefined)
|
|
@@ -204,5 +204,16 @@ describe('BeOp Bid Adapter tests', () => {
|
|
|
204
204
|
expect(triggerPixelStub.getCall(0).args[0]).to.include('se_ac=won');
|
|
205
205
|
expect(triggerPixelStub.getCall(0).args[0]).to.exist.and.to.include('pid=5a8af500c9e77c00017e4cad');
|
|
206
206
|
});
|
|
207
|
+
it('should call triggerPixel utils function on bid won and work even if params is an array', function () {
|
|
208
|
+
spec.onBidWon({});
|
|
209
|
+
spec.onBidWon();
|
|
210
|
+
expect(triggerPixelStub.getCall(0)).to.be.null;
|
|
211
|
+
spec.onBidWon({params: [{accountId: '5a8af500c9e77c00017e4cad'}], cpm: 1.2});
|
|
212
|
+
expect(triggerPixelStub.getCall(0)).to.not.be.null;
|
|
213
|
+
expect(triggerPixelStub.getCall(0).args[0]).to.exist.and.to.include('https://t.beop.io');
|
|
214
|
+
expect(triggerPixelStub.getCall(0).args[0]).to.include('se_ca=bid');
|
|
215
|
+
expect(triggerPixelStub.getCall(0).args[0]).to.include('se_ac=won');
|
|
216
|
+
expect(triggerPixelStub.getCall(0).args[0]).to.exist.and.to.include('pid=5a8af500c9e77c00017e4cad');
|
|
217
|
+
});
|
|
207
218
|
});
|
|
208
219
|
});
|
|
@@ -85,6 +85,23 @@ describe('betweenBidAdapterTests', function () {
|
|
|
85
85
|
|
|
86
86
|
expect(req_data.cur).to.equal('THX');
|
|
87
87
|
});
|
|
88
|
+
it('validate default cur USD', function() {
|
|
89
|
+
let bidRequestData = [{
|
|
90
|
+
bidId: 'bid1234',
|
|
91
|
+
bidder: 'between',
|
|
92
|
+
params: {
|
|
93
|
+
w: 240,
|
|
94
|
+
h: 400,
|
|
95
|
+
s: 1112
|
|
96
|
+
},
|
|
97
|
+
sizes: [[240, 400]]
|
|
98
|
+
}];
|
|
99
|
+
|
|
100
|
+
let request = spec.buildRequests(bidRequestData);
|
|
101
|
+
let req_data = JSON.parse(request.data)[0].data;
|
|
102
|
+
|
|
103
|
+
expect(req_data.cur).to.equal('USD');
|
|
104
|
+
});
|
|
88
105
|
it('validate subid param', function() {
|
|
89
106
|
let bidRequestData = [{
|
|
90
107
|
bidId: 'bid1234',
|
|
@@ -260,15 +260,15 @@ describe('BidWatch Analytics', function () {
|
|
|
260
260
|
describe('main test flow', function () {
|
|
261
261
|
beforeEach(function () {
|
|
262
262
|
sinon.stub(events, 'getEvents').returns([]);
|
|
263
|
+
sinon.spy(bidwatchAnalytics, 'track');
|
|
263
264
|
});
|
|
264
|
-
|
|
265
265
|
afterEach(function () {
|
|
266
266
|
events.getEvents.restore();
|
|
267
|
+
bidwatchAnalytics.disableAnalytics();
|
|
268
|
+
bidwatchAnalytics.track.restore();
|
|
267
269
|
});
|
|
268
270
|
|
|
269
|
-
it('
|
|
270
|
-
sinon.spy(bidwatchAnalytics, 'track');
|
|
271
|
-
|
|
271
|
+
it('test auctionEnd', function () {
|
|
272
272
|
adapterManager.registerAnalyticsAdapter({
|
|
273
273
|
code: 'bidwatch',
|
|
274
274
|
adapter: bidwatchAnalytics
|
|
@@ -280,6 +280,9 @@ describe('BidWatch Analytics', function () {
|
|
|
280
280
|
domain: 'test'
|
|
281
281
|
}
|
|
282
282
|
});
|
|
283
|
+
|
|
284
|
+
events.emit(constants.EVENTS.BID_REQUESTED, auctionEnd['bidderRequests'][0]);
|
|
285
|
+
events.emit(constants.EVENTS.BID_RESPONSE, auctionEnd['bidsReceived'][0]);
|
|
283
286
|
events.emit(constants.EVENTS.BID_TIMEOUT, bidTimeout);
|
|
284
287
|
events.emit(constants.EVENTS.AUCTION_END, auctionEnd);
|
|
285
288
|
expect(server.requests.length).to.equal(1);
|
|
@@ -287,18 +290,31 @@ describe('BidWatch Analytics', function () {
|
|
|
287
290
|
expect(message).to.have.property('auctionEnd').exist;
|
|
288
291
|
expect(message.auctionEnd).to.have.lengthOf(1);
|
|
289
292
|
expect(message.auctionEnd[0]).to.have.property('bidsReceived').and.to.have.lengthOf(1);
|
|
290
|
-
expect(message.auctionEnd[0].bidsReceived[0]).to.have.property('ad');
|
|
291
|
-
expect(message.auctionEnd[0].bidsReceived[0].ad).to.equal('emptied');
|
|
293
|
+
expect(message.auctionEnd[0].bidsReceived[0]).not.to.have.property('ad');
|
|
292
294
|
expect(message.auctionEnd[0]).to.have.property('bidderRequests').and.to.have.lengthOf(1);
|
|
293
295
|
expect(message.auctionEnd[0].bidderRequests[0]).to.have.property('gdprConsent');
|
|
294
|
-
expect(message.auctionEnd[0].bidderRequests[0].gdprConsent).to.have.property('vendorData');
|
|
295
|
-
|
|
296
|
+
expect(message.auctionEnd[0].bidderRequests[0].gdprConsent).not.to.have.property('vendorData');
|
|
297
|
+
sinon.assert.callCount(bidwatchAnalytics.track, 4);
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
it('test bidWon', function() {
|
|
301
|
+
adapterManager.registerAnalyticsAdapter({
|
|
302
|
+
code: 'bidwatch',
|
|
303
|
+
adapter: bidwatchAnalytics
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
adapterManager.enableAnalytics({
|
|
307
|
+
provider: 'bidwatch',
|
|
308
|
+
options: {
|
|
309
|
+
domain: 'test'
|
|
310
|
+
}
|
|
311
|
+
});
|
|
296
312
|
events.emit(constants.EVENTS.BID_WON, bidWon);
|
|
297
|
-
expect(server.requests.length).to.equal(
|
|
298
|
-
message = JSON.parse(server.requests[
|
|
299
|
-
expect(message).to.have.property('ad')
|
|
313
|
+
expect(server.requests.length).to.equal(1);
|
|
314
|
+
let message = JSON.parse(server.requests[0].requestBody);
|
|
315
|
+
expect(message).not.to.have.property('ad');
|
|
300
316
|
expect(message).to.have.property('cpmIncrement').and.to.equal(27.4276);
|
|
301
|
-
sinon.assert.callCount(bidwatchAnalytics.track,
|
|
317
|
+
sinon.assert.callCount(bidwatchAnalytics.track, 1);
|
|
302
318
|
});
|
|
303
319
|
});
|
|
304
320
|
});
|
|
@@ -3,6 +3,7 @@ import {makeSlot} from '../integration/faker/googletag.js';
|
|
|
3
3
|
import * as utils from '../../../src/utils'
|
|
4
4
|
import * as events from '../../../src/events';
|
|
5
5
|
import * as sinon from 'sinon';
|
|
6
|
+
import {sendPageviewEvent} from '../../../modules/browsiRtdProvider.js';
|
|
6
7
|
|
|
7
8
|
describe('browsi Real time data sub module', function () {
|
|
8
9
|
const conf = {
|
|
@@ -160,7 +161,19 @@ describe('browsi Real time data sub module', function () {
|
|
|
160
161
|
})
|
|
161
162
|
})
|
|
162
163
|
|
|
163
|
-
describe('should emit billable event', function () {
|
|
164
|
+
describe('should emit ad request billable event', function () {
|
|
165
|
+
before(() => {
|
|
166
|
+
const data = {
|
|
167
|
+
p: {
|
|
168
|
+
'adUnit1': {ps: {0: 0.234}},
|
|
169
|
+
'adUnit2': {ps: {0: 0.134}}},
|
|
170
|
+
kn: 'bv',
|
|
171
|
+
pmd: undefined,
|
|
172
|
+
bet: 'AD_REQUEST'
|
|
173
|
+
};
|
|
174
|
+
browsiRTD.setData(data);
|
|
175
|
+
})
|
|
176
|
+
|
|
164
177
|
beforeEach(() => {
|
|
165
178
|
eventsEmitSpy.resetHistory();
|
|
166
179
|
})
|
|
@@ -232,4 +245,30 @@ describe('browsi Real time data sub module', function () {
|
|
|
232
245
|
expect(callArguments).to.eql(expectedCall);
|
|
233
246
|
})
|
|
234
247
|
})
|
|
248
|
+
|
|
249
|
+
describe('should emit pageveiw billable event', function () {
|
|
250
|
+
beforeEach(() => {
|
|
251
|
+
eventsEmitSpy.resetHistory();
|
|
252
|
+
})
|
|
253
|
+
it('should send event if type is correct', function () {
|
|
254
|
+
sendPageviewEvent('PAGEVIEW')
|
|
255
|
+
|
|
256
|
+
const expectedCall = {
|
|
257
|
+
vendor: 'browsi',
|
|
258
|
+
type: 'pageview',
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
expect(eventsEmitSpy.callCount).to.equal(1);
|
|
262
|
+
const callArguments = eventsEmitSpy.getCalls()[0].args[1];
|
|
263
|
+
// billing id is random, we can't check its value
|
|
264
|
+
delete callArguments['billingId'];
|
|
265
|
+
expect(callArguments).to.eql(expectedCall);
|
|
266
|
+
})
|
|
267
|
+
it('should not send event if type is incorrect', function () {
|
|
268
|
+
sendPageviewEvent('AD_REQUEST');
|
|
269
|
+
sendPageviewEvent('INACTIVE');
|
|
270
|
+
sendPageviewEvent(undefined);
|
|
271
|
+
expect(eventsEmitSpy.callCount).to.equal(0);
|
|
272
|
+
})
|
|
273
|
+
})
|
|
235
274
|
});
|
|
@@ -129,6 +129,53 @@ const BIDDER_REQUEST_2 = {
|
|
|
129
129
|
}
|
|
130
130
|
};
|
|
131
131
|
|
|
132
|
+
const BIDDER_REQUEST_VIDEO = {
|
|
133
|
+
bidderCode: 'consumable',
|
|
134
|
+
auctionId: 'a4713c32-3762-4798-b342-4ab810ca770d',
|
|
135
|
+
bidderRequestId: '109f2a181342a9',
|
|
136
|
+
bidRequest: [
|
|
137
|
+
{
|
|
138
|
+
bidder: 'consumable',
|
|
139
|
+
params: {
|
|
140
|
+
networkId: 9969,
|
|
141
|
+
siteId: 730181,
|
|
142
|
+
unitId: 123456,
|
|
143
|
+
unitName: 'cnsmbl-unit'
|
|
144
|
+
},
|
|
145
|
+
placementCode: 'div-gpt-ad-1487778092495-0',
|
|
146
|
+
mediaTypes: {
|
|
147
|
+
video: {
|
|
148
|
+
playerSize: [188, 106],
|
|
149
|
+
context: 'instream',
|
|
150
|
+
mimes: ['application/javascript', 'application/x-mpegurl', 'video/3gpp', 'video/mp4', 'video/mpeg', 'video/ogg', 'video/webm', 'video/x-m4v', 'video/x-ms-asf', 'video/x-ms-wmv', 'video/x-msvideo'],
|
|
151
|
+
minduration: 0,
|
|
152
|
+
maxduration: 120,
|
|
153
|
+
protocols: [1, 2, 3, 4, 5, 6, 7, 8],
|
|
154
|
+
api: [1, 2],
|
|
155
|
+
linearity: 1
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
bidId: '6202d555b2f94537',
|
|
159
|
+
bidderRequestId: '109f2a181342a9',
|
|
160
|
+
auctionId: 'a4713c32-3762-4798-b342-4ab810ca770d'
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
gdprConsent: {
|
|
164
|
+
consentString: 'consent-test',
|
|
165
|
+
gdprApplies: true
|
|
166
|
+
},
|
|
167
|
+
refererInfo: {
|
|
168
|
+
referer: 'http://example.com/page.html',
|
|
169
|
+
reachedTop: true,
|
|
170
|
+
numIframes: 2,
|
|
171
|
+
stack: [
|
|
172
|
+
'http://example.com/page.html',
|
|
173
|
+
'http://example.com/iframe1.html',
|
|
174
|
+
'http://example.com/iframe2.html'
|
|
175
|
+
]
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
|
|
132
179
|
const BIDDER_REQUEST_EMPTY = {
|
|
133
180
|
bidderCode: 'consumable',
|
|
134
181
|
auctionId: 'b06458ef-4fe5-4a0b-a61b-bccbcedb7b11',
|
|
@@ -259,6 +306,58 @@ const AD_SERVER_RESPONSE_2 = {
|
|
|
259
306
|
}
|
|
260
307
|
};
|
|
261
308
|
|
|
309
|
+
const AD_SERVER_RESPONSE_VIDEO_1 = {
|
|
310
|
+
'headers': null,
|
|
311
|
+
'body': {
|
|
312
|
+
'user': { 'key': 'ue1-2d33e91b71e74929b4aeecc23f4376f1' },
|
|
313
|
+
'pixels': [{ 'type': 'image', 'url': '//sync.serverbid.com/ss/' }],
|
|
314
|
+
'decisions': {
|
|
315
|
+
'6202d555b2f94537': {
|
|
316
|
+
'adId': 3866158402,
|
|
317
|
+
'creativeId': 'C1-somo-test-video',
|
|
318
|
+
'width': 640,
|
|
319
|
+
'height': 480,
|
|
320
|
+
'pricing': {
|
|
321
|
+
'clearPrice': 1.58
|
|
322
|
+
},
|
|
323
|
+
'vastUrl': 'https://x.serverbid.com/rtb/v?auc=217c051d06b011ed9cbc72b17f01ec03&sc=1.575&s=22&a=9dcab16d340d664310c2135a76989fe946a9d46e5d5f24ff5e2f17bffbb7704a43638bd3f600951e&n=9&r=0&t=1658158906595',
|
|
324
|
+
'uuid': 'f1e7287514ce11ed9c1de2b3ba87449a',
|
|
325
|
+
'bidderName': 'consumable',
|
|
326
|
+
'adomain': ['consumabletv.com'],
|
|
327
|
+
'cats': ['IAB3-1'],
|
|
328
|
+
'mediaType': 'video',
|
|
329
|
+
'networkId': 1
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
const AD_SERVER_RESPONSE_VIDEO_2 = {
|
|
336
|
+
'headers': null,
|
|
337
|
+
'body': {
|
|
338
|
+
'user': { 'key': 'ue1-2d33e91b71e74929b4aeecc23f4376f1' },
|
|
339
|
+
'pixels': [{ 'type': 'image', 'url': '//sync.serverbid.com/ss/' }],
|
|
340
|
+
'decisions': {
|
|
341
|
+
'6202d555b2f94537': {
|
|
342
|
+
'adId': 3866158402,
|
|
343
|
+
'creativeId': 'C1-somo-test-video',
|
|
344
|
+
'width': 640,
|
|
345
|
+
'height': 480,
|
|
346
|
+
'pricing': {
|
|
347
|
+
'clearPrice': 1.58
|
|
348
|
+
},
|
|
349
|
+
'vastXml': '<VAST version="3.0">',
|
|
350
|
+
'uuid': 'f1e7287514ce11ed9c1de2b3ba87449a',
|
|
351
|
+
'bidderName': 'consumable',
|
|
352
|
+
'adomain': ['consumabletv.com'],
|
|
353
|
+
'cats': ['IAB3-1'],
|
|
354
|
+
'mediaType': 'video',
|
|
355
|
+
'networkId': 1
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
|
|
262
361
|
const BUILD_REQUESTS_OUTPUT = {
|
|
263
362
|
method: 'POST',
|
|
264
363
|
url: 'https://e.serverbid.com/api/v2',
|
|
@@ -267,6 +366,14 @@ const BUILD_REQUESTS_OUTPUT = {
|
|
|
267
366
|
bidderRequest: BIDDER_REQUEST_2
|
|
268
367
|
};
|
|
269
368
|
|
|
369
|
+
const BUILD_REQUESTS_VIDEO_OUTPUT = {
|
|
370
|
+
method: 'POST',
|
|
371
|
+
url: 'https://e.serverbid.com/api/v2',
|
|
372
|
+
data: '',
|
|
373
|
+
bidRequest: BIDDER_REQUEST_VIDEO.bidRequest,
|
|
374
|
+
bidderRequest: BIDDER_REQUEST_VIDEO
|
|
375
|
+
};
|
|
376
|
+
|
|
270
377
|
describe('Consumable BidAdapter', function () {
|
|
271
378
|
let adapter = spec;
|
|
272
379
|
|
|
@@ -382,6 +489,32 @@ describe('Consumable BidAdapter', function () {
|
|
|
382
489
|
|
|
383
490
|
expect(data.coppa).to.be.undefined;
|
|
384
491
|
});
|
|
492
|
+
|
|
493
|
+
it('should contain video object for video requests', function () {
|
|
494
|
+
let request = spec.buildRequests(BIDDER_REQUEST_VIDEO.bidRequest, BIDDER_REQUEST_VIDEO);
|
|
495
|
+
let data = JSON.parse(request.data);
|
|
496
|
+
|
|
497
|
+
expect(data.placements[0].video).to.deep.equal(BIDDER_REQUEST_VIDEO.bidRequest[0].mediaTypes.video);
|
|
498
|
+
});
|
|
499
|
+
|
|
500
|
+
it('sets bidfloor param if present', function () {
|
|
501
|
+
let bidderRequest1 = deepClone(BIDDER_REQUEST_1);
|
|
502
|
+
let bidderRequest2 = deepClone(BIDDER_REQUEST_2);
|
|
503
|
+
bidderRequest1.bidRequest[0].params.bidFloor = 0.05;
|
|
504
|
+
bidderRequest2.bidRequest[0].getFloor = function() {
|
|
505
|
+
return {
|
|
506
|
+
currency: 'USD',
|
|
507
|
+
floor: 0.15
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
let request1 = spec.buildRequests(bidderRequest1.bidRequest, BIDDER_REQUEST_1);
|
|
511
|
+
let data1 = JSON.parse(request1.data);
|
|
512
|
+
let request2 = spec.buildRequests(bidderRequest2.bidRequest, BIDDER_REQUEST_2);
|
|
513
|
+
let data2 = JSON.parse(request2.data);
|
|
514
|
+
|
|
515
|
+
expect(data1.placements[0].bidfloor).to.equal(0.05);
|
|
516
|
+
expect(data2.placements[0].bidfloor).to.equal(0.15);
|
|
517
|
+
});
|
|
385
518
|
});
|
|
386
519
|
describe('interpretResponse validation', function () {
|
|
387
520
|
it('response should have valid bidderCode', function () {
|
|
@@ -421,6 +554,31 @@ describe('Consumable BidAdapter', function () {
|
|
|
421
554
|
});
|
|
422
555
|
});
|
|
423
556
|
|
|
557
|
+
it('registers video bids with vastUrl', function () {
|
|
558
|
+
let bids = spec.interpretResponse(AD_SERVER_RESPONSE_VIDEO_1, BUILD_REQUESTS_VIDEO_OUTPUT);
|
|
559
|
+
|
|
560
|
+
bids.forEach(b => {
|
|
561
|
+
expect(b.mediaType).to.equal('video');
|
|
562
|
+
expect(b.meta).to.have.property('mediaType', 'video');
|
|
563
|
+
expect(b.vastUrl).to.equal('https://x.serverbid.com/rtb/v?auc=217c051d06b011ed9cbc72b17f01ec03&sc=1.575&s=22&a=9dcab16d340d664310c2135a76989fe946a9d46e5d5f24ff5e2f17bffbb7704a43638bd3f600951e&n=9&r=0&t=1658158906595');
|
|
564
|
+
expect(b.vastXml).to.be.undefined;
|
|
565
|
+
expect(b.videoCacheKey).to.equal('f1e7287514ce11ed9c1de2b3ba87449a');
|
|
566
|
+
});
|
|
567
|
+
})
|
|
568
|
+
|
|
569
|
+
it('registers video bids with vastXml', function () {
|
|
570
|
+
let bids = spec.interpretResponse(AD_SERVER_RESPONSE_VIDEO_2, BUILD_REQUESTS_VIDEO_OUTPUT);
|
|
571
|
+
|
|
572
|
+
bids.forEach(b => {
|
|
573
|
+
expect(b.mediaType).to.equal('video');
|
|
574
|
+
expect(b.meta).to.have.property('mediaType', 'video');
|
|
575
|
+
expect(b.vastXml).to.equal('<VAST version="3.0">');
|
|
576
|
+
expect(b.vastUrl).to.be.undefined;
|
|
577
|
+
expect(b.ad).to.equal('<VAST version="3.0">');
|
|
578
|
+
expect(b.videoCacheKey).to.equal('f1e7287514ce11ed9c1de2b3ba87449a');
|
|
579
|
+
});
|
|
580
|
+
})
|
|
581
|
+
|
|
424
582
|
it('handles nobid responses', function () {
|
|
425
583
|
let EMPTY_RESP = Object.assign({}, AD_SERVER_RESPONSE, {'body': {'decisions': null}})
|
|
426
584
|
let bids = spec.interpretResponse(EMPTY_RESP, BUILD_REQUESTS_OUTPUT);
|
|
@@ -13,7 +13,7 @@ import * as utils from 'src/utils.js';
|
|
|
13
13
|
import * as refererDetection from 'src/refererDetection.js';
|
|
14
14
|
import { config } from '../../../src/config.js';
|
|
15
15
|
import * as storageManager from 'src/storageManager.js';
|
|
16
|
-
import {BANNER, NATIVE, VIDEO} from '../../../src/mediaTypes.js';
|
|
16
|
+
import { BANNER, NATIVE, VIDEO } from '../../../src/mediaTypes.js';
|
|
17
17
|
|
|
18
18
|
describe('The Criteo bidding adapter', function () {
|
|
19
19
|
let utilsMock, sandbox;
|
|
@@ -707,7 +707,7 @@ describe('The Criteo bidding adapter', function () {
|
|
|
707
707
|
expect(ortbRequest.slots[0].sizes[0]).to.equal('undefinedxundefined');
|
|
708
708
|
});
|
|
709
709
|
|
|
710
|
-
it('should properly detect and
|
|
710
|
+
it('should properly detect and forward native flag', function () {
|
|
711
711
|
const bidRequests = [
|
|
712
712
|
{
|
|
713
713
|
mediaTypes: {
|
|
@@ -722,11 +722,10 @@ describe('The Criteo bidding adapter', function () {
|
|
|
722
722
|
];
|
|
723
723
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
724
724
|
const ortbRequest = request.data;
|
|
725
|
-
expect(ortbRequest.slots[0].
|
|
726
|
-
expect(ortbRequest.slots[0].sizes[0]).to.equal('2x2');
|
|
725
|
+
expect(ortbRequest.slots[0].native).to.equal(true);
|
|
727
726
|
});
|
|
728
727
|
|
|
729
|
-
it('should properly detect and
|
|
728
|
+
it('should properly detect and forward native flag', function () {
|
|
730
729
|
const bidRequests = [
|
|
731
730
|
{
|
|
732
731
|
mediaTypes: {
|
|
@@ -741,8 +740,7 @@ describe('The Criteo bidding adapter', function () {
|
|
|
741
740
|
];
|
|
742
741
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
743
742
|
const ortbRequest = request.data;
|
|
744
|
-
expect(ortbRequest.slots[0].
|
|
745
|
-
expect(ortbRequest.slots[0].sizes[0]).to.equal('2x2');
|
|
743
|
+
expect(ortbRequest.slots[0].native).to.equal(true);
|
|
746
744
|
});
|
|
747
745
|
|
|
748
746
|
it('should properly build a networkId request', function () {
|
|
@@ -1258,11 +1256,13 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1258
1256
|
if (inputParams.mediaType === BANNER && inputParams.size[0] === 300 && inputParams.size[1] === 250) {
|
|
1259
1257
|
return {
|
|
1260
1258
|
currency: 'USD',
|
|
1261
|
-
floor: 1.0
|
|
1259
|
+
floor: 1.0
|
|
1260
|
+
};
|
|
1262
1261
|
} else if (inputParams.mediaType === BANNER && inputParams.size[0] === 728 && inputParams.size[1] === 90) {
|
|
1263
1262
|
return {
|
|
1264
1263
|
currency: 'USD',
|
|
1265
|
-
floor: 2.0
|
|
1264
|
+
floor: 2.0
|
|
1265
|
+
};
|
|
1266
1266
|
} else {
|
|
1267
1267
|
return {}
|
|
1268
1268
|
}
|
|
@@ -1273,9 +1273,10 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1273
1273
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
1274
1274
|
expect(request.data.slots[0].ext.floors).to.deep.equal({
|
|
1275
1275
|
'banner': {
|
|
1276
|
-
'300x250': {'currency': 'USD', 'floor': 1},
|
|
1277
|
-
'728x90': {'currency': 'USD', 'floor': 2}
|
|
1278
|
-
}
|
|
1276
|
+
'300x250': { 'currency': 'USD', 'floor': 1 },
|
|
1277
|
+
'728x90': { 'currency': 'USD', 'floor': 2 }
|
|
1278
|
+
}
|
|
1279
|
+
});
|
|
1279
1280
|
});
|
|
1280
1281
|
|
|
1281
1282
|
it('should properly build a video request with several player sizes with floors', function () {
|
|
@@ -1297,11 +1298,13 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1297
1298
|
if (inputParams.mediaType === VIDEO && inputParams.size[0] === 300 && inputParams.size[1] === 250) {
|
|
1298
1299
|
return {
|
|
1299
1300
|
currency: 'USD',
|
|
1300
|
-
floor: 1.0
|
|
1301
|
+
floor: 1.0
|
|
1302
|
+
};
|
|
1301
1303
|
} else if (inputParams.mediaType === VIDEO && inputParams.size[0] === 728 && inputParams.size[1] === 90) {
|
|
1302
1304
|
return {
|
|
1303
1305
|
currency: 'USD',
|
|
1304
|
-
floor: 2.0
|
|
1306
|
+
floor: 2.0
|
|
1307
|
+
};
|
|
1305
1308
|
} else {
|
|
1306
1309
|
return {}
|
|
1307
1310
|
}
|
|
@@ -1312,9 +1315,10 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1312
1315
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
1313
1316
|
expect(request.data.slots[0].ext.floors).to.deep.equal({
|
|
1314
1317
|
'video': {
|
|
1315
|
-
'300x250': {'currency': 'USD', 'floor': 1},
|
|
1316
|
-
'728x90': {'currency': 'USD', 'floor': 2}
|
|
1317
|
-
}
|
|
1318
|
+
'300x250': { 'currency': 'USD', 'floor': 1 },
|
|
1319
|
+
'728x90': { 'currency': 'USD', 'floor': 2 }
|
|
1320
|
+
}
|
|
1321
|
+
});
|
|
1318
1322
|
});
|
|
1319
1323
|
|
|
1320
1324
|
it('should properly build a multi format request with floors', function () {
|
|
@@ -1347,19 +1351,23 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1347
1351
|
if (inputParams.mediaType === BANNER && inputParams.size[0] === 300 && inputParams.size[1] === 250) {
|
|
1348
1352
|
return {
|
|
1349
1353
|
currency: 'USD',
|
|
1350
|
-
floor: 1.0
|
|
1354
|
+
floor: 1.0
|
|
1355
|
+
};
|
|
1351
1356
|
} else if (inputParams.mediaType === BANNER && inputParams.size[0] === 728 && inputParams.size[1] === 90) {
|
|
1352
1357
|
return {
|
|
1353
1358
|
currency: 'USD',
|
|
1354
|
-
floor: 2.0
|
|
1359
|
+
floor: 2.0
|
|
1360
|
+
};
|
|
1355
1361
|
} else if (inputParams.mediaType === VIDEO && inputParams.size[0] === 640 && inputParams.size[1] === 480) {
|
|
1356
1362
|
return {
|
|
1357
1363
|
currency: 'EUR',
|
|
1358
|
-
floor: 3.2
|
|
1364
|
+
floor: 3.2
|
|
1365
|
+
};
|
|
1359
1366
|
} else if (inputParams.mediaType === NATIVE && inputParams.size === '*') {
|
|
1360
1367
|
return {
|
|
1361
1368
|
currency: 'YEN',
|
|
1362
|
-
floor: 4.99
|
|
1369
|
+
floor: 4.99
|
|
1370
|
+
};
|
|
1363
1371
|
} else {
|
|
1364
1372
|
return {}
|
|
1365
1373
|
}
|
|
@@ -1371,15 +1379,16 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1371
1379
|
expect(request.data.slots[0].ext.data.someContextAttribute).to.deep.equal('abc');
|
|
1372
1380
|
expect(request.data.slots[0].ext.floors).to.deep.equal({
|
|
1373
1381
|
'banner': {
|
|
1374
|
-
'300x250': {'currency': 'USD', 'floor': 1},
|
|
1375
|
-
'728x90': {'currency': 'USD', 'floor': 2}
|
|
1382
|
+
'300x250': { 'currency': 'USD', 'floor': 1 },
|
|
1383
|
+
'728x90': { 'currency': 'USD', 'floor': 2 }
|
|
1376
1384
|
},
|
|
1377
1385
|
'video': {
|
|
1378
|
-
'640x480': {'currency': 'EUR', 'floor': 3.2}
|
|
1386
|
+
'640x480': { 'currency': 'EUR', 'floor': 3.2 }
|
|
1379
1387
|
},
|
|
1380
1388
|
'native': {
|
|
1381
|
-
'*': {'currency': 'YEN', 'floor': 4.99}
|
|
1382
|
-
}
|
|
1389
|
+
'*': { 'currency': 'YEN', 'floor': 4.99 }
|
|
1390
|
+
}
|
|
1391
|
+
});
|
|
1383
1392
|
});
|
|
1384
1393
|
});
|
|
1385
1394
|
|
|
@@ -169,6 +169,28 @@ describe('currency', function () {
|
|
|
169
169
|
expect(getGlobal().convertCurrency(1.0, 'USD', 'EUR')).to.equal(4);
|
|
170
170
|
expect(getGlobal().convertCurrency(1.0, 'USD', 'JPY')).to.equal(200);
|
|
171
171
|
});
|
|
172
|
+
it('uses default rates until currency file is loaded', function () {
|
|
173
|
+
setConfig({
|
|
174
|
+
adServerCurrency: 'USD',
|
|
175
|
+
defaultRates: {
|
|
176
|
+
USD: {
|
|
177
|
+
JPY: 100
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// Race condition where a bid is converted before the file has been loaded
|
|
183
|
+
expect(getGlobal().convertCurrency(1.0, 'USD', 'JPY')).to.equal(100);
|
|
184
|
+
|
|
185
|
+
fakeCurrencyFileServer.respondWith(JSON.stringify({
|
|
186
|
+
'dataAsOf': '2017-04-25',
|
|
187
|
+
'conversions': {
|
|
188
|
+
'USD': { JPY: 200 }
|
|
189
|
+
}
|
|
190
|
+
}));
|
|
191
|
+
fakeCurrencyFileServer.respond();
|
|
192
|
+
expect(getGlobal().convertCurrency(1.0, 'USD', 'JPY')).to.equal(200);
|
|
193
|
+
});
|
|
172
194
|
});
|
|
173
195
|
describe('bidder override', function () {
|
|
174
196
|
it('allows setConfig to set bidder currency', function () {
|