prebid.js 7.25.0 → 7.27.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/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.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/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/admixerBidAdapter.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.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/aidemBidAdapter.js +1 -0
- 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/atsAnalyticsAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/bucksenseBidAdapter.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/captifyRtdProvider.js +1 -0
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertAnalyticsAdapter.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/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/dependencies.json +6 -0
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fluctBidAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/genericAnalyticsAdapter.js +1 -0
- package/dist/geoedgeRtdProvider.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/glomexBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/googleAnalyticsAdapter.js +1 -1
- package/dist/gravitoIdSystem.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -0
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.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/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerRtdProvider.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kinessoIdSystem.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/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/lotamePanoramaIdSystem.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/mediafuseBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.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/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +240 -202
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pbsExtensions.js +1 -1
- package/dist/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/pubCommonId.js +1 -1
- package/dist/pubProvidedIdSystem.js +1 -1
- package/dist/publinkIdSystem.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/quantcastBidAdapter.js +1 -1
- package/dist/quantcastIdSystem.js +1 -1
- package/dist/rasBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/realvuAnalyticsAdapter.js +1 -1
- package/dist/redtramBidAdapter.js +1 -0
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.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/rtbhouseBidAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconAnalyticsAdapter.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/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/sigmoidAnalyticsAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smartytechBidAdapter.js +1 -0
- 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/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tapadIdSystem.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teadsIdSystem.js +1 -1
- package/dist/terceptAnalyticsAdapter.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/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/viqeoBidAdapter.js +1 -0
- 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/yandexBidAdapter.js +1 -1
- package/dist/yieldlabBidAdapter.js +1 -1
- package/dist/yieldliftBidAdapter.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/dist/zeusPrimeRtdProvider.js +31 -0
- package/integrationExamples/gpt/captifyRtdProvider_example.html +167 -0
- package/integrationExamples/gpt/growthcode.html +134 -0
- package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
- package/modules/.submodules.json +3 -1
- package/modules/admaticBidAdapter.js +116 -58
- package/modules/admaticBidAdapter.md +2 -2
- package/modules/admixerBidAdapter.js +1 -1
- package/modules/aidemBidAdapter.js +492 -0
- package/modules/aidemBidAdapter.md +187 -0
- package/modules/beopBidAdapter.js +17 -2
- package/modules/browsiRtdProvider.js +6 -4
- package/modules/bucksenseBidAdapter.js +1 -1
- package/modules/captifyRtdProvider.js +146 -0
- package/modules/captifyRtdProvider.md +68 -0
- package/modules/criteoBidAdapter.js +3 -3
- package/modules/discoveryBidAdapter.js +38 -17
- package/modules/discoveryBidAdapter.md +7 -6
- package/modules/eplanningBidAdapter.js +2 -6
- package/modules/fluctBidAdapter.js +5 -0
- package/modules/gdprEnforcement.js +26 -24
- package/modules/genericAnalyticsAdapter.js +157 -0
- package/modules/geoedgeRtdProvider.js +22 -0
- package/modules/glomexBidAdapter.js +2 -0
- package/modules/gravitoIdSystem.js +3 -4
- package/modules/gridBidAdapter.js +441 -23
- package/modules/gridNMBidAdapter.js +1 -1
- package/modules/growthCodeAnalyticsAdapter.js +176 -0
- package/modules/growthCodeAnalyticsAdapter.md +41 -0
- package/modules/impactifyBidAdapter.js +19 -1
- package/modules/jwplayerRtdProvider.js +1 -2
- package/modules/limelightDigitalBidAdapter.js +1 -1
- package/modules/minutemediaBidAdapter.md +3 -3
- package/modules/nextMillenniumBidAdapter.js +19 -23
- package/modules/nexx360BidAdapter.js +264 -138
- package/modules/pubCommonId.js +2 -1
- package/modules/pubProvidedIdSystem.js +2 -0
- package/modules/rasBidAdapter.js +8 -3
- package/modules/rasBidAdapter.md +16 -15
- package/modules/redtramBidAdapter.js +155 -0
- package/modules/redtramBidAdapter.md +33 -0
- package/modules/riseBidAdapter.js +15 -0
- package/modules/riseBidAdapter.md +3 -3
- package/modules/rtbhouseBidAdapter.js +90 -29
- package/modules/rubiconBidAdapter.js +2 -1
- package/modules/seedtagBidAdapter.js +67 -56
- package/modules/seedtagBidAdapter.md +60 -0
- package/modules/sharedIdSystem.js +3 -1
- package/modules/smartadserverBidAdapter.js +6 -2
- package/modules/smartxBidAdapter.js +11 -8
- package/modules/smartytechBidAdapter.js +78 -0
- package/modules/smartytechBidAdapter.md +44 -0
- package/modules/smnBidAdapter.md +52 -0
- package/modules/taboolaBidAdapter.js +3 -3
- package/modules/taboolaBidAdapter.md +0 -2
- package/modules/tappxBidAdapter.js +21 -6
- package/modules/tripleliftBidAdapter.js +1 -1
- package/modules/ttdBidAdapter.js +8 -3
- package/modules/userId/index.js +1 -1
- package/modules/vidazooBidAdapter.js +26 -3
- package/modules/viqeoBidAdapter.js +180 -0
- package/modules/viqeoBidAdapter.md +56 -0
- package/modules/yandexBidAdapter.js +85 -19
- package/modules/yandexBidAdapter.md +7 -7
- package/modules/yieldlabBidAdapter.js +29 -12
- package/modules/yieldliftBidAdapter.js +3 -3
- package/modules/yieldoneBidAdapter.js +60 -8
- package/modules/yieldoneBidAdapter.md +109 -9
- package/modules/zeta_global_sspBidAdapter.js +4 -0
- package/modules/zeusPrimeRtdProvider.js +357 -0
- package/modules/zeusPrimeRtdProvider.md +60 -0
- package/package.json +1 -1
- package/src/adloader.js +0 -1
- package/src/auction.js +19 -3
- package/src/consentHandler.js +8 -0
- package/src/events.js +4 -0
- package/src/native.js +31 -20
- package/src/refererDetection.js +6 -1
- package/src/storageManager.js +6 -3
- package/test/helpers/analytics.js +34 -0
- package/test/mocks/analyticsStub.js +3 -1
- package/test/spec/AnalyticsAdapter_spec.js +119 -116
- package/test/spec/auctionmanager_spec.js +86 -0
- package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
- package/test/spec/modules/admaticBidAdapter_spec.js +262 -3
- package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
- package/test/spec/modules/beopBidAdapter_spec.js +52 -0
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
- package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
- package/test/spec/modules/captifyRtdProvider_spec.js +253 -0
- package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
- package/test/spec/modules/discoveryBidAdapter_spec.js +9 -8
- package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
- package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
- package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
- package/test/spec/modules/fpdModule_spec.js +1 -1
- package/test/spec/modules/gdprEnforcement_spec.js +115 -68
- package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
- package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
- package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
- package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
- package/test/spec/modules/gridBidAdapter_spec.js +289 -1
- package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
- package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
- package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
- package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
- package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
- package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +4 -3
- package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
- package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
- package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
- package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
- package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
- package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
- package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
- package/test/spec/modules/rasBidAdapter_spec.js +5 -1
- package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
- package/test/spec/modules/riseBidAdapter_spec.js +24 -0
- package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
- package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
- package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
- package/test/spec/modules/smartadserverBidAdapter_spec.js +80 -0
- package/test/spec/modules/smartxBidAdapter_spec.js +32 -0
- package/test/spec/modules/smartytechBidAdapter_spec.js +162 -0
- package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
- package/test/spec/modules/taboolaBidAdapter_spec.js +0 -77
- package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
- package/test/spec/modules/ttdBidAdapter_spec.js +27 -0
- package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
- package/test/spec/modules/viqeoBidAdapter_spec.js +124 -0
- package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
- package/test/spec/modules/yieldlabBidAdapter_spec.js +174 -20
- package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
- package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
- package/test/spec/modules/yieldoneBidAdapter_spec.js +30 -6
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +16 -1
- package/test/spec/modules/zeusPrimeRtdProvider_spec.js +410 -0
- package/test/spec/native_spec.js +68 -56
- package/test/spec/refererDetection_spec.js +45 -7
- package/test/spec/unit/core/storageManager_spec.js +2 -1
|
@@ -25,11 +25,11 @@ function getSlotConfigs(mediaTypes, params) {
|
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
function
|
|
28
|
+
function createInStreamSlotConfig(mediaType) {
|
|
29
29
|
return getSlotConfigs(mediaType, {
|
|
30
30
|
publisherId: PUBLISHER_ID,
|
|
31
31
|
adUnitId: ADUNIT_ID,
|
|
32
|
-
placement: '
|
|
32
|
+
placement: 'inStream',
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -48,13 +48,7 @@ describe('Seedtag Adapter', function () {
|
|
|
48
48
|
}
|
|
49
49
|
);
|
|
50
50
|
};
|
|
51
|
-
const placements = [
|
|
52
|
-
'banner',
|
|
53
|
-
'video',
|
|
54
|
-
'inImage',
|
|
55
|
-
'inScreen',
|
|
56
|
-
'inArticle',
|
|
57
|
-
];
|
|
51
|
+
const placements = ['inBanner', 'inImage', 'inScreen', 'inArticle'];
|
|
58
52
|
placements.forEach((placement) => {
|
|
59
53
|
it('should be ' + placement, function () {
|
|
60
54
|
const isBidRequestValid = spec.isBidRequestValid(
|
|
@@ -67,39 +61,41 @@ describe('Seedtag Adapter', function () {
|
|
|
67
61
|
});
|
|
68
62
|
describe('when video slot has all mandatory params', function () {
|
|
69
63
|
it('should return true, when video context is instream', function () {
|
|
70
|
-
const slotConfig =
|
|
71
|
-
{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
playerSize: [[600, 200]],
|
|
75
|
-
},
|
|
64
|
+
const slotConfig = createInStreamSlotConfig({
|
|
65
|
+
video: {
|
|
66
|
+
context: 'instream',
|
|
67
|
+
playerSize: [[600, 200]],
|
|
76
68
|
},
|
|
77
|
-
|
|
78
|
-
publisherId: PUBLISHER_ID,
|
|
79
|
-
adUnitId: ADUNIT_ID,
|
|
80
|
-
placement: 'video',
|
|
81
|
-
}
|
|
82
|
-
);
|
|
69
|
+
});
|
|
83
70
|
const isBidRequestValid = spec.isBidRequestValid(slotConfig);
|
|
84
71
|
expect(isBidRequestValid).to.equal(true);
|
|
85
72
|
});
|
|
86
|
-
|
|
87
|
-
it('should return true, when video context is outstream', function () {
|
|
73
|
+
it('should return true, when video context is instream, but placement is not inStream', function () {
|
|
88
74
|
const slotConfig = getSlotConfigs(
|
|
89
75
|
{
|
|
90
76
|
video: {
|
|
91
|
-
context: '
|
|
77
|
+
context: 'instream',
|
|
92
78
|
playerSize: [[600, 200]],
|
|
93
79
|
},
|
|
94
80
|
},
|
|
95
81
|
{
|
|
96
82
|
publisherId: PUBLISHER_ID,
|
|
97
83
|
adUnitId: ADUNIT_ID,
|
|
98
|
-
placement: '
|
|
84
|
+
placement: 'inBanner',
|
|
99
85
|
}
|
|
100
86
|
);
|
|
101
87
|
const isBidRequestValid = spec.isBidRequestValid(slotConfig);
|
|
102
|
-
expect(isBidRequestValid).to.equal(
|
|
88
|
+
expect(isBidRequestValid).to.equal(false);
|
|
89
|
+
});
|
|
90
|
+
it('should return false, when video context is outstream', function () {
|
|
91
|
+
const slotConfig = createInStreamSlotConfig({
|
|
92
|
+
video: {
|
|
93
|
+
context: 'outstream',
|
|
94
|
+
playerSize: [[600, 200]],
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
const isBidRequestValid = spec.isBidRequestValid(slotConfig);
|
|
98
|
+
expect(isBidRequestValid).to.equal(false);
|
|
103
99
|
});
|
|
104
100
|
});
|
|
105
101
|
});
|
|
@@ -112,7 +108,7 @@ describe('Seedtag Adapter', function () {
|
|
|
112
108
|
const isBidRequestValid = spec.isBidRequestValid(
|
|
113
109
|
createSlotConfig({
|
|
114
110
|
adUnitId: ADUNIT_ID,
|
|
115
|
-
placement: '
|
|
111
|
+
placement: 'inBanner',
|
|
116
112
|
})
|
|
117
113
|
);
|
|
118
114
|
expect(isBidRequestValid).to.equal(false);
|
|
@@ -121,7 +117,7 @@ describe('Seedtag Adapter', function () {
|
|
|
121
117
|
const isBidRequestValid = spec.isBidRequestValid(
|
|
122
118
|
createSlotConfig({
|
|
123
119
|
publisherId: PUBLISHER_ID,
|
|
124
|
-
placement: '
|
|
120
|
+
placement: 'inBanner',
|
|
125
121
|
})
|
|
126
122
|
);
|
|
127
123
|
expect(isBidRequestValid).to.equal(false);
|
|
@@ -146,47 +142,41 @@ describe('Seedtag Adapter', function () {
|
|
|
146
142
|
expect(isBidRequestValid).to.equal(false);
|
|
147
143
|
});
|
|
148
144
|
});
|
|
145
|
+
|
|
149
146
|
describe('when video mediaType object is not correct', function () {
|
|
150
|
-
function createVideoSlotconfig(mediaType) {
|
|
151
|
-
return getSlotConfigs(mediaType, {
|
|
152
|
-
publisherId: PUBLISHER_ID,
|
|
153
|
-
adUnitId: ADUNIT_ID,
|
|
154
|
-
placement: 'video',
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
147
|
it('is a void object', function () {
|
|
158
148
|
const isBidRequestValid = spec.isBidRequestValid(
|
|
159
|
-
|
|
149
|
+
createInStreamSlotConfig({ video: {} })
|
|
160
150
|
);
|
|
161
151
|
expect(isBidRequestValid).to.equal(false);
|
|
162
152
|
});
|
|
163
153
|
it('does not have playerSize.', function () {
|
|
164
154
|
const isBidRequestValid = spec.isBidRequestValid(
|
|
165
|
-
|
|
155
|
+
createInStreamSlotConfig({ video: { context: 'instream' } })
|
|
166
156
|
);
|
|
167
157
|
expect(isBidRequestValid).to.equal(false);
|
|
168
158
|
});
|
|
169
159
|
it('is outstream ', function () {
|
|
170
160
|
const isBidRequestValid = spec.isBidRequestValid(
|
|
171
|
-
|
|
161
|
+
createInStreamSlotConfig({
|
|
172
162
|
video: {
|
|
173
163
|
context: 'outstream',
|
|
174
164
|
playerSize: [[600, 200]],
|
|
175
165
|
},
|
|
176
166
|
})
|
|
177
167
|
);
|
|
178
|
-
expect(isBidRequestValid).to.equal(
|
|
168
|
+
expect(isBidRequestValid).to.equal(false);
|
|
179
169
|
});
|
|
180
170
|
describe('order does not matter', function () {
|
|
181
171
|
it('when video is not the first slot', function () {
|
|
182
172
|
const isBidRequestValid = spec.isBidRequestValid(
|
|
183
|
-
|
|
173
|
+
createInStreamSlotConfig({ banner: {}, video: {} })
|
|
184
174
|
);
|
|
185
175
|
expect(isBidRequestValid).to.equal(false);
|
|
186
176
|
});
|
|
187
177
|
it('when video is the first slot', function () {
|
|
188
178
|
const isBidRequestValid = spec.isBidRequestValid(
|
|
189
|
-
|
|
179
|
+
createInStreamSlotConfig({ video: {}, banner: {} })
|
|
190
180
|
);
|
|
191
181
|
expect(isBidRequestValid).to.equal(false);
|
|
192
182
|
});
|
|
@@ -200,21 +190,27 @@ describe('Seedtag Adapter', function () {
|
|
|
200
190
|
refererInfo: { page: 'referer' },
|
|
201
191
|
timeout: 1000,
|
|
202
192
|
};
|
|
203
|
-
const
|
|
193
|
+
const mandatoryDisplayParams = {
|
|
204
194
|
publisherId: PUBLISHER_ID,
|
|
205
195
|
adUnitId: ADUNIT_ID,
|
|
206
|
-
placement: '
|
|
196
|
+
placement: 'inBanner',
|
|
197
|
+
};
|
|
198
|
+
const mandatoryVideoParams = {
|
|
199
|
+
publisherId: PUBLISHER_ID,
|
|
200
|
+
adUnitId: ADUNIT_ID,
|
|
201
|
+
placement: 'inStream',
|
|
207
202
|
};
|
|
208
|
-
const inStreamParams = Object.assign({}, mandatoryParams, {
|
|
209
|
-
video: {
|
|
210
|
-
mimes: 'mp4',
|
|
211
|
-
},
|
|
212
|
-
});
|
|
213
203
|
const validBidRequests = [
|
|
214
|
-
getSlotConfigs({ banner: {} },
|
|
204
|
+
getSlotConfigs({ banner: {} }, mandatoryDisplayParams),
|
|
215
205
|
getSlotConfigs(
|
|
216
|
-
{
|
|
217
|
-
|
|
206
|
+
{
|
|
207
|
+
video: {
|
|
208
|
+
context: 'instream',
|
|
209
|
+
playerSize: [[300, 200]],
|
|
210
|
+
mimes: ['video/mp4'],
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
mandatoryVideoParams
|
|
218
214
|
),
|
|
219
215
|
];
|
|
220
216
|
it('Url params should be correct ', function () {
|
|
@@ -239,26 +235,6 @@ describe('Seedtag Adapter', function () {
|
|
|
239
235
|
expect(data.bidRequests[0].adUnitCode).to.equal('adunit-code');
|
|
240
236
|
});
|
|
241
237
|
|
|
242
|
-
describe('adPosition param', function () {
|
|
243
|
-
it('should sended when publisher set adPosition param', function () {
|
|
244
|
-
const params = Object.assign({}, mandatoryParams, {
|
|
245
|
-
adPosition: 1,
|
|
246
|
-
});
|
|
247
|
-
const validBidRequests = [getSlotConfigs({ banner: {} }, params)];
|
|
248
|
-
const request = spec.buildRequests(validBidRequests, bidderRequest);
|
|
249
|
-
const data = JSON.parse(request.data);
|
|
250
|
-
expect(data.bidRequests[0].adPosition).to.equal(1);
|
|
251
|
-
});
|
|
252
|
-
it('should not sended when publisher has not set adPosition param', function () {
|
|
253
|
-
const validBidRequests = [
|
|
254
|
-
getSlotConfigs({ banner: {} }, mandatoryParams),
|
|
255
|
-
];
|
|
256
|
-
const request = spec.buildRequests(validBidRequests, bidderRequest);
|
|
257
|
-
const data = JSON.parse(request.data);
|
|
258
|
-
expect(data.bidRequests[0].adPosition).to.equal(undefined);
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
|
|
262
238
|
describe('GDPR params', function () {
|
|
263
239
|
describe('when there arent consent management platform', function () {
|
|
264
240
|
it('cmp should be false', function () {
|
|
@@ -310,10 +286,7 @@ describe('Seedtag Adapter', function () {
|
|
|
310
286
|
|
|
311
287
|
bidderRequest['uspConsent'] = uspConsent;
|
|
312
288
|
|
|
313
|
-
const request = spec.buildRequests(
|
|
314
|
-
validBidRequests,
|
|
315
|
-
bidderRequest
|
|
316
|
-
);
|
|
289
|
+
const request = spec.buildRequests(validBidRequests, bidderRequest);
|
|
317
290
|
const payload = JSON.parse(request.data);
|
|
318
291
|
|
|
319
292
|
expect(payload.uspConsent).to.not.exist;
|
|
@@ -347,7 +320,7 @@ describe('Seedtag Adapter', function () {
|
|
|
347
320
|
);
|
|
348
321
|
expect(videoBid.supplyTypes[0]).to.equal('video');
|
|
349
322
|
expect(videoBid.adUnitId).to.equal('000000');
|
|
350
|
-
expect(videoBid.videoParams.mimes).to.
|
|
323
|
+
expect(videoBid.videoParams.mimes).to.eql(['video/mp4']);
|
|
351
324
|
expect(videoBid.videoParams.w).to.equal(300);
|
|
352
325
|
expect(videoBid.videoParams.h).to.equal(200);
|
|
353
326
|
expect(videoBid.sizes[0][0]).to.equal(300);
|
|
@@ -360,27 +333,27 @@ describe('Seedtag Adapter', function () {
|
|
|
360
333
|
|
|
361
334
|
describe('COPPA param', function () {
|
|
362
335
|
it('should add COPPA param to payload when prebid config has parameter COPPA equal to true', function () {
|
|
363
|
-
config.setConfig({ coppa: true })
|
|
336
|
+
config.setConfig({ coppa: true });
|
|
364
337
|
|
|
365
338
|
const request = spec.buildRequests(validBidRequests, bidderRequest);
|
|
366
339
|
const data = JSON.parse(request.data);
|
|
367
340
|
expect(data.coppa).to.equal(true);
|
|
368
|
-
})
|
|
341
|
+
});
|
|
369
342
|
|
|
370
343
|
it('should not add COPPA param to payload when prebid config has parameter COPPA equal to false', function () {
|
|
371
|
-
config.setConfig({ coppa: false })
|
|
344
|
+
config.setConfig({ coppa: false });
|
|
372
345
|
|
|
373
346
|
const request = spec.buildRequests(validBidRequests, bidderRequest);
|
|
374
347
|
const data = JSON.parse(request.data);
|
|
375
348
|
expect(data.coppa).to.be.undefined;
|
|
376
|
-
})
|
|
349
|
+
});
|
|
377
350
|
|
|
378
351
|
it('should not add COPPA param to payload when prebid config has not parameter COPPA', function () {
|
|
379
352
|
const request = spec.buildRequests(validBidRequests, bidderRequest);
|
|
380
353
|
const data = JSON.parse(request.data);
|
|
381
354
|
expect(data.coppa).to.be.undefined;
|
|
382
|
-
})
|
|
383
|
-
})
|
|
355
|
+
});
|
|
356
|
+
});
|
|
384
357
|
describe('schain param', function () {
|
|
385
358
|
it('should add schain to payload when exposed on validBidRequest', function () {
|
|
386
359
|
// https://github.com/prebid/Prebid.js/blob/master/modules/schain.md#sample-code-for-passing-the-schain-object
|
|
@@ -560,11 +533,11 @@ describe('Seedtag Adapter', function () {
|
|
|
560
533
|
const timeoutUrl = getTimeoutUrl(timeoutData);
|
|
561
534
|
expect(timeoutUrl).to.equal(
|
|
562
535
|
'https://s.seedtag.com/se/hb/timeout?publisherToken=' +
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
536
|
+
params.publisherId +
|
|
537
|
+
'&adUnitId=' +
|
|
538
|
+
params.adUnitId +
|
|
539
|
+
'&timeout=' +
|
|
540
|
+
timeout
|
|
568
541
|
);
|
|
569
542
|
});
|
|
570
543
|
|
|
@@ -576,11 +549,11 @@ describe('Seedtag Adapter', function () {
|
|
|
576
549
|
expect(
|
|
577
550
|
utils.triggerPixel.calledWith(
|
|
578
551
|
'https://s.seedtag.com/se/hb/timeout?publisherToken=' +
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
552
|
+
params.publisherId +
|
|
553
|
+
'&adUnitId=' +
|
|
554
|
+
params.adUnitId +
|
|
555
|
+
'&timeout=' +
|
|
556
|
+
timeout
|
|
584
557
|
)
|
|
585
558
|
).to.equal(true);
|
|
586
559
|
});
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import sigmoidAnalytic from 'modules/sigmoidAnalyticsAdapter.js';
|
|
2
|
-
import {
|
|
2
|
+
import {expect} from 'chai';
|
|
3
|
+
import {expectEvents} from '../../helpers/analytics.js';
|
|
4
|
+
|
|
3
5
|
let events = require('src/events');
|
|
4
6
|
let adapterManager = require('src/adapterManager').default;
|
|
5
7
|
let constants = require('src/constants.json');
|
|
@@ -32,13 +34,7 @@ describe('sigmoid Prebid Analytic', function () {
|
|
|
32
34
|
}
|
|
33
35
|
});
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
events.emit(constants.EVENTS.AUCTION_END, {});
|
|
37
|
-
events.emit(constants.EVENTS.BID_REQUESTED, {});
|
|
38
|
-
events.emit(constants.EVENTS.BID_RESPONSE, {});
|
|
39
|
-
events.emit(constants.EVENTS.BID_WON, {});
|
|
40
|
-
|
|
41
|
-
sinon.assert.callCount(sigmoidAnalytic.track, 8);
|
|
37
|
+
expectEvents().to.beTrackedBy(sigmoidAnalytic.track);
|
|
42
38
|
});
|
|
43
39
|
});
|
|
44
40
|
describe('build utm tag data', function () {
|
|
@@ -158,12 +158,44 @@ describe('Smart bid adapter tests', function () {
|
|
|
158
158
|
}
|
|
159
159
|
};
|
|
160
160
|
|
|
161
|
+
var sellerDefinedAudience = [
|
|
162
|
+
{
|
|
163
|
+
'name': 'hearst.com',
|
|
164
|
+
'ext': { 'segtax': 1 },
|
|
165
|
+
'segment': [
|
|
166
|
+
{ 'id': '1001' },
|
|
167
|
+
{ 'id': '1002' }
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
];
|
|
171
|
+
|
|
172
|
+
var sellerDefinedContext = [
|
|
173
|
+
{
|
|
174
|
+
'name': 'cnn.com',
|
|
175
|
+
'ext': { 'segtax': 2 },
|
|
176
|
+
'segment': [
|
|
177
|
+
{ 'id': '2002' }
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
];
|
|
181
|
+
|
|
161
182
|
it('Verify build request', function () {
|
|
162
183
|
config.setConfig({
|
|
163
184
|
'currency': {
|
|
164
185
|
'adServerCurrency': 'EUR'
|
|
186
|
+
},
|
|
187
|
+
ortb2: {
|
|
188
|
+
'user': {
|
|
189
|
+
'data': sellerDefinedAudience
|
|
190
|
+
},
|
|
191
|
+
'site': {
|
|
192
|
+
'content': {
|
|
193
|
+
'data': sellerDefinedContext
|
|
194
|
+
}
|
|
195
|
+
}
|
|
165
196
|
}
|
|
166
197
|
});
|
|
198
|
+
|
|
167
199
|
const request = spec.buildRequests(DEFAULT_PARAMS);
|
|
168
200
|
expect(request[0]).to.have.property('url').and.to.equal('https://prg.smartadserver.com/prebid/v1');
|
|
169
201
|
expect(request[0]).to.have.property('method').and.to.equal('POST');
|
|
@@ -186,6 +218,8 @@ describe('Smart bid adapter tests', function () {
|
|
|
186
218
|
expect(requestContent).to.have.property('buid').and.to.equal('7569');
|
|
187
219
|
expect(requestContent).to.have.property('appname').and.to.equal('Mozilla');
|
|
188
220
|
expect(requestContent).to.have.property('ckid').and.to.equal(42);
|
|
221
|
+
expect(requestContent).to.have.property('sda').and.to.deep.equal(sellerDefinedAudience);
|
|
222
|
+
expect(requestContent).to.have.property('sdc').and.to.deep.equal(sellerDefinedContext);
|
|
189
223
|
});
|
|
190
224
|
|
|
191
225
|
it('Verify parse response with no ad', function () {
|
|
@@ -200,6 +234,27 @@ describe('Smart bid adapter tests', function () {
|
|
|
200
234
|
}).to.not.throw();
|
|
201
235
|
});
|
|
202
236
|
|
|
237
|
+
it('Should not nest response if ad and adUrl empty', () => {
|
|
238
|
+
const BID_RESPONSE_EMPTY = {
|
|
239
|
+
body: {
|
|
240
|
+
ad: null,
|
|
241
|
+
adUrl: null,
|
|
242
|
+
cpm: 0.92,
|
|
243
|
+
isNoAd: false
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
const request = spec.buildRequests(DEFAULT_PARAMS);
|
|
248
|
+
const bids = spec.interpretResponse(BID_RESPONSE_EMPTY, request[0]);
|
|
249
|
+
|
|
250
|
+
expect(bids).to.have.lengthOf(0);
|
|
251
|
+
expect(() => {
|
|
252
|
+
spec.interpretResponse(BID_RESPONSE_EMPTY, {
|
|
253
|
+
data: 'invalid Json'
|
|
254
|
+
});
|
|
255
|
+
}).to.not.throw();
|
|
256
|
+
});
|
|
257
|
+
|
|
203
258
|
it('Verify parse response', function () {
|
|
204
259
|
const request = spec.buildRequests(DEFAULT_PARAMS);
|
|
205
260
|
const bids = spec.interpretResponse(BID_RESPONSE, request[0]);
|
|
@@ -337,6 +392,7 @@ describe('Smart bid adapter tests', function () {
|
|
|
337
392
|
|
|
338
393
|
describe('gdpr tests', function () {
|
|
339
394
|
afterEach(function () {
|
|
395
|
+
config.setConfig({ ortb2: undefined });
|
|
340
396
|
config.resetConfig();
|
|
341
397
|
$$PREBID_GLOBAL$$.requestBids.removeAll();
|
|
342
398
|
});
|
|
@@ -468,6 +524,16 @@ describe('Smart bid adapter tests', function () {
|
|
|
468
524
|
config.setConfig({
|
|
469
525
|
'currency': {
|
|
470
526
|
'adServerCurrency': 'EUR'
|
|
527
|
+
},
|
|
528
|
+
ortb2: {
|
|
529
|
+
'user': {
|
|
530
|
+
'data': sellerDefinedAudience
|
|
531
|
+
},
|
|
532
|
+
'site': {
|
|
533
|
+
'content': {
|
|
534
|
+
'data': sellerDefinedContext
|
|
535
|
+
}
|
|
536
|
+
}
|
|
471
537
|
}
|
|
472
538
|
});
|
|
473
539
|
const request = spec.buildRequests(INSTREAM_DEFAULT_PARAMS);
|
|
@@ -486,6 +552,8 @@ describe('Smart bid adapter tests', function () {
|
|
|
486
552
|
expect(requestContent).to.have.property('buid').and.to.equal('7569');
|
|
487
553
|
expect(requestContent).to.have.property('appname').and.to.equal('Mozilla');
|
|
488
554
|
expect(requestContent).to.have.property('ckid').and.to.equal(42);
|
|
555
|
+
expect(requestContent).to.have.property('sda').and.to.deep.equal(sellerDefinedAudience);
|
|
556
|
+
expect(requestContent).to.have.property('sdc').and.to.deep.equal(sellerDefinedContext);
|
|
489
557
|
expect(requestContent).to.have.property('isVideo').and.to.equal(true);
|
|
490
558
|
expect(requestContent).to.have.property('videoData');
|
|
491
559
|
expect(requestContent.videoData).to.have.property('videoProtocol').and.to.equal(6);
|
|
@@ -727,6 +795,16 @@ describe('Smart bid adapter tests', function () {
|
|
|
727
795
|
config.setConfig({
|
|
728
796
|
'currency': {
|
|
729
797
|
'adServerCurrency': 'EUR'
|
|
798
|
+
},
|
|
799
|
+
ortb2: {
|
|
800
|
+
'user': {
|
|
801
|
+
'data': sellerDefinedAudience
|
|
802
|
+
},
|
|
803
|
+
'site': {
|
|
804
|
+
'content': {
|
|
805
|
+
'data': sellerDefinedContext
|
|
806
|
+
}
|
|
807
|
+
}
|
|
730
808
|
}
|
|
731
809
|
});
|
|
732
810
|
const request = spec.buildRequests(OUTSTREAM_DEFAULT_PARAMS);
|
|
@@ -745,6 +823,8 @@ describe('Smart bid adapter tests', function () {
|
|
|
745
823
|
expect(requestContent).to.have.property('buid').and.to.equal('7579');
|
|
746
824
|
expect(requestContent).to.have.property('appname').and.to.equal('Mozilla');
|
|
747
825
|
expect(requestContent).to.have.property('ckid').and.to.equal(43);
|
|
826
|
+
expect(requestContent).to.have.property('sda').and.to.deep.equal(sellerDefinedAudience);
|
|
827
|
+
expect(requestContent).to.have.property('sdc').and.to.deep.equal(sellerDefinedContext);
|
|
748
828
|
expect(requestContent).to.have.property('isVideo').and.to.equal(false);
|
|
749
829
|
expect(requestContent).to.have.property('videoData');
|
|
750
830
|
expect(requestContent.videoData).to.have.property('videoProtocol').and.to.equal(7);
|
|
@@ -342,6 +342,38 @@ describe('The smartx adapter', function () {
|
|
|
342
342
|
expect(request.data.imp[0].video.minduration).to.equal(3);
|
|
343
343
|
expect(request.data.imp[0].video.maxduration).to.equal(15);
|
|
344
344
|
});
|
|
345
|
+
|
|
346
|
+
it('should pass schain param', function () {
|
|
347
|
+
var request;
|
|
348
|
+
|
|
349
|
+
bid.schain = {
|
|
350
|
+
complete: 1,
|
|
351
|
+
nodes: [
|
|
352
|
+
{
|
|
353
|
+
asi: 'indirectseller.com',
|
|
354
|
+
sid: '00001',
|
|
355
|
+
hp: 1
|
|
356
|
+
}
|
|
357
|
+
]
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
request = spec.buildRequests([bid], bidRequestObj)[0];
|
|
361
|
+
|
|
362
|
+
expect(request.data.source).to.deep.equal({
|
|
363
|
+
ext: {
|
|
364
|
+
schain: {
|
|
365
|
+
complete: 1,
|
|
366
|
+
nodes: [
|
|
367
|
+
{
|
|
368
|
+
asi: 'indirectseller.com',
|
|
369
|
+
sid: '00001',
|
|
370
|
+
hp: 1
|
|
371
|
+
}
|
|
372
|
+
]
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
})
|
|
376
|
+
});
|
|
345
377
|
});
|
|
346
378
|
|
|
347
379
|
describe('interpretResponse', function () {
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import {expect} from 'chai';
|
|
2
|
+
import {spec, ENDPOINT_PROTOCOL, ENDPOINT_DOMAIN, ENDPOINT_PATH} from 'modules/smartytechBidAdapter';
|
|
3
|
+
import {newBidder} from 'src/adapters/bidderFactory.js';
|
|
4
|
+
|
|
5
|
+
const BIDDER_CODE = 'smartytech';
|
|
6
|
+
|
|
7
|
+
describe('SmartyTechDSPAdapter: inherited functions', function () {
|
|
8
|
+
let adapter;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
adapter = newBidder(spec);
|
|
11
|
+
});
|
|
12
|
+
it('exists and is a function', function () {
|
|
13
|
+
expect(adapter.callBids).to.be.exist.and.to.be.a('function');
|
|
14
|
+
});
|
|
15
|
+
it(`bidder code is ${BIDDER_CODE}`, function () {
|
|
16
|
+
expect(spec.code).to.be.equal(BIDDER_CODE);
|
|
17
|
+
})
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
describe('SmartyTechDSPAdapter: isBidRequestValid', function () {
|
|
21
|
+
it('Invalid bid request. Should return false', function () {
|
|
22
|
+
const invalidBidFixture = {
|
|
23
|
+
params: {
|
|
24
|
+
use_id: 13144375
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
expect(spec.isBidRequestValid(invalidBidFixture)).to.be.false
|
|
28
|
+
});
|
|
29
|
+
it('Valid bid request. Should return true', function () {
|
|
30
|
+
const validBidFixture = {
|
|
31
|
+
params: {
|
|
32
|
+
endpointId: 13144375
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
expect(spec.isBidRequestValid(validBidFixture)).to.be.true
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
function mockRandomSizeArray(len) {
|
|
40
|
+
return Array.apply(null, {length: len}).map(i => {
|
|
41
|
+
return [Math.floor(Math.random() * 800), Math.floor(Math.random() * 800)]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function mockBidRequestListData(size) {
|
|
46
|
+
return Array.apply(null, {length: size}).map((i, index) => {
|
|
47
|
+
const id = Math.floor(Math.random() * 800) * (index + 1);
|
|
48
|
+
return {
|
|
49
|
+
adUnitCode: `adUnitCode-${id}`,
|
|
50
|
+
sizes: mockRandomSizeArray(index + 1),
|
|
51
|
+
bidId: `bidId-${id}`,
|
|
52
|
+
params: {
|
|
53
|
+
endpointId: id
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function mockRefererData() {
|
|
60
|
+
return {
|
|
61
|
+
refererInfo: {
|
|
62
|
+
page: 'https://some-test.page'
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function mockResponseData(requestData) {
|
|
68
|
+
let data = {}
|
|
69
|
+
|
|
70
|
+
requestData.data.forEach((request, index) => {
|
|
71
|
+
const sizeArrayIndex = Math.floor(Math.random() * (request.sizes.length - 1));
|
|
72
|
+
const rndIndex = Math.floor(Math.random() * 800);
|
|
73
|
+
|
|
74
|
+
data[request.adUnitCode] = {
|
|
75
|
+
ad: `ad-${rndIndex}`,
|
|
76
|
+
width: request.sizes[sizeArrayIndex][0],
|
|
77
|
+
height: request.sizes[sizeArrayIndex][1],
|
|
78
|
+
creativeId: `creative-id-${index}`,
|
|
79
|
+
cpm: Math.floor(Math.random() * 100),
|
|
80
|
+
currency: `UAH-${rndIndex}`
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
return {
|
|
84
|
+
body: data
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
describe('SmartyTechDSPAdapter: buildRequests', () => {
|
|
89
|
+
let mockBidRequest;
|
|
90
|
+
let mockReferer;
|
|
91
|
+
beforeEach(() => {
|
|
92
|
+
mockBidRequest = mockBidRequestListData(8);
|
|
93
|
+
mockReferer = mockRefererData();
|
|
94
|
+
});
|
|
95
|
+
it('has return data', () => {
|
|
96
|
+
const request = spec.buildRequests(mockBidRequest, mockReferer);
|
|
97
|
+
expect(request).not.null;
|
|
98
|
+
});
|
|
99
|
+
it('correct request URL', () => {
|
|
100
|
+
const request = spec.buildRequests(mockBidRequest, mockReferer);
|
|
101
|
+
expect(request.url).to.be.equal(`${ENDPOINT_PROTOCOL}://${ENDPOINT_DOMAIN}${ENDPOINT_PATH}`)
|
|
102
|
+
});
|
|
103
|
+
it('correct request method', () => {
|
|
104
|
+
const request = spec.buildRequests(mockBidRequest, mockReferer);
|
|
105
|
+
expect(request.method).to.be.equal(`POST`)
|
|
106
|
+
});
|
|
107
|
+
it('correct request data', () => {
|
|
108
|
+
const data = spec.buildRequests(mockBidRequest, mockReferer).data;
|
|
109
|
+
data.forEach((request, index) => {
|
|
110
|
+
expect(request.adUnitCode).to.be.equal(mockBidRequest[index].adUnitCode);
|
|
111
|
+
expect(request.sizes).to.be.equal(mockBidRequest[index].sizes);
|
|
112
|
+
expect(request.bidId).to.be.equal(mockBidRequest[index].bidId);
|
|
113
|
+
expect(request.endpointId).to.be.equal(mockBidRequest[index].params.endpointId);
|
|
114
|
+
expect(request.referer).to.be.equal(mockReferer.refererInfo.page);
|
|
115
|
+
})
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
describe('SmartyTechDSPAdapter: interpretResponse', () => {
|
|
120
|
+
let mockBidRequest;
|
|
121
|
+
let mockReferer;
|
|
122
|
+
let request;
|
|
123
|
+
let mockResponse;
|
|
124
|
+
beforeEach(() => {
|
|
125
|
+
const brData = mockBidRequestListData(2);
|
|
126
|
+
mockReferer = mockRefererData();
|
|
127
|
+
request = spec.buildRequests(brData, mockReferer);
|
|
128
|
+
mockBidRequest = {
|
|
129
|
+
data: brData
|
|
130
|
+
}
|
|
131
|
+
mockResponse = mockResponseData(request);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it('interpretResponse: empty data request', () => {
|
|
135
|
+
delete mockResponse['body']
|
|
136
|
+
const data = spec.interpretResponse(mockResponse, mockBidRequest);
|
|
137
|
+
expect(data.length).to.be.equal(0);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it('interpretResponse: response data and convert data arrays has same length', () => {
|
|
141
|
+
const keys = Object.keys(mockResponse.body);
|
|
142
|
+
const data = spec.interpretResponse(mockResponse, mockBidRequest);
|
|
143
|
+
expect(data.length).to.be.equal(keys.length);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
it('interpretResponse: convert to correct data', () => {
|
|
147
|
+
const keys = Object.keys(mockResponse.body);
|
|
148
|
+
const data = spec.interpretResponse(mockResponse, mockBidRequest);
|
|
149
|
+
|
|
150
|
+
data.forEach((responseItem, index) => {
|
|
151
|
+
expect(responseItem.ad).to.be.equal(mockResponse.body[keys[index]].ad);
|
|
152
|
+
expect(responseItem.cpm).to.be.equal(mockResponse.body[keys[index]].cpm);
|
|
153
|
+
expect(responseItem.creativeId).to.be.equal(mockResponse.body[keys[index]].creativeId);
|
|
154
|
+
expect(responseItem.currency).to.be.equal(mockResponse.body[keys[index]].currency);
|
|
155
|
+
expect(responseItem.netRevenue).to.be.true;
|
|
156
|
+
expect(responseItem.ttl).to.be.equal(60);
|
|
157
|
+
expect(responseItem.requestId).to.be.equal(mockBidRequest.data[index].bidId);
|
|
158
|
+
expect(responseItem.width).to.be.equal(mockResponse.body[keys[index]].width);
|
|
159
|
+
expect(responseItem.height).to.be.equal(mockResponse.body[keys[index]].height);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
});
|