prebid.js 8.43.0 → 8.45.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/README.md +7 -1
- package/creative/constants.js +7 -7
- package/creative/renderers/display/constants.js +2 -2
- package/creative/renderers/native/constants.js +2 -2
- 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/adWMGAnalyticsAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adpod.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/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/analyticsAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/asteriobidAnalyticsAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/automatadAnalyticsAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidViewabilityIO.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/chunk-paapi.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/confiantRtdProvider.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.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/currency.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -0
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/datawrkzBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dependencies.json +3 -3
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/dsaControl.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/genericAnalyticsAdapter.js +1 -1
- package/dist/geoedgeRtdProvider.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/holidBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/illuminBidAdapter.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/instreamTracking.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerRtdProvider.js +1 -1
- package/dist/kargoAnalyticsAdapter.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/kueezRtbBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveIntentAnalyticsAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/loyalBidAdapter.js +1 -0
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafilterRtdProvider.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/minutemediaplusBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/multibid.js +1 -1
- package/dist/neuwoRtdProvider.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +242 -239
- package/dist/oguryBidAdapter.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/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/oxxionAnalyticsAdapter.js +1 -1
- package/dist/oxxionRtdProvider.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pbsExtensions.js +1 -1
- package/dist/permutiveRtdProvider.js +1 -1
- package/dist/pgamsspBidAdapter.js +1 -1
- package/dist/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pirIdSystem.js +1 -0
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/priceFloors.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/publirBidAdapter.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubperfAnalyticsAdapter.js +1 -1
- package/dist/pubstackAnalyticsAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pulsepointAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/qortexRtdProvider.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rivrAnalyticsAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/s2sTesting.js +1 -1
- package/dist/scaleableAnalyticsAdapter.js +1 -1
- package/dist/schain.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/shinezRtbBidAdapter.js +1 -1
- package/dist/sigmoidAnalyticsAdapter.js +1 -1
- package/dist/sirdataRtdProvider.js +1 -1
- package/dist/sizeMapping.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/sonobiAnalyticsAdapter.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/staqAnalyticsAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tagorasBidAdapter.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/topicsFpdModule.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/vidazooBidAdapter.js +1 -1
- package/dist/videoModule.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexAnalyticsAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/gulpfile.js +9 -1
- package/integrationExamples/gpt/adnuntius_example.html +7 -1
- package/integrationExamples/gpt/azerionedgeRtdProvider_example.html +3 -3
- package/integrationExamples/gpt/top-level-paapi/decisionLogic.js +57 -0
- package/integrationExamples/gpt/top-level-paapi/tl_paapi_example.html +188 -0
- package/integrationExamples/gpt/x-domain/creative.html +1 -1
- package/integrationExamples/{gpt → realTimeData}/jwplayerRtdProvider_example.html +28 -42
- package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
- package/libraries/creative-renderer-native/renderer.js +1 -1
- package/modules/33acrossAnalyticsAdapter.js +2 -4
- package/modules/33acrossIdSystem.js +1 -1
- package/modules/adWMGAnalyticsAdapter.js +9 -11
- package/modules/adagioAnalyticsAdapter.js +49 -46
- package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
- package/modules/adkernelBidAdapter.js +23 -102
- package/modules/adlooxAdServerVideo.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +4 -4
- package/modules/adnuntiusBidAdapter.js +50 -32
- package/modules/adomikAnalyticsAdapter.js +7 -7
- package/modules/adpod.js +3 -3
- package/modules/adxcgAnalyticsAdapter.js +10 -10
- package/modules/adxpremiumAnalyticsAdapter.js +8 -10
- package/modules/agmaAnalyticsAdapter.js +6 -7
- package/modules/appierAnalyticsAdapter.js +5 -7
- package/modules/appnexusBidAdapter.js +1 -0
- package/modules/asteriobidAnalyticsAdapter.js +14 -14
- package/modules/atsAnalyticsAdapter.js +4 -4
- package/modules/automatadAnalyticsAdapter.js +20 -20
- package/modules/azerionedgeRtdProvider.md +4 -2
- package/modules/bidViewability.js +3 -3
- package/modules/bidViewabilityIO.js +3 -3
- package/modules/bidwatchAnalyticsAdapter.js +7 -9
- package/modules/brandmetricsRtdProvider.js +6 -6
- package/modules/browsiRtdProvider.js +3 -3
- package/modules/byDataAnalyticsAdapter.js +3 -3
- package/modules/cleanioRtdProvider.js +3 -3
- package/modules/concertAnalyticsAdapter.js +5 -7
- package/modules/confiantRtdProvider.js +2 -2
- package/modules/conversantAnalyticsAdapter.js +2 -4
- package/modules/criteoBidAdapter.js +53 -10
- package/modules/currency.js +7 -7
- package/modules/dailymotionBidAdapter.js +139 -0
- package/modules/dailymotionBidAdapter.md +140 -0
- package/modules/datawrkzBidAdapter.js +4 -4
- package/modules/debugging/pbsInterceptor.js +2 -2
- package/modules/dfpAdServerVideo.js +2 -2
- package/modules/discoveryBidAdapter.js +21 -0
- package/modules/dsaControl.js +5 -5
- package/modules/eplanningAnalyticsAdapter.js +8 -8
- package/modules/fintezaAnalyticsAdapter.js +5 -5
- package/modules/gdprEnforcement.js +3 -3
- package/modules/geoedgeRtdProvider.js +2 -2
- package/modules/greenbidsAnalyticsAdapter.js +13 -10
- package/modules/greenbidsRtdProvider.js +2 -2
- package/modules/gridBidAdapter.js +2 -2
- package/modules/growthCodeAnalyticsAdapter.js +14 -14
- package/modules/gumgumBidAdapter.js +4 -1
- package/modules/hadronAnalyticsAdapter.js +14 -14
- package/modules/holidBidAdapter.js +2 -2
- package/modules/id5AnalyticsAdapter.js +7 -9
- package/modules/improvedigitalBidAdapter.js +2 -1
- package/modules/insticatorBidAdapter.js +137 -27
- package/modules/instreamTracking.js +4 -4
- package/modules/invisiblyAnalyticsAdapter.js +15 -17
- package/modules/ixBidAdapter.js +3 -3
- package/modules/jwplayerRtdProvider.js +93 -26
- package/modules/jwplayerRtdProvider.md +23 -2
- package/modules/kargoAnalyticsAdapter.js +3 -3
- package/modules/kargoBidAdapter.js +26 -31
- package/modules/konduitAnalyticsAdapter.js +13 -13
- package/modules/lassoBidAdapter.js +11 -2
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/liveIntentAnalyticsAdapter.js +2 -2
- package/modules/livewrappedAnalyticsAdapter.js +10 -10
- package/modules/loyalBidAdapter.js +190 -0
- package/modules/loyalBidAdapter.md +79 -0
- package/modules/magniteAnalyticsAdapter.js +25 -23
- package/modules/malltvAnalyticsAdapter.js +4 -6
- package/modules/mediafilterRtdProvider.js +2 -2
- package/modules/medianetAnalyticsAdapter.js +12 -12
- package/modules/medianetBidAdapter.js +1 -1
- package/modules/multibid/index.js +2 -2
- package/modules/neuwoRtdProvider.js +2 -2
- package/modules/nextMillenniumBidAdapter.js +4 -4
- package/modules/nobidAnalyticsAdapter.js +9 -11
- package/modules/ooloAnalyticsAdapter.js +2 -2
- package/modules/oxxionAnalyticsAdapter.js +7 -9
- package/modules/paapi.js +20 -6
- package/modules/permutiveRtdProvider.js +21 -2
- package/modules/pgamsspBidAdapter.js +26 -3
- package/modules/pirIdSystem.js +62 -0
- package/modules/pirIdSystem.md +27 -0
- package/modules/prebidServerBidAdapter/index.js +8 -8
- package/modules/prebidServerBidAdapter/ortbConverter.js +3 -3
- package/modules/prebidmanagerAnalyticsAdapter.js +14 -14
- package/modules/priceFloors.js +10 -5
- package/modules/pubmaticAnalyticsAdapter.js +32 -22
- package/modules/pubmaticBidAdapter.js +1 -17
- package/modules/pubwiseAnalyticsAdapter.js +11 -11
- package/modules/pubxaiAnalyticsAdapter.js +6 -6
- package/modules/qortexRtdProvider.js +2 -2
- package/modules/roxotAnalyticsAdapter.js +8 -10
- package/modules/rtdModule/index.js +7 -7
- package/modules/scaleableAnalyticsAdapter.js +5 -5
- package/modules/seedtagBidAdapter.js +12 -3
- package/modules/sigmoidAnalyticsAdapter.js +7 -7
- package/modules/sirdataRtdProvider.js +2 -0
- package/modules/smaatoBidAdapter.js +1 -2
- package/modules/sonobiAnalyticsAdapter.js +10 -12
- package/modules/sonobiBidAdapter.js +2 -5
- package/modules/sovrnAnalyticsAdapter.js +7 -9
- package/modules/sovrnBidAdapter.js +1 -1
- package/modules/staqAnalyticsAdapter.js +9 -9
- package/modules/teadsBidAdapter.js +2 -0
- package/modules/terceptAnalyticsAdapter.js +7 -7
- package/modules/topicsFpdModule.js +3 -0
- package/modules/topicsFpdModule.md +4 -0
- package/modules/ucfunnelAnalyticsAdapter.js +5 -7
- package/modules/userId/index.js +3 -3
- package/modules/videoModule/index.js +4 -4
- package/modules/yandexAnalyticsAdapter.js +2 -2
- package/modules/yieldoneAnalyticsAdapter.js +7 -7
- package/modules/yuktamediaAnalyticsAdapter.js +9 -9
- package/modules/zeta_global_sspAnalyticsAdapter.js +5 -5
- package/modules/zeta_global_sspBidAdapter.js +8 -1
- package/package.json +1 -1
- package/src/adRendering.js +15 -15
- package/src/adUnits.js +9 -21
- package/src/adapterManager.js +23 -13
- package/src/adapters/bidderFactory.js +8 -8
- package/src/auction.js +26 -28
- package/src/auctionManager.js +4 -4
- package/src/bidderSettings.js +2 -2
- package/src/config.js +2 -2
- package/src/constants.js +190 -0
- package/src/events.js +3 -3
- package/src/native.js +6 -8
- package/src/prebid.js +6 -10
- package/src/secureCreatives.js +5 -5
- package/src/targeting.js +13 -13
- package/src/utils.js +4 -4
- package/test/fixtures/fixtures.js +44 -44
- package/test/helpers/analytics.js +6 -6
- package/test/spec/AnalyticsAdapter_spec.js +3 -3
- package/test/spec/auctionmanager_spec.js +82 -82
- package/test/spec/modules/33acrossAnalyticsAdapter_spec.js +1 -2
- package/test/spec/modules/33acrossIdSystem_spec.js +3 -3
- package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +14 -14
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +79 -55
- package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
- package/test/spec/modules/adkernelBidAdapter_spec.js +63 -24
- package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +10 -7
- package/test/spec/modules/adomikAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/adxcgAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/adxpremiumAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/agmaAnalyticsAdapter_spec.js +18 -14
- package/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/asteriobidAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +8 -8
- package/test/spec/modules/automatadAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
- package/test/spec/modules/bidViewability_spec.js +4 -4
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +7 -6
- package/test/spec/modules/byDataAnalyticsAdapter_spec.js +5 -4
- package/test/spec/modules/cleanioRtdProvider_spec.js +6 -6
- package/test/spec/modules/concertAnalyticsAdapter_spec.js +7 -6
- package/test/spec/modules/confiantRtdProvider_spec.js +2 -2
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +61 -61
- package/test/spec/modules/criteoBidAdapter_spec.js +112 -6
- package/test/spec/modules/currency_spec.js +6 -6
- package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
- package/test/spec/modules/discoveryBidAdapter_spec.js +35 -1
- package/test/spec/modules/dsaControl_spec.js +4 -4
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +20 -13
- package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +5 -5
- package/test/spec/modules/genericAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/geoedgeRtdProvider_spec.js +37 -37
- package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +15 -2
- package/test/spec/modules/greenbidsRtdProvider_spec.js +2 -2
- package/test/spec/modules/gridBidAdapter_spec.js +3 -1
- package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/gumgumBidAdapter_spec.js +23 -0
- package/test/spec/modules/hadronAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/id5AnalyticsAdapter_spec.js +5 -5
- package/test/spec/modules/id5IdSystem_spec.js +2 -2
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
- package/test/spec/modules/insticatorBidAdapter_spec.js +275 -22
- package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +40 -40
- package/test/spec/modules/jwplayerRtdProvider_spec.js +672 -29
- package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/kargoBidAdapter_spec.js +36 -0
- package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
- package/test/spec/modules/lassoBidAdapter_spec.js +1 -0
- package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +16 -1
- package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
- package/test/spec/modules/loyalBidAdapter_spec .js +375 -0
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +31 -15
- package/test/spec/modules/malltvAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/mediafilterRtdProvider_spec.js +2 -2
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/nobidAnalyticsAdapter_spec.js +23 -23
- package/test/spec/modules/ooloAnalyticsAdapter_spec.js +33 -33
- package/test/spec/modules/optimonAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/paapi_spec.js +40 -14
- package/test/spec/modules/permutiveRtdProvider_spec.js +29 -1
- package/test/spec/modules/pgamsspBidAdapter_spec.js +50 -4
- package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +9 -9
- package/test/spec/modules/pirIdSystem_spec.js +77 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +7 -7
- package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/priceFloors_spec.js +6 -5
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +12 -14
- package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +14 -14
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/qortexRtdProvider_spec.js +2 -2
- package/test/spec/modules/realTimeDataModule_spec.js +9 -9
- package/test/spec/modules/relevantAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/relevantdigitalBidAdapter_spec.js +2 -2
- package/test/spec/modules/rivrAnalyticsAdapter_spec.js +4 -4
- package/test/spec/modules/roxotAnalyticsAdapter_spec.js +25 -25
- package/test/spec/modules/scaleableAnalyticsAdapter_spec.js +5 -5
- package/test/spec/modules/seedtagBidAdapter_spec.js +56 -3
- package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/sonobiAnalyticsAdapter_spec.js +8 -7
- package/test/spec/modules/sonobiBidAdapter_spec.js +4 -6
- package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/sovrnBidAdapter_spec.js +5 -5
- package/test/spec/modules/staqAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/teadsBidAdapter_spec.js +35 -0
- package/test/spec/modules/terceptAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/trionBidAdapter_spec.js +1 -1
- package/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/userId_spec.js +4 -4
- package/test/spec/modules/videoModule/pbVideo_spec.js +3 -3
- package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +22 -21
- package/test/spec/modules/yuktamediaAnalyticsAdapter_spec.js +33 -32
- package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +8 -8
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +1 -1
- package/test/spec/native_spec.js +19 -19
- package/test/spec/unit/adRendering_spec.js +14 -14
- package/test/spec/unit/adUnits_spec.js +1 -1
- package/test/spec/unit/core/adapterManager_spec.js +99 -59
- package/test/spec/unit/core/bidderFactory_spec.js +6 -6
- package/test/spec/unit/core/targeting_spec.js +47 -47
- package/test/spec/unit/pbjs_api_spec.js +81 -81
- package/test/spec/unit/secureCreatives_spec.js +27 -27
- package/test/spec/utils_spec.js +2 -2
- package/src/constants.json +0 -196
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
getContentSegments,
|
|
12
12
|
getVatFromCache,
|
|
13
13
|
getVatFromPlayer,
|
|
14
|
+
setOverrides,
|
|
14
15
|
jwplayerSubmodule
|
|
15
16
|
} from 'modules/jwplayerRtdProvider.js';
|
|
16
17
|
import {server} from 'test/mocks/xhr.js';
|
|
@@ -47,7 +48,9 @@ describe('jwplayerRtdProvider', function() {
|
|
|
47
48
|
playlist: [
|
|
48
49
|
{
|
|
49
50
|
file: 'test.mp4',
|
|
50
|
-
jwpseg: validSegments
|
|
51
|
+
jwpseg: validSegments,
|
|
52
|
+
title: 'test',
|
|
53
|
+
description: 'this is a test'
|
|
51
54
|
}
|
|
52
55
|
]
|
|
53
56
|
})
|
|
@@ -57,7 +60,44 @@ describe('jwplayerRtdProvider', function() {
|
|
|
57
60
|
|
|
58
61
|
const validTargeting = {
|
|
59
62
|
segments: validSegments,
|
|
60
|
-
mediaID: testIdForSuccess
|
|
63
|
+
mediaID: testIdForSuccess,
|
|
64
|
+
mediaUrl: 'test.mp4',
|
|
65
|
+
title: 'test',
|
|
66
|
+
description: 'this is a test'
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
expect(targetingInfo).to.deep.equal(validTargeting);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('should obtain file from sources', function () {
|
|
73
|
+
request.respond(
|
|
74
|
+
200,
|
|
75
|
+
responseHeader,
|
|
76
|
+
JSON.stringify({
|
|
77
|
+
playlist: [
|
|
78
|
+
{
|
|
79
|
+
sources: [{
|
|
80
|
+
label: 'missing file',
|
|
81
|
+
}, {
|
|
82
|
+
file: 'source.mp4',
|
|
83
|
+
label: 'valid file'
|
|
84
|
+
}],
|
|
85
|
+
jwpseg: validSegments,
|
|
86
|
+
title: 'test',
|
|
87
|
+
description: 'this is a test'
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
})
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
const targetingInfo = getVatFromCache(testIdForSuccess);
|
|
94
|
+
|
|
95
|
+
const validTargeting = {
|
|
96
|
+
segments: validSegments,
|
|
97
|
+
mediaID: testIdForSuccess,
|
|
98
|
+
mediaUrl: 'source.mp4',
|
|
99
|
+
title: 'test',
|
|
100
|
+
description: 'this is a test'
|
|
61
101
|
};
|
|
62
102
|
|
|
63
103
|
expect(targetingInfo).to.deep.equal(validTargeting);
|
|
@@ -82,16 +122,12 @@ describe('jwplayerRtdProvider', function() {
|
|
|
82
122
|
expect(targetingInfo).to.be.null;
|
|
83
123
|
});
|
|
84
124
|
|
|
85
|
-
it('should not write to cache when
|
|
125
|
+
it('should not write to cache when playlist is empty', function() {
|
|
86
126
|
request.respond(
|
|
87
127
|
200,
|
|
88
128
|
responseHeader,
|
|
89
129
|
JSON.stringify({
|
|
90
|
-
playlist: [
|
|
91
|
-
{
|
|
92
|
-
file: 'test.mp4'
|
|
93
|
-
}
|
|
94
|
-
]
|
|
130
|
+
playlist: []
|
|
95
131
|
})
|
|
96
132
|
);
|
|
97
133
|
const targetingInfo = getVatFromCache(testIdForFailure);
|
|
@@ -150,26 +186,41 @@ describe('jwplayerRtdProvider', function() {
|
|
|
150
186
|
describe('When jwplayer.js is on page', function () {
|
|
151
187
|
const playlistItemWithSegmentMock = {
|
|
152
188
|
mediaid: mediaIdWithSegment,
|
|
189
|
+
title: 'Media With Segment',
|
|
190
|
+
description: 'The media has segments',
|
|
191
|
+
file: 'mediaWithSegments.mp4',
|
|
153
192
|
jwpseg: validSegments
|
|
154
193
|
};
|
|
155
194
|
|
|
156
195
|
const targetingForMediaWithSegment = {
|
|
157
196
|
segments: validSegments,
|
|
158
|
-
mediaID: mediaIdWithSegment
|
|
197
|
+
mediaID: mediaIdWithSegment,
|
|
198
|
+
title: 'Media With Segment',
|
|
199
|
+
description: 'The media has segments',
|
|
200
|
+
mediaUrl: 'mediaWithSegments.mp4',
|
|
159
201
|
};
|
|
160
202
|
|
|
161
203
|
const playlistItemNoSegmentMock = {
|
|
162
|
-
mediaid: mediaIdNoSegment
|
|
204
|
+
mediaid: mediaIdNoSegment,
|
|
205
|
+
title: 'Media Without Segment',
|
|
206
|
+
description: 'The media has no segments',
|
|
207
|
+
file: 'mediaWithoutSegments.mp4',
|
|
163
208
|
};
|
|
164
209
|
|
|
165
210
|
const currentItemSegments = ['test_seg_3', 'test_seg_4'];
|
|
166
211
|
const currentPlaylistItemMock = {
|
|
167
212
|
mediaid: mediaIdForCurrentItem,
|
|
168
|
-
jwpseg: currentItemSegments
|
|
213
|
+
jwpseg: currentItemSegments,
|
|
214
|
+
title: 'Current Item',
|
|
215
|
+
description: 'The current playlist item',
|
|
216
|
+
file: 'currentItem.mp4',
|
|
169
217
|
};
|
|
170
218
|
const targetingForCurrentItem = {
|
|
171
219
|
segments: currentItemSegments,
|
|
172
|
-
mediaID: mediaIdForCurrentItem
|
|
220
|
+
mediaID: mediaIdForCurrentItem,
|
|
221
|
+
title: 'Current Item',
|
|
222
|
+
description: 'The current playlist item',
|
|
223
|
+
mediaUrl: 'currentItem.mp4',
|
|
173
224
|
};
|
|
174
225
|
|
|
175
226
|
const playerInstanceMock = {
|
|
@@ -199,23 +250,23 @@ describe('jwplayerRtdProvider', function() {
|
|
|
199
250
|
expect(targeting).to.be.null;
|
|
200
251
|
});
|
|
201
252
|
|
|
202
|
-
it('returns
|
|
253
|
+
it('returns targeting when media ID matches a playlist item', function () {
|
|
203
254
|
const targeting = getVatFromPlayer(validPlayerID, mediaIdWithSegment);
|
|
204
255
|
expect(targeting).to.deep.equal(targetingForMediaWithSegment);
|
|
205
256
|
});
|
|
206
257
|
|
|
207
|
-
it('caches
|
|
258
|
+
it('caches item when media ID matches a valid playist item', function () {
|
|
208
259
|
getVatFromPlayer(validPlayerID, mediaIdWithSegment);
|
|
209
260
|
const vat = getVatFromCache(mediaIdWithSegment);
|
|
210
|
-
expect(vat
|
|
261
|
+
expect(vat).to.deep.equal(targetingForMediaWithSegment);
|
|
211
262
|
});
|
|
212
263
|
|
|
213
|
-
it('returns
|
|
264
|
+
it('returns targeting of current item when media ID is missing', function () {
|
|
214
265
|
const targeting = getVatFromPlayer(validPlayerID);
|
|
215
266
|
expect(targeting).to.deep.equal(targetingForCurrentItem);
|
|
216
267
|
});
|
|
217
268
|
|
|
218
|
-
it('caches
|
|
269
|
+
it('caches metadata from the current item', function () {
|
|
219
270
|
getVatFromPlayer(validPlayerID);
|
|
220
271
|
|
|
221
272
|
window.jwplayer = null;
|
|
@@ -225,10 +276,11 @@ describe('jwplayerRtdProvider', function() {
|
|
|
225
276
|
|
|
226
277
|
it('returns undefined segments when segments are absent', function () {
|
|
227
278
|
const targeting = getVatFromPlayer(validPlayerID, mediaIdNoSegment);
|
|
228
|
-
expect(targeting).to.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
279
|
+
expect(targeting.segments).to.be.undefined;
|
|
280
|
+
expect(targeting.mediaID).to.equal(mediaIdNoSegment);
|
|
281
|
+
expect(targeting.title).to.equal('Media Without Segment');
|
|
282
|
+
expect(targeting.description).to.equal('The media has no segments');
|
|
283
|
+
expect(targeting.mediaUrl).to.equal('mediaWithoutSegments.mp4');
|
|
232
284
|
});
|
|
233
285
|
|
|
234
286
|
describe('Get Bid Request Data', function () {
|
|
@@ -489,7 +541,9 @@ describe('jwplayerRtdProvider', function() {
|
|
|
489
541
|
playlist: [
|
|
490
542
|
{
|
|
491
543
|
file: 'test.mp4',
|
|
492
|
-
jwpseg: validSegments
|
|
544
|
+
jwpseg: validSegments,
|
|
545
|
+
title: 'test title',
|
|
546
|
+
description: 'test description',
|
|
493
547
|
}
|
|
494
548
|
]
|
|
495
549
|
})
|
|
@@ -498,6 +552,9 @@ describe('jwplayerRtdProvider', function() {
|
|
|
498
552
|
expect(ortb2Fragments.global).to.have.property('site');
|
|
499
553
|
expect(ortb2Fragments.global.site).to.have.property('content');
|
|
500
554
|
expect(ortb2Fragments.global.site.content).to.have.property('id', 'jw_' + testIdForSuccess);
|
|
555
|
+
expect(ortb2Fragments.global.site.content).to.have.property('url', 'test.mp4');
|
|
556
|
+
expect(ortb2Fragments.global.site.content).to.have.property('title', 'test title');
|
|
557
|
+
expect(ortb2Fragments.global.site.content.ext).to.have.property('description', 'test description');
|
|
501
558
|
expect(ortb2Fragments.global.site.content).to.have.property('data');
|
|
502
559
|
const data = ortb2Fragments.global.site.content.data;
|
|
503
560
|
expect(data).to.have.length(1);
|
|
@@ -742,6 +799,15 @@ describe('jwplayerRtdProvider', function() {
|
|
|
742
799
|
});
|
|
743
800
|
|
|
744
801
|
describe(' Add Ortb Site Content', function () {
|
|
802
|
+
beforeEach(() => {
|
|
803
|
+
setOverrides({
|
|
804
|
+
overrideContentId: 'always',
|
|
805
|
+
overrideContentUrl: 'whenEmpty',
|
|
806
|
+
overrideContentTitle: 'whenEmpty',
|
|
807
|
+
overrideContentDescription: 'whenEmpty'
|
|
808
|
+
});
|
|
809
|
+
});
|
|
810
|
+
|
|
745
811
|
it('should maintain object structure when id and data params are empty', function () {
|
|
746
812
|
const ortb2 = {
|
|
747
813
|
site: {
|
|
@@ -766,9 +832,15 @@ describe('jwplayerRtdProvider', function() {
|
|
|
766
832
|
it('should create a structure compliant with the oRTB 2 spec', function() {
|
|
767
833
|
const ortb2 = {}
|
|
768
834
|
const expectedId = 'expectedId';
|
|
835
|
+
const expectedUrl = 'expectedUrl';
|
|
836
|
+
const expectedTitle = 'expectedTitle';
|
|
837
|
+
const expectedDescription = 'expectedDescription';
|
|
769
838
|
const expectedData = { datum: 'datum' };
|
|
770
|
-
addOrtbSiteContent(ortb2, expectedId, expectedData);
|
|
839
|
+
addOrtbSiteContent(ortb2, expectedId, expectedData, expectedTitle, expectedDescription, expectedUrl);
|
|
771
840
|
expect(ortb2).to.have.nested.property('site.content.id', expectedId);
|
|
841
|
+
expect(ortb2).to.have.nested.property('site.content.url', expectedUrl);
|
|
842
|
+
expect(ortb2).to.have.nested.property('site.content.title', expectedTitle);
|
|
843
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', expectedDescription);
|
|
772
844
|
expect(ortb2).to.have.nested.property('site.content.data');
|
|
773
845
|
expect(ortb2.site.content.data[0]).to.be.deep.equal(expectedData);
|
|
774
846
|
});
|
|
@@ -777,11 +849,14 @@ describe('jwplayerRtdProvider', function() {
|
|
|
777
849
|
const ortb2 = {
|
|
778
850
|
site: {
|
|
779
851
|
content: {
|
|
780
|
-
id: 'oldId'
|
|
852
|
+
id: 'oldId',
|
|
853
|
+
ext: {
|
|
854
|
+
random_field: 'randomField'
|
|
855
|
+
}
|
|
781
856
|
},
|
|
782
857
|
random: {
|
|
783
858
|
random_sub: 'randomSub'
|
|
784
|
-
}
|
|
859
|
+
},
|
|
785
860
|
},
|
|
786
861
|
app: {
|
|
787
862
|
content: {
|
|
@@ -791,23 +866,30 @@ describe('jwplayerRtdProvider', function() {
|
|
|
791
866
|
};
|
|
792
867
|
|
|
793
868
|
const expectedId = 'expectedId';
|
|
869
|
+
const expectedUrl = 'expectedUrl';
|
|
870
|
+
const expectedTitle = 'expectedTitle';
|
|
871
|
+
const expectedDescription = 'expectedDescription';
|
|
794
872
|
const expectedData = { datum: 'datum' };
|
|
795
|
-
addOrtbSiteContent(ortb2, expectedId, expectedData);
|
|
873
|
+
addOrtbSiteContent(ortb2, expectedId, expectedData, expectedTitle, expectedDescription, expectedUrl);
|
|
796
874
|
expect(ortb2).to.have.nested.property('site.random.random_sub', 'randomSub');
|
|
797
875
|
expect(ortb2).to.have.nested.property('app.content.id', 'appId');
|
|
876
|
+
expect(ortb2).to.have.nested.property('site.content.ext.random_field', 'randomField');
|
|
798
877
|
expect(ortb2).to.have.nested.property('site.content.id', expectedId);
|
|
878
|
+
expect(ortb2).to.have.nested.property('site.content.url', expectedUrl);
|
|
879
|
+
expect(ortb2).to.have.nested.property('site.content.title', expectedTitle);
|
|
880
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', expectedDescription);
|
|
799
881
|
expect(ortb2).to.have.nested.property('site.content.data');
|
|
800
882
|
expect(ortb2.site.content.data[0]).to.be.deep.equal(expectedData);
|
|
801
883
|
});
|
|
802
884
|
|
|
803
|
-
it('should set content id', function () {
|
|
885
|
+
it('should set content id by default when absent from ortb2', function () {
|
|
804
886
|
const ortb2 = {};
|
|
805
887
|
const expectedId = 'expectedId';
|
|
806
888
|
addOrtbSiteContent(ortb2, expectedId);
|
|
807
889
|
expect(ortb2).to.have.nested.property('site.content.id', expectedId);
|
|
808
890
|
});
|
|
809
891
|
|
|
810
|
-
it('should override content id', function () {
|
|
892
|
+
it('should override content id by default', function () {
|
|
811
893
|
const ortb2 = {
|
|
812
894
|
site: {
|
|
813
895
|
content: {
|
|
@@ -821,7 +903,7 @@ describe('jwplayerRtdProvider', function() {
|
|
|
821
903
|
expect(ortb2).to.have.nested.property('site.content.id', expectedId);
|
|
822
904
|
});
|
|
823
905
|
|
|
824
|
-
it('should keep previous content id when not
|
|
906
|
+
it('should keep previous content id when new value is not available', function () {
|
|
825
907
|
const previousId = 'oldId';
|
|
826
908
|
const ortb2 = {
|
|
827
909
|
site: {
|
|
@@ -836,6 +918,122 @@ describe('jwplayerRtdProvider', function() {
|
|
|
836
918
|
expect(ortb2).to.have.nested.property('site.content.id', previousId);
|
|
837
919
|
});
|
|
838
920
|
|
|
921
|
+
it('should override content id when override is always', function () {
|
|
922
|
+
setOverrides({
|
|
923
|
+
overrideContentId: 'always',
|
|
924
|
+
});
|
|
925
|
+
|
|
926
|
+
const ortb2 = {
|
|
927
|
+
site: {
|
|
928
|
+
content: {
|
|
929
|
+
id: 'oldId'
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
};
|
|
933
|
+
|
|
934
|
+
const expectedId = 'expectedId';
|
|
935
|
+
addOrtbSiteContent(ortb2, expectedId);
|
|
936
|
+
expect(ortb2).to.have.nested.property('site.content.id', expectedId);
|
|
937
|
+
});
|
|
938
|
+
|
|
939
|
+
it('should keep previous content id when override is always and new value is not available', function () {
|
|
940
|
+
setOverrides({
|
|
941
|
+
overrideContentId: 'always',
|
|
942
|
+
});
|
|
943
|
+
|
|
944
|
+
const ortb2 = {
|
|
945
|
+
site: {
|
|
946
|
+
content: {
|
|
947
|
+
id: 'oldId'
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
};
|
|
951
|
+
|
|
952
|
+
addOrtbSiteContent(ortb2);
|
|
953
|
+
expect(ortb2).to.have.nested.property('site.content.id', 'oldId');
|
|
954
|
+
});
|
|
955
|
+
|
|
956
|
+
it('should populate content id when override is whenEmpty and value is empty', function () {
|
|
957
|
+
setOverrides({
|
|
958
|
+
overrideContentId: 'whenEmpty',
|
|
959
|
+
});
|
|
960
|
+
|
|
961
|
+
const ortb2 = {
|
|
962
|
+
site: {
|
|
963
|
+
content: {
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
};
|
|
967
|
+
|
|
968
|
+
addOrtbSiteContent(ortb2, 'newId');
|
|
969
|
+
expect(ortb2).to.have.nested.property('site.content.id', 'newId');
|
|
970
|
+
});
|
|
971
|
+
|
|
972
|
+
it('should keep previous content id when override is whenEmpty and value is already populated', function () {
|
|
973
|
+
setOverrides({
|
|
974
|
+
overrideContentId: 'whenEmpty',
|
|
975
|
+
});
|
|
976
|
+
|
|
977
|
+
const ortb2 = {
|
|
978
|
+
site: {
|
|
979
|
+
content: {
|
|
980
|
+
id: 'oldId'
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
};
|
|
984
|
+
|
|
985
|
+
addOrtbSiteContent(ortb2, 'newId');
|
|
986
|
+
expect(ortb2).to.have.nested.property('site.content.id', 'oldId');
|
|
987
|
+
});
|
|
988
|
+
|
|
989
|
+
it('should keep previous content id when override is whenEmpty and new value is not available', function () {
|
|
990
|
+
setOverrides({
|
|
991
|
+
overrideContentId: 'whenEmpty',
|
|
992
|
+
});
|
|
993
|
+
|
|
994
|
+
const ortb2 = {
|
|
995
|
+
site: {
|
|
996
|
+
content: {
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
};
|
|
1000
|
+
|
|
1001
|
+
addOrtbSiteContent(ortb2);
|
|
1002
|
+
expect(ortb2.site.content.id).to.be.undefined;
|
|
1003
|
+
});
|
|
1004
|
+
|
|
1005
|
+
it('should keep previous content id when overrideContentId is set to never', function () {
|
|
1006
|
+
setOverrides({
|
|
1007
|
+
overrideContentId: 'never',
|
|
1008
|
+
});
|
|
1009
|
+
|
|
1010
|
+
const ortb2 = {
|
|
1011
|
+
site: {
|
|
1012
|
+
content: {
|
|
1013
|
+
id: 'oldId'
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
};
|
|
1017
|
+
|
|
1018
|
+
addOrtbSiteContent(ortb2, 'newId');
|
|
1019
|
+
expect(ortb2).to.have.nested.property('site.content.id', 'oldId');
|
|
1020
|
+
});
|
|
1021
|
+
|
|
1022
|
+
it('should not populate content id when override is set to never', function () {
|
|
1023
|
+
setOverrides({
|
|
1024
|
+
overrideContentId: 'never',
|
|
1025
|
+
});
|
|
1026
|
+
|
|
1027
|
+
const ortb2 = {
|
|
1028
|
+
site: {
|
|
1029
|
+
content: {}
|
|
1030
|
+
}
|
|
1031
|
+
};
|
|
1032
|
+
|
|
1033
|
+
addOrtbSiteContent(ortb2, 'newId');
|
|
1034
|
+
expect(ortb2.site.content.id).to.be.undefined;
|
|
1035
|
+
});
|
|
1036
|
+
|
|
839
1037
|
it('should set content data', function () {
|
|
840
1038
|
const ortb2 = {};
|
|
841
1039
|
const expectedData = { datum: 'datum' };
|
|
@@ -878,6 +1076,451 @@ describe('jwplayerRtdProvider', function() {
|
|
|
878
1076
|
expect(ortb2.site.content.data[0]).to.be.deep.equal(expectedData);
|
|
879
1077
|
expect(ortb2).to.have.nested.property('site.content.id', expectedId);
|
|
880
1078
|
});
|
|
1079
|
+
|
|
1080
|
+
it('should set content title by default when absent from ortb2', function () {
|
|
1081
|
+
const ortb2 = {};
|
|
1082
|
+
const expectedTitle = 'expectedTitle';
|
|
1083
|
+
addOrtbSiteContent(ortb2, null, null, expectedTitle);
|
|
1084
|
+
expect(ortb2).to.have.nested.property('site.content.title', expectedTitle);
|
|
1085
|
+
});
|
|
1086
|
+
|
|
1087
|
+
it('should keep previous content title by default when already defined', function () {
|
|
1088
|
+
const ortb2 = {
|
|
1089
|
+
site: {
|
|
1090
|
+
content: {
|
|
1091
|
+
title: 'oldTitle'
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
};
|
|
1095
|
+
|
|
1096
|
+
addOrtbSiteContent(ortb2, null, null, 'newTitle');
|
|
1097
|
+
expect(ortb2).to.have.nested.property('site.content.title', 'oldTitle');
|
|
1098
|
+
});
|
|
1099
|
+
|
|
1100
|
+
it('should keep previous content title by default when new value is not available', function () {
|
|
1101
|
+
const ortb2 = {
|
|
1102
|
+
site: {
|
|
1103
|
+
content: {
|
|
1104
|
+
title: 'oldTitle',
|
|
1105
|
+
data: [{ datum: 'first_datum' }]
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
};
|
|
1109
|
+
|
|
1110
|
+
addOrtbSiteContent(ortb2, null, { datum: 'new_datum' });
|
|
1111
|
+
expect(ortb2).to.have.nested.property('site.content.title', 'oldTitle');
|
|
1112
|
+
});
|
|
1113
|
+
|
|
1114
|
+
it('should override content title when override is always', function () {
|
|
1115
|
+
setOverrides({
|
|
1116
|
+
overrideContentTitle: 'always',
|
|
1117
|
+
});
|
|
1118
|
+
|
|
1119
|
+
const ortb2 = {
|
|
1120
|
+
site: {
|
|
1121
|
+
content: {
|
|
1122
|
+
title: 'oldTitle'
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
};
|
|
1126
|
+
|
|
1127
|
+
addOrtbSiteContent(ortb2, null, null, 'newTitle');
|
|
1128
|
+
expect(ortb2).to.have.nested.property('site.content.title', 'newTitle');
|
|
1129
|
+
});
|
|
1130
|
+
|
|
1131
|
+
it('should keep previous content title when override is always and new value is not available', function () {
|
|
1132
|
+
setOverrides({
|
|
1133
|
+
overrideContentTitle: 'always',
|
|
1134
|
+
});
|
|
1135
|
+
|
|
1136
|
+
const ortb2 = {
|
|
1137
|
+
site: {
|
|
1138
|
+
content: {
|
|
1139
|
+
title: 'oldTitle'
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
};
|
|
1143
|
+
|
|
1144
|
+
addOrtbSiteContent(ortb2);
|
|
1145
|
+
expect(ortb2).to.have.nested.property('site.content.title', 'oldTitle');
|
|
1146
|
+
});
|
|
1147
|
+
|
|
1148
|
+
it('should populate content title when override is whenEmpty and value is empty', function () {
|
|
1149
|
+
setOverrides({
|
|
1150
|
+
overrideContentTitle: 'whenEmpty',
|
|
1151
|
+
});
|
|
1152
|
+
|
|
1153
|
+
const ortb2 = {
|
|
1154
|
+
site: {
|
|
1155
|
+
content: {
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
};
|
|
1159
|
+
|
|
1160
|
+
addOrtbSiteContent(ortb2, null, null, 'newTitle');
|
|
1161
|
+
expect(ortb2).to.have.nested.property('site.content.title', 'newTitle');
|
|
1162
|
+
});
|
|
1163
|
+
|
|
1164
|
+
it('should keep previous content title when override is whenEmpty and value is already populated', function () {
|
|
1165
|
+
setOverrides({
|
|
1166
|
+
overrideContentTitle: 'whenEmpty',
|
|
1167
|
+
});
|
|
1168
|
+
|
|
1169
|
+
const ortb2 = {
|
|
1170
|
+
site: {
|
|
1171
|
+
content: {
|
|
1172
|
+
title: 'oldTitle'
|
|
1173
|
+
}
|
|
1174
|
+
}
|
|
1175
|
+
};
|
|
1176
|
+
|
|
1177
|
+
addOrtbSiteContent(ortb2, null, null, 'newTitle');
|
|
1178
|
+
expect(ortb2).to.have.nested.property('site.content.title', 'oldTitle');
|
|
1179
|
+
});
|
|
1180
|
+
|
|
1181
|
+
it('should keep previous content title when override is whenEmpty and new value is not available', function () {
|
|
1182
|
+
setOverrides({
|
|
1183
|
+
overrideContentTitle: 'whenEmpty',
|
|
1184
|
+
});
|
|
1185
|
+
|
|
1186
|
+
const ortb2 = {
|
|
1187
|
+
site: {
|
|
1188
|
+
content: {
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
};
|
|
1192
|
+
|
|
1193
|
+
addOrtbSiteContent(ortb2);
|
|
1194
|
+
expect(ortb2.site.content.title).to.be.undefined;
|
|
1195
|
+
});
|
|
1196
|
+
|
|
1197
|
+
it('should keep previous content title when override is set to never', function () {
|
|
1198
|
+
setOverrides({
|
|
1199
|
+
overrideContentTitle: 'never',
|
|
1200
|
+
});
|
|
1201
|
+
|
|
1202
|
+
const ortb2 = {
|
|
1203
|
+
site: {
|
|
1204
|
+
content: {
|
|
1205
|
+
title: 'oldTitle'
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
};
|
|
1209
|
+
|
|
1210
|
+
addOrtbSiteContent(ortb2, null, null, 'newTitle');
|
|
1211
|
+
expect(ortb2).to.have.nested.property('site.content.title', 'oldTitle');
|
|
1212
|
+
});
|
|
1213
|
+
|
|
1214
|
+
it('should not populate content title when override is set to never', function () {
|
|
1215
|
+
setOverrides({
|
|
1216
|
+
overrideContentTitle: 'never',
|
|
1217
|
+
});
|
|
1218
|
+
|
|
1219
|
+
const ortb2 = {
|
|
1220
|
+
site: {
|
|
1221
|
+
content: {}
|
|
1222
|
+
}
|
|
1223
|
+
};
|
|
1224
|
+
|
|
1225
|
+
addOrtbSiteContent(ortb2, null, null, 'newTitle');
|
|
1226
|
+
expect(ortb2.site.content.title).to.be.undefined;
|
|
1227
|
+
});
|
|
1228
|
+
|
|
1229
|
+
it('should set content description by default when absent from ortb2', function () {
|
|
1230
|
+
const ortb2 = {};
|
|
1231
|
+
const expectedDescription = 'expectedDescription';
|
|
1232
|
+
addOrtbSiteContent(ortb2, null, null, null, expectedDescription);
|
|
1233
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', expectedDescription);
|
|
1234
|
+
});
|
|
1235
|
+
|
|
1236
|
+
it('should keep previous content description by default when already defined', function () {
|
|
1237
|
+
const ortb2 = {
|
|
1238
|
+
site: {
|
|
1239
|
+
content: {
|
|
1240
|
+
ext: {
|
|
1241
|
+
description: 'oldDescription'
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
};
|
|
1246
|
+
|
|
1247
|
+
addOrtbSiteContent(ortb2, null, null, null, 'newDescription');
|
|
1248
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', 'oldDescription');
|
|
1249
|
+
});
|
|
1250
|
+
|
|
1251
|
+
it('should override content description when override is always', function () {
|
|
1252
|
+
setOverrides({
|
|
1253
|
+
overrideContentDescription: 'always',
|
|
1254
|
+
});
|
|
1255
|
+
|
|
1256
|
+
const ortb2 = {
|
|
1257
|
+
site: {
|
|
1258
|
+
content: {
|
|
1259
|
+
ext: {
|
|
1260
|
+
description: 'oldDescription'
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
};
|
|
1265
|
+
|
|
1266
|
+
addOrtbSiteContent(ortb2, null, null, null, 'newDescription');
|
|
1267
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', 'newDescription');
|
|
1268
|
+
});
|
|
1269
|
+
|
|
1270
|
+
it('should keep previous content description when override is always and new value is not available', function () {
|
|
1271
|
+
setOverrides({
|
|
1272
|
+
overrideContentDescription: 'always',
|
|
1273
|
+
});
|
|
1274
|
+
|
|
1275
|
+
const ortb2 = {
|
|
1276
|
+
site: {
|
|
1277
|
+
content: {
|
|
1278
|
+
ext: {
|
|
1279
|
+
description: 'oldDescription'
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
};
|
|
1284
|
+
|
|
1285
|
+
addOrtbSiteContent(ortb2);
|
|
1286
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', 'oldDescription');
|
|
1287
|
+
});
|
|
1288
|
+
|
|
1289
|
+
it('should populate content description when override is whenEmpty and value is empty', function () {
|
|
1290
|
+
setOverrides({
|
|
1291
|
+
overrideContentDescription: 'whenEmpty',
|
|
1292
|
+
});
|
|
1293
|
+
|
|
1294
|
+
const ortb2 = {
|
|
1295
|
+
site: {
|
|
1296
|
+
content: {
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
};
|
|
1300
|
+
|
|
1301
|
+
addOrtbSiteContent(ortb2, null, null, null, 'newDescription');
|
|
1302
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', 'newDescription');
|
|
1303
|
+
});
|
|
1304
|
+
|
|
1305
|
+
it('should keep previous content description when override is whenEmpty and value is already populated', function () {
|
|
1306
|
+
setOverrides({
|
|
1307
|
+
overrideContentDescription: 'whenEmpty',
|
|
1308
|
+
});
|
|
1309
|
+
|
|
1310
|
+
const ortb2 = {
|
|
1311
|
+
site: {
|
|
1312
|
+
content: {
|
|
1313
|
+
ext: {
|
|
1314
|
+
description: 'oldDescription'
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
};
|
|
1319
|
+
|
|
1320
|
+
addOrtbSiteContent(ortb2, null, null, null, 'newDescription');
|
|
1321
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', 'oldDescription');
|
|
1322
|
+
});
|
|
1323
|
+
|
|
1324
|
+
it('should keep previous content description when override is whenEmpty and new value is not available', function () {
|
|
1325
|
+
setOverrides({
|
|
1326
|
+
overrideContentDescription: 'whenEmpty',
|
|
1327
|
+
});
|
|
1328
|
+
|
|
1329
|
+
const ortb2 = {
|
|
1330
|
+
site: {
|
|
1331
|
+
content: {
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
};
|
|
1335
|
+
|
|
1336
|
+
addOrtbSiteContent(ortb2);
|
|
1337
|
+
expect(ortb2.site.content.ext).to.be.undefined;
|
|
1338
|
+
});
|
|
1339
|
+
|
|
1340
|
+
it('should keep previous content description when override is set to never', function () {
|
|
1341
|
+
setOverrides({
|
|
1342
|
+
overrideContentDescription: 'never',
|
|
1343
|
+
});
|
|
1344
|
+
|
|
1345
|
+
const ortb2 = {
|
|
1346
|
+
site: {
|
|
1347
|
+
content: {
|
|
1348
|
+
ext: {
|
|
1349
|
+
description: 'oldDescription'
|
|
1350
|
+
}
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
};
|
|
1354
|
+
|
|
1355
|
+
addOrtbSiteContent(ortb2, null, null, null, 'newDescription');
|
|
1356
|
+
expect(ortb2).to.have.nested.property('site.content.ext.description', 'oldDescription');
|
|
1357
|
+
});
|
|
1358
|
+
|
|
1359
|
+
it('should not populate content description when override is set to never', function () {
|
|
1360
|
+
setOverrides({
|
|
1361
|
+
overrideContentDescription: 'never',
|
|
1362
|
+
});
|
|
1363
|
+
|
|
1364
|
+
const ortb2 = {
|
|
1365
|
+
site: {
|
|
1366
|
+
content: {}
|
|
1367
|
+
}
|
|
1368
|
+
};
|
|
1369
|
+
|
|
1370
|
+
addOrtbSiteContent(ortb2);
|
|
1371
|
+
expect(ortb2.site.content.ext).to.be.undefined;
|
|
1372
|
+
});
|
|
1373
|
+
|
|
1374
|
+
it('should set content url by default when absent from ortb2', function () {
|
|
1375
|
+
const ortb2 = {};
|
|
1376
|
+
const expectedUrl = 'expectedUrl';
|
|
1377
|
+
addOrtbSiteContent(ortb2, null, null, null, null, expectedUrl);
|
|
1378
|
+
expect(ortb2).to.have.nested.property('site.content.url', expectedUrl);
|
|
1379
|
+
});
|
|
1380
|
+
|
|
1381
|
+
it('should keep previous content url by default when new value is not available', function () {
|
|
1382
|
+
const ortb2 = {
|
|
1383
|
+
site: {
|
|
1384
|
+
content: {
|
|
1385
|
+
url: 'oldUrl',
|
|
1386
|
+
data: [{ datum: 'first_datum' }]
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
};
|
|
1390
|
+
|
|
1391
|
+
addOrtbSiteContent(ortb2, null, { datum: 'new_datum' });
|
|
1392
|
+
expect(ortb2).to.have.nested.property('site.content.url', 'oldUrl');
|
|
1393
|
+
});
|
|
1394
|
+
|
|
1395
|
+
it('should keep previous content url by default when already defined', function () {
|
|
1396
|
+
const ortb2 = {
|
|
1397
|
+
site: {
|
|
1398
|
+
content: {
|
|
1399
|
+
url: 'oldUrl',
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
};
|
|
1403
|
+
|
|
1404
|
+
addOrtbSiteContent(ortb2, null, null, null, null, 'newUrl');
|
|
1405
|
+
expect(ortb2).to.have.nested.property('site.content.url', 'oldUrl');
|
|
1406
|
+
});
|
|
1407
|
+
|
|
1408
|
+
it('should override content url when override is always', function () {
|
|
1409
|
+
setOverrides({
|
|
1410
|
+
overrideContentUrl: 'always',
|
|
1411
|
+
});
|
|
1412
|
+
|
|
1413
|
+
const ortb2 = {
|
|
1414
|
+
site: {
|
|
1415
|
+
content: {
|
|
1416
|
+
url: 'oldUrl',
|
|
1417
|
+
}
|
|
1418
|
+
}
|
|
1419
|
+
};
|
|
1420
|
+
|
|
1421
|
+
const expectedUrl = 'expectedUrl';
|
|
1422
|
+
addOrtbSiteContent(ortb2, null, null, null, null, expectedUrl);
|
|
1423
|
+
expect(ortb2).to.have.nested.property('site.content.url', expectedUrl);
|
|
1424
|
+
});
|
|
1425
|
+
|
|
1426
|
+
it('should keep previous content url when override is always and new value is not available', function () {
|
|
1427
|
+
setOverrides({
|
|
1428
|
+
overrideContentUrl: 'always',
|
|
1429
|
+
});
|
|
1430
|
+
|
|
1431
|
+
const ortb2 = {
|
|
1432
|
+
site: {
|
|
1433
|
+
content: {
|
|
1434
|
+
url: 'oldUrl',
|
|
1435
|
+
}
|
|
1436
|
+
}
|
|
1437
|
+
};
|
|
1438
|
+
|
|
1439
|
+
addOrtbSiteContent(ortb2);
|
|
1440
|
+
expect(ortb2).to.have.nested.property('site.content.url', 'oldUrl');
|
|
1441
|
+
});
|
|
1442
|
+
|
|
1443
|
+
it('should populate content url when override is whenEmpty and value is empty', function () {
|
|
1444
|
+
setOverrides({
|
|
1445
|
+
overrideContentUrl: 'whenEmpty',
|
|
1446
|
+
});
|
|
1447
|
+
|
|
1448
|
+
const ortb2 = {
|
|
1449
|
+
site: {
|
|
1450
|
+
content: {
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
};
|
|
1454
|
+
|
|
1455
|
+
const expectedUrl = 'expectedUrl';
|
|
1456
|
+
addOrtbSiteContent(ortb2, null, null, null, null, expectedUrl);
|
|
1457
|
+
expect(ortb2).to.have.nested.property('site.content.url', expectedUrl);
|
|
1458
|
+
});
|
|
1459
|
+
|
|
1460
|
+
it('should keep previous content url when override is whenEmpty and value is already populated', function () {
|
|
1461
|
+
setOverrides({
|
|
1462
|
+
overrideContentUrl: 'whenEmpty',
|
|
1463
|
+
});
|
|
1464
|
+
|
|
1465
|
+
const ortb2 = {
|
|
1466
|
+
site: {
|
|
1467
|
+
content: {
|
|
1468
|
+
url: 'oldUrl',
|
|
1469
|
+
}
|
|
1470
|
+
}
|
|
1471
|
+
};
|
|
1472
|
+
|
|
1473
|
+
addOrtbSiteContent(ortb2, null, null, null, null, 'newUrl');
|
|
1474
|
+
expect(ortb2).to.have.nested.property('site.content.url', 'oldUrl');
|
|
1475
|
+
});
|
|
1476
|
+
|
|
1477
|
+
it('should keep previous content url when override is whenEmpty and new value is not available', function () {
|
|
1478
|
+
setOverrides({
|
|
1479
|
+
overrideContentUrl: 'whenEmpty',
|
|
1480
|
+
});
|
|
1481
|
+
|
|
1482
|
+
const ortb2 = {
|
|
1483
|
+
site: {
|
|
1484
|
+
content: {
|
|
1485
|
+
}
|
|
1486
|
+
}
|
|
1487
|
+
};
|
|
1488
|
+
|
|
1489
|
+
addOrtbSiteContent(ortb2);
|
|
1490
|
+
expect(ortb2.site.content.url).to.be.undefined;
|
|
1491
|
+
});
|
|
1492
|
+
|
|
1493
|
+
it('should keep previous content url when override is set to never', function () {
|
|
1494
|
+
setOverrides({
|
|
1495
|
+
overrideContentUrl: 'never',
|
|
1496
|
+
});
|
|
1497
|
+
|
|
1498
|
+
const ortb2 = {
|
|
1499
|
+
site: {
|
|
1500
|
+
content: {
|
|
1501
|
+
url: 'oldUrl',
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
};
|
|
1505
|
+
|
|
1506
|
+
addOrtbSiteContent(ortb2, null, null, null, null, 'newUrl');
|
|
1507
|
+
expect(ortb2).to.have.nested.property('site.content.url', 'oldUrl');
|
|
1508
|
+
});
|
|
1509
|
+
|
|
1510
|
+
it('should not populate content url when override is set to never', function () {
|
|
1511
|
+
setOverrides({
|
|
1512
|
+
overrideContentUrl: 'never',
|
|
1513
|
+
});
|
|
1514
|
+
|
|
1515
|
+
const ortb2 = {
|
|
1516
|
+
site: {
|
|
1517
|
+
content: {}
|
|
1518
|
+
}
|
|
1519
|
+
};
|
|
1520
|
+
|
|
1521
|
+
addOrtbSiteContent(ortb2, null, null, null, null, 'newUrl');
|
|
1522
|
+
expect(ortb2.site.content.url).to.be.undefined;
|
|
1523
|
+
});
|
|
881
1524
|
});
|
|
882
1525
|
|
|
883
1526
|
describe('Add Targeting to Bid', function () {
|