prebid.js 5.17.0 → 6.0.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/.babelrc.js +3 -6
- package/README.md +3 -1
- package/browsers.json +1 -8
- package/integrationExamples/gpt/akamaidap_segments_example.html +132 -0
- package/modules/.submodules.json +1 -0
- package/modules/adfBidAdapter.js +21 -16
- package/modules/adgenerationBidAdapter.js +28 -4
- package/modules/adkernelBidAdapter.js +2 -1
- package/modules/admixerBidAdapter.js +11 -0
- package/modules/adtelligentBidAdapter.js +2 -1
- package/modules/airgridRtdProvider.js +1 -1
- package/modules/akamaiDapRtdProvider.js +474 -0
- package/modules/akamaiDapRtdProvider.md +47 -0
- package/modules/aolBidAdapter.js +2 -1
- package/modules/appnexusBidAdapter.js +5 -3
- package/modules/atsAnalyticsAdapter.js +67 -46
- package/modules/atsAnalyticsAdapter.md +1 -0
- package/modules/betweenBidAdapter.js +20 -3
- package/modules/bliinkBidAdapter.js +58 -32
- package/modules/bliinkBidAdapter.md +29 -6
- package/modules/browsiRtdProvider.js +106 -18
- package/modules/cleanioRtdProvider.js +192 -0
- package/modules/cleanioRtdProvider.md +59 -0
- package/modules/codefuelBidAdapter.js +183 -0
- package/modules/codefuelBidAdapter.md +111 -0
- package/modules/connectIdSystem.js +104 -0
- package/modules/connectIdSystem.md +33 -0
- package/modules/cwireBidAdapter.js +272 -0
- package/modules/cwireBidAdapter.md +43 -0
- package/modules/deepintentBidAdapter.js +106 -9
- package/modules/deepintentBidAdapter.md +36 -1
- package/modules/deltaprojectsBidAdapter.js +252 -0
- package/modules/deltaprojectsBidAdapter.md +32 -0
- package/modules/dgkeywordRtdProvider.js +0 -1
- package/modules/engageyaBidAdapter.js +157 -0
- package/modules/gridBidAdapter.js +1 -0
- package/modules/gumgumBidAdapter.js +8 -0
- package/modules/inskinBidAdapter.js +7 -3
- package/modules/ixBidAdapter.js +8 -1
- package/modules/jixieBidAdapter.js +8 -2
- package/modules/justpremiumBidAdapter.js +6 -1
- package/modules/limelightDigitalBidAdapter.js +22 -2
- package/modules/livewrappedAnalyticsAdapter.js +53 -3
- package/modules/mediakeysBidAdapter.js +2 -1
- package/modules/multibid/index.js +3 -3
- package/modules/nativoBidAdapter.js +6 -2
- package/modules/nextMillenniumBidAdapter.js +12 -3
- package/modules/oguryBidAdapter.js +36 -7
- package/modules/openxBidAdapter.js +34 -22
- package/modules/operaadsBidAdapter.js +21 -1
- package/modules/otmBidAdapter.js +146 -0
- package/modules/otmBidAdapter.md +27 -26
- package/modules/outbrainBidAdapter.js +5 -0
- package/modules/pixfutureBidAdapter.js +24 -4
- package/modules/pixfutureBidAdapter.md +127 -0
- package/modules/playwireBidAdapter.md +61 -0
- package/modules/prebidServerBidAdapter/index.js +1 -1
- package/modules/proxistoreBidAdapter.js +4 -6
- package/modules/publinkIdSystem.js +11 -6
- package/modules/pubmaticBidAdapter.js +9 -0
- package/modules/pubmaticBidAdapter.md +1 -1
- package/modules/rtdModule/index.js +2 -2
- package/modules/sonobiBidAdapter.js +7 -0
- package/modules/sortableBidAdapter.js +1 -0
- package/modules/talkadsBidAdapter.js +129 -0
- package/modules/talkadsBidAdapter.md +60 -0
- package/modules/teadsBidAdapter.js +3 -0
- package/modules/tripleliftBidAdapter.js +22 -5
- package/modules/trustxBidAdapter.js +8 -6
- package/modules/undertoneBidAdapter.js +9 -5
- package/modules/undertoneBidAdapter.md +5 -1
- package/modules/unicornBidAdapter.js +3 -3
- package/modules/userId/eids.js +18 -0
- package/modules/userId/eids.md +7 -0
- package/modules/userId/userId.md +12 -0
- package/modules/ventesBidAdapter.js +370 -0
- package/modules/ventesBidAdapter.md +94 -0
- package/modules/videobyteBidAdapter.js +13 -6
- package/modules/videobyteBidAdapter.md +49 -0
- package/modules/visxBidAdapter.js +15 -22
- package/modules/yahoosspBidAdapter.js +637 -0
- package/modules/yahoosspBidAdapter.md +795 -0
- package/modules/yieldlabBidAdapter.js +48 -3
- package/modules/yieldlabBidAdapter.md +16 -1
- package/modules/yieldmoSyntheticInventoryModule.js +46 -0
- package/modules/yieldmoSyntheticInventoryModule.md +68 -0
- package/package.json +1 -1
- package/src/adapterManager.js +5 -0
- package/src/adapters/bidderFactory.js +4 -3
- package/src/auction.js +11 -11
- package/src/constants.json +1 -0
- package/src/secureCreatives.js +6 -7
- package/src/targeting.js +11 -9
- package/test/spec/modules/adfBidAdapter_spec.js +83 -29
- package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
- package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
- package/test/spec/modules/akamaiDapRtdProvider_spec.js +246 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +2 -1
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +42 -9
- package/test/spec/modules/betweenBidAdapter_spec.js +41 -0
- package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
- package/test/spec/modules/browsiRtdProvider_spec.js +62 -7
- package/test/spec/modules/cleanioRtdProvider_spec.js +188 -0
- package/test/spec/modules/codefuelBidAdapter_spec.js +316 -0
- package/test/spec/modules/connectIdSystem_spec.js +189 -0
- package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
- package/test/spec/modules/deepintentBidAdapter_spec.js +153 -3
- package/test/spec/modules/deltaprojectsBidAdapter_spec.js +399 -0
- package/test/spec/modules/engageyaBidAdapter_spec.js +286 -0
- package/test/spec/modules/gumgumBidAdapter_spec.js +5 -1
- package/test/spec/modules/ixBidAdapter_spec.js +13 -3
- package/test/spec/modules/jixieBidAdapter_spec.js +13 -11
- package/test/spec/modules/justpremiumBidAdapter_spec.js +9 -2
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +155 -1
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +67 -12
- package/test/spec/modules/multibid_spec.js +31 -31
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +13 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +125 -37
- package/test/spec/modules/openxBidAdapter_spec.js +85 -13
- package/test/spec/modules/operaadsBidAdapter_spec.js +38 -6
- package/test/spec/modules/otmBidAdapter_spec.js +67 -0
- package/test/spec/modules/outbrainBidAdapter_spec.js +18 -0
- package/test/spec/modules/publinkIdSystem_spec.js +6 -6
- package/test/spec/modules/pubmaticBidAdapter_spec.js +39 -1
- package/test/spec/modules/sonobiBidAdapter_spec.js +34 -1
- package/test/spec/modules/sortableBidAdapter_spec.js +11 -0
- package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
- package/test/spec/modules/teadsBidAdapter_spec.js +132 -0
- package/test/spec/modules/tripleliftBidAdapter_spec.js +128 -0
- package/test/spec/modules/trustxBidAdapter_spec.js +3 -3
- package/test/spec/modules/undertoneBidAdapter_spec.js +52 -0
- package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
- package/test/spec/modules/ventesBidAdapter_spec.js +845 -0
- package/test/spec/modules/videobyteBidAdapter_spec.js +2 -2
- package/test/spec/modules/visxBidAdapter_spec.js +48 -4
- package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
- package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
- package/test/spec/modules/yieldmoSyntheticInventoryModule_spec.js +89 -0
- package/test/spec/unit/core/adapterManager_spec.js +32 -0
- package/test/spec/unit/core/bidderFactory_spec.js +61 -1
- package/test/spec/unit/pbjs_api_spec.js +37 -2
- package/test/spec/unit/secureCreatives_spec.js +54 -25
- package/wdio.conf.js +1 -1
- package/modules/turktelekomBidAdapter.md +0 -49
- package/yarn.lock +0 -13122
|
@@ -1377,6 +1377,11 @@ describe('IndexexchangeAdapter', function () {
|
|
|
1377
1377
|
expect(requestUrl).to.equal(IX_SECURE_ENDPOINT);
|
|
1378
1378
|
});
|
|
1379
1379
|
|
|
1380
|
+
it('auction type should be set correctly', function () {
|
|
1381
|
+
const at = JSON.parse(query.r).at;
|
|
1382
|
+
expect(at).to.equal(1);
|
|
1383
|
+
})
|
|
1384
|
+
|
|
1380
1385
|
it('query object (version, siteID and request) should be correct', function () {
|
|
1381
1386
|
expect(query.v).to.equal(BANNER_ENDPOINT_VERSION);
|
|
1382
1387
|
expect(query.s).to.equal(DEFAULT_BANNER_VALID_BID[0].params.siteId);
|
|
@@ -1400,16 +1405,16 @@ describe('IndexexchangeAdapter', function () {
|
|
|
1400
1405
|
}
|
|
1401
1406
|
};
|
|
1402
1407
|
const requests = spec.buildRequests(validBids, DEFAULT_OPTION);
|
|
1403
|
-
const { dfp_ad_unit_code } = JSON.parse(requests[0].data.r).imp[0]
|
|
1408
|
+
const { ext: { dfp_ad_unit_code } } = JSON.parse(requests[0].data.r).imp[0];
|
|
1404
1409
|
expect(dfp_ad_unit_code).to.equal(AD_UNIT_CODE);
|
|
1405
1410
|
});
|
|
1406
1411
|
|
|
1407
1412
|
it('should not send dfp_adunit_code in request if ortb2Imp.ext.data.adserver.adslot does not exists', function () {
|
|
1408
1413
|
const validBids = utils.deepClone(DEFAULT_BANNER_VALID_BID);
|
|
1409
1414
|
const requests = spec.buildRequests(validBids, DEFAULT_OPTION);
|
|
1410
|
-
const {
|
|
1415
|
+
const { ext } = JSON.parse(requests[0].data.r).imp[0];
|
|
1411
1416
|
|
|
1412
|
-
expect(
|
|
1417
|
+
expect(ext).to.not.exist;
|
|
1413
1418
|
});
|
|
1414
1419
|
|
|
1415
1420
|
it('payload should have correct format and value', function () {
|
|
@@ -1929,6 +1934,11 @@ describe('IndexexchangeAdapter', function () {
|
|
|
1929
1934
|
expect(query.nf).to.equal(1);
|
|
1930
1935
|
});
|
|
1931
1936
|
|
|
1937
|
+
it('auction type should be set correctly', function () {
|
|
1938
|
+
const at = JSON.parse(query.r).at;
|
|
1939
|
+
expect(at).to.equal(1);
|
|
1940
|
+
})
|
|
1941
|
+
|
|
1932
1942
|
it('impression should have correct format and value', function () {
|
|
1933
1943
|
const impression = JSON.parse(query.r).imp[0];
|
|
1934
1944
|
const sidValue = utils.parseGPTSingleSizeArray(DEFAULT_VIDEO_VALID_BID[0].params.size);
|
|
@@ -9,6 +9,7 @@ describe('jixie Adapter', function () {
|
|
|
9
9
|
const device_ = 'desktop';
|
|
10
10
|
const timeout_ = 1000;
|
|
11
11
|
const currency_ = 'USD';
|
|
12
|
+
const keywords_ = '';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Basic
|
|
@@ -212,7 +213,7 @@ describe('jixie Adapter', function () {
|
|
|
212
213
|
);
|
|
213
214
|
let miscDimsStub = sinon.stub(jixieaux, 'getMiscDims');
|
|
214
215
|
miscDimsStub
|
|
215
|
-
.returns({ device: device_, pageurl: pageurl_, domain: domain_ });
|
|
216
|
+
.returns({ device: device_, pageurl: pageurl_, domain: domain_, mkeywords: keywords_ });
|
|
216
217
|
|
|
217
218
|
// actual api call:
|
|
218
219
|
const request = spec.buildRequests(bidRequests_, bidderRequest_);
|
|
@@ -229,6 +230,7 @@ describe('jixie Adapter', function () {
|
|
|
229
230
|
expect(payload).to.have.property('device', device_);
|
|
230
231
|
expect(payload).to.have.property('domain', domain_);
|
|
231
232
|
expect(payload).to.have.property('pageurl', pageurl_);
|
|
233
|
+
expect(payload).to.have.property('mkeywords', keywords_);
|
|
232
234
|
expect(payload).to.have.property('timeout', timeout_);
|
|
233
235
|
expect(payload).to.have.property('currency', currency_);
|
|
234
236
|
expect(payload).to.have.property('bids').that.deep.equals(refBids_);
|
|
@@ -243,15 +245,15 @@ describe('jixie Adapter', function () {
|
|
|
243
245
|
/**
|
|
244
246
|
* interpretResponse:
|
|
245
247
|
*/
|
|
246
|
-
const JX_OTHER_OUTSTREAM_RENDERER_URL = 'https://scripts.jixie.
|
|
247
|
-
const JX_OUTSTREAM_RENDERER_URL = 'https://scripts.jixie.
|
|
248
|
+
const JX_OTHER_OUTSTREAM_RENDERER_URL = 'https://scripts.jixie.media/dummyscript.js';
|
|
249
|
+
const JX_OUTSTREAM_RENDERER_URL = 'https://scripts.jixie.media/jxhbrenderer.1.1.min.js';
|
|
248
250
|
|
|
249
|
-
const mockVastXml_ = `<?xml version="1.0" encoding="UTF-8"?><VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0"><Ad id="JXAD521"><InLine><AdSystem>JXADSERVER</AdSystem><AdTitle>Alway%20Live%20Prebid%20Creative</AdTitle><Description>Hybrid in-stream</Description><Error><![CDATA[https://demo.com?action=error&errorcode=[ERRORCODE]&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Error><Impression><![CDATA[https://demo.com?action=impression&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Impression><Creatives><Creative id="JXAD521" sequence="1"><Linear><Duration>00:00:10</Duration><TrackingEvents><Tracking event="start"><![CDATA[https://demo.com?action=start&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="firstQuartile"><![CDATA[https://demo.com?action=firstQuartile&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="midpoint"><![CDATA[https://demo.com?action=midpoint&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="thirdQuartile"><![CDATA[https://demo.com?action=thirdQuartile&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="complete"><![CDATA[https://demo.com?action=complete&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="mute"><![CDATA[https://demo.com?action=mute&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="unmute"><![CDATA[https://demo.com?action=unmute&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="rewind"><![CDATA[https://demo.com?action=rewind&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="pause"><![CDATA[https://demo.com?action=pause&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="resume"><![CDATA[https://demo.com?action=resume&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="fullscreen"><![CDATA[https://demo.com?action=fullscreen&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="creativeView"><![CDATA[https://demo.com?action=creativeView&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking></TrackingEvents><VideoClicks><ClickThrough><![CDATA[https://toko-iot.com/search/?q=Sonos&utm_source=ivs&utm_medium=video&utm_campaign=promo&utm_content=sonos_category]]></ClickThrough><ClickTracking id="521"><![CDATA[https://demo.com?action=click&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></ClickTracking></VideoClicks><MediaFiles><MediaFile apiFramework="VPAID" type="application/javascript"><![CDATA[https://creatives.b-cdn.net/js/jxvpaid_1_0.min.js]]></MediaFile></MediaFiles><AdParameters><![CDATA[{"embed":true,"videos":[{"url":"https://creative-ivstream.ivideosmart.com/3001004/954006/3001004-954006_240.mp4","bitrate":186,"mimetype":"video/mp4"},{"url":"https://creative-ivstream.ivideosmart.com/3001004/954006/3001004-954006_360.mp4","bitrate":229,"mimetype":"video/mp4"},{"url":"https://creative-ivstream.ivideosmart.com/3001004/954006/3001004-954006_480.mp4","bitrate":279,"mimetype":"video/mp4"},{"url":"https://creative-ivstream.ivideosmart.com/3001004/954006/3001004-954006_720.mp4","bitrate":325,"mimetype":"video/mp4"}],"countpos":"left","hotspots":[{"type":"direct_url","start":0,"duration":10,"position":"top-right","direct_url":"https://toko-iot.com/catalogue/category/audio_8/?utm_source=ivs&utm_medium=banner&utm_campaign=promo&utm_content=audio_category","thumbnail_url":"https://creatives.ivideosmart.com/hotspots/TokoIOT_1.gif","thumbnail_style":"full-height"}],"clickthru":"https://toko-iot.com/search/?q=Sonos&utm_source=ivs&utm_medium=video&utm_campaign=promo&utm_content=sonos_category","reporting":{},"skipoffset":5}]]></AdParameters><Icons><Icon program="AdChoices" width="20" height="20" xPosition="right" yPosition="top" offset="00:00:02"><StaticResource creativeType="image/png"><![CDATA[https://creatives.jixie.
|
|
251
|
+
const mockVastXml_ = `<?xml version="1.0" encoding="UTF-8"?><VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0"><Ad id="JXAD521"><InLine><AdSystem>JXADSERVER</AdSystem><AdTitle>Alway%20Live%20Prebid%20Creative</AdTitle><Description>Hybrid in-stream</Description><Error><![CDATA[https://demo.com?action=error&errorcode=[ERRORCODE]&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Error><Impression><![CDATA[https://demo.com?action=impression&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Impression><Creatives><Creative id="JXAD521" sequence="1"><Linear><Duration>00:00:10</Duration><TrackingEvents><Tracking event="start"><![CDATA[https://demo.com?action=start&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="firstQuartile"><![CDATA[https://demo.com?action=firstQuartile&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="midpoint"><![CDATA[https://demo.com?action=midpoint&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="thirdQuartile"><![CDATA[https://demo.com?action=thirdQuartile&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="complete"><![CDATA[https://demo.com?action=complete&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="mute"><![CDATA[https://demo.com?action=mute&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="unmute"><![CDATA[https://demo.com?action=unmute&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="rewind"><![CDATA[https://demo.com?action=rewind&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="pause"><![CDATA[https://demo.com?action=pause&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="resume"><![CDATA[https://demo.com?action=resume&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="fullscreen"><![CDATA[https://demo.com?action=fullscreen&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking><Tracking event="creativeView"><![CDATA[https://demo.com?action=creativeView&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></Tracking></TrackingEvents><VideoClicks><ClickThrough><![CDATA[https://toko-iot.com/search/?q=Sonos&utm_source=ivs&utm_medium=video&utm_campaign=promo&utm_content=sonos_category]]></ClickThrough><ClickTracking id="521"><![CDATA[https://demo.com?action=click&mediaurl=[ASSETURI]&abc=1&stackidx=0]]></ClickTracking></VideoClicks><MediaFiles><MediaFile apiFramework="VPAID" type="application/javascript"><![CDATA[https://creatives.b-cdn.net/js/jxvpaid_1_0.min.js]]></MediaFile></MediaFiles><AdParameters><![CDATA[{"embed":true,"videos":[{"url":"https://creative-ivstream.ivideosmart.com/3001004/954006/3001004-954006_240.mp4","bitrate":186,"mimetype":"video/mp4"},{"url":"https://creative-ivstream.ivideosmart.com/3001004/954006/3001004-954006_360.mp4","bitrate":229,"mimetype":"video/mp4"},{"url":"https://creative-ivstream.ivideosmart.com/3001004/954006/3001004-954006_480.mp4","bitrate":279,"mimetype":"video/mp4"},{"url":"https://creative-ivstream.ivideosmart.com/3001004/954006/3001004-954006_720.mp4","bitrate":325,"mimetype":"video/mp4"}],"countpos":"left","hotspots":[{"type":"direct_url","start":0,"duration":10,"position":"top-right","direct_url":"https://toko-iot.com/catalogue/category/audio_8/?utm_source=ivs&utm_medium=banner&utm_campaign=promo&utm_content=audio_category","thumbnail_url":"https://creatives.ivideosmart.com/hotspots/TokoIOT_1.gif","thumbnail_style":"full-height"}],"clickthru":"https://toko-iot.com/search/?q=Sonos&utm_source=ivs&utm_medium=video&utm_campaign=promo&utm_content=sonos_category","reporting":{},"skipoffset":5}]]></AdParameters><Icons><Icon program="AdChoices" width="20" height="20" xPosition="right" yPosition="top" offset="00:00:02"><StaticResource creativeType="image/png"><![CDATA[https://creatives.jixie.media/jxadchoice.png]]></StaticResource><IconClicks><IconClickThrough><![CDATA[https://www.jixie.io/privacy-policy]]></IconClickThrough></IconClicks></Icon></Icons></Linear></Creative><Creative sequence="1"/></Creatives></InLine></Ad></VAST>`;
|
|
250
252
|
const responseBody_ = {
|
|
251
253
|
'bids': [
|
|
252
254
|
// video (vast tag url) returned here
|
|
253
255
|
{
|
|
254
|
-
'trackingUrlBase': 'https://
|
|
256
|
+
'trackingUrlBase': 'https://traid.jixie.io/sync/ad?',
|
|
255
257
|
'jxBidId': '62847e4c696edcb-028d5dee-2c83-44e3-bed1-b75002475cdf',
|
|
256
258
|
'requestId': '62847e4c696edcb',
|
|
257
259
|
'cpm': 2.19,
|
|
@@ -284,7 +286,7 @@ describe('jixie Adapter', function () {
|
|
|
284
286
|
// display ad returned here: This one there is advertiserDomains
|
|
285
287
|
// in the response . Will be checked in the unit tests below
|
|
286
288
|
{
|
|
287
|
-
'trackingUrlBase': 'https://
|
|
289
|
+
'trackingUrlBase': 'https://traid.jixie.io/sync/ad?',
|
|
288
290
|
'jxBidId': '600c9ae6fda1acb-028d5dee-2c83-44e3-bed1-b75002475cdf',
|
|
289
291
|
'requestId': '600c9ae6fda1acb',
|
|
290
292
|
'cpm': 1.999,
|
|
@@ -317,11 +319,11 @@ describe('jixie Adapter', function () {
|
|
|
317
319
|
],
|
|
318
320
|
'mediaType': 'BANNER'
|
|
319
321
|
},
|
|
320
|
-
'ad': '<div id="jxoutstream" style="width: 100%;"> <script type="text/javascript" src="https://scripts.jixie.
|
|
322
|
+
'ad': '<div id="jxoutstream" style="width: 100%;"> <script type="text/javascript" src="https://scripts.jixie.media/jxfriendly.1.3.min.js" defer=""></script> <script> var p ={ responsive: 1, nested: 1, maxwidth: 640, container: "jxoutstream", creativeid: 520}; function jxdefer(p) { if (window.jxuniversal) { window.jxuniversal.init(p); } else { setTimeout(function() { jxdefer(p) }, 100); } } jxdefer(p); </script> </div>'
|
|
321
323
|
},
|
|
322
324
|
// outstream, jx non-default renderer specified:
|
|
323
325
|
{
|
|
324
|
-
'trackingUrlBase': 'https://
|
|
326
|
+
'trackingUrlBase': 'https://traid.jixie.io/sync/ad?',
|
|
325
327
|
'jxBidId': '99bc539c81b00ce-028d5dee-2c83-44e3-bed1-b75002475cdf',
|
|
326
328
|
'requestId': '99bc539c81b00ce',
|
|
327
329
|
'cpm': 2.99,
|
|
@@ -340,7 +342,7 @@ describe('jixie Adapter', function () {
|
|
|
340
342
|
},
|
|
341
343
|
// outstream, jx default renderer:
|
|
342
344
|
{
|
|
343
|
-
'trackingUrlBase': 'https://
|
|
345
|
+
'trackingUrlBase': 'https://traid.jixie.io/sync/ad?',
|
|
344
346
|
'jxBidId': '61bc539c81b00ce-028d5dee-2c83-44e3-bed1-b75002475cdf',
|
|
345
347
|
'requestId': '61bc539c81b00ce',
|
|
346
348
|
'cpm': 1.99,
|
|
@@ -475,7 +477,7 @@ describe('jixie Adapter', function () {
|
|
|
475
477
|
ajaxStub = sinon.stub(jixieaux, 'ajax');
|
|
476
478
|
|
|
477
479
|
miscDimsStub
|
|
478
|
-
.returns({ device: device_, pageurl: pageurl_, domain: domain_ });
|
|
480
|
+
.returns({ device: device_, pageurl: pageurl_, domain: domain_, mkeywords: keywords_ });
|
|
479
481
|
})
|
|
480
482
|
|
|
481
483
|
afterEach(function() {
|
|
@@ -537,7 +539,7 @@ describe('jixie Adapter', function () {
|
|
|
537
539
|
ajaxStub = sinon.stub(jixieaux, 'ajax');
|
|
538
540
|
miscDimsStub = sinon.stub(jixieaux, 'getMiscDims');
|
|
539
541
|
miscDimsStub
|
|
540
|
-
.returns({ device: device_, pageurl: pageurl_, domain: domain_ });
|
|
542
|
+
.returns({ device: device_, pageurl: pageurl_, domain: domain_, mkeywords: keywords_ });
|
|
541
543
|
})
|
|
542
544
|
|
|
543
545
|
afterEach(function() {
|
|
@@ -97,7 +97,7 @@ describe('justpremium adapter', function () {
|
|
|
97
97
|
expect(jpxRequest.id).to.equal(adUnits[0].params.zone)
|
|
98
98
|
expect(jpxRequest.mediaTypes && jpxRequest.mediaTypes.banner && jpxRequest.mediaTypes.banner.sizes).to.not.equal('undefined')
|
|
99
99
|
expect(jpxRequest.version.prebid).to.equal('$prebid.version$')
|
|
100
|
-
expect(jpxRequest.version.jp_adapter).to.equal('1.8')
|
|
100
|
+
expect(jpxRequest.version.jp_adapter).to.equal('1.8.1')
|
|
101
101
|
expect(jpxRequest.pubcid).to.equal('0000000')
|
|
102
102
|
expect(jpxRequest.uids.tdid).to.equal('1111111')
|
|
103
103
|
expect(jpxRequest.uids.id5id.uid).to.equal('2222222')
|
|
@@ -118,7 +118,10 @@ describe('justpremium adapter', function () {
|
|
|
118
118
|
'price': 0.52,
|
|
119
119
|
'format': 'lb',
|
|
120
120
|
'adm': 'creative code',
|
|
121
|
-
'adomain': ['justpremium.com']
|
|
121
|
+
'adomain': ['justpremium.com'],
|
|
122
|
+
'ext': {
|
|
123
|
+
'pg': true
|
|
124
|
+
}
|
|
122
125
|
}]
|
|
123
126
|
},
|
|
124
127
|
'pass': {
|
|
@@ -142,6 +145,9 @@ describe('justpremium adapter', function () {
|
|
|
142
145
|
meta: {
|
|
143
146
|
advertiserDomains: ['justpremium.com']
|
|
144
147
|
},
|
|
148
|
+
adserverTargeting: {
|
|
149
|
+
'hb_deal_justpremium': 'jp_pg'
|
|
150
|
+
}
|
|
145
151
|
}
|
|
146
152
|
]
|
|
147
153
|
|
|
@@ -159,6 +165,7 @@ describe('justpremium adapter', function () {
|
|
|
159
165
|
expect(result[0].netRevenue).to.equal(true)
|
|
160
166
|
expect(result[0].format).to.equal('lb')
|
|
161
167
|
expect(result[0].meta.advertiserDomains[0]).to.equal('justpremium.com')
|
|
168
|
+
expect(result[0].adserverTargeting).to.deep.equal({'hb_deal_justpremium': 'jp_pg'})
|
|
162
169
|
})
|
|
163
170
|
|
|
164
171
|
it('Verify wrong server response', function () {
|
|
@@ -299,6 +299,160 @@ describe('limelightDigitalAdapter', function () {
|
|
|
299
299
|
expect(spec.interpretResponse(bidResponses)).to.deep.equal([ resObject ]);
|
|
300
300
|
});
|
|
301
301
|
});
|
|
302
|
+
describe('getUserSyncs', function () {
|
|
303
|
+
const serverResponses = [
|
|
304
|
+
{
|
|
305
|
+
body: [
|
|
306
|
+
{
|
|
307
|
+
ext: {
|
|
308
|
+
sync: {
|
|
309
|
+
iframe: 'iframeUrl',
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
ext: {
|
|
315
|
+
sync: {
|
|
316
|
+
pixel: 'pixelUrl'
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
{},
|
|
321
|
+
{
|
|
322
|
+
ext: {}
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
ext: {
|
|
326
|
+
sync: {}
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
ext: {
|
|
331
|
+
sync: {
|
|
332
|
+
iframe: 'iframeUrl2',
|
|
333
|
+
pixel: 'pixelUrl3'
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
]
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
body: [
|
|
341
|
+
{
|
|
342
|
+
ext: {
|
|
343
|
+
sync: {
|
|
344
|
+
iframe: 'iframeUrl2',
|
|
345
|
+
pixel: 'pixelUrl2'
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
ext: {
|
|
351
|
+
sync: {
|
|
352
|
+
iframe: 'iframeUrl3',
|
|
353
|
+
pixel: 'pixelUrl3'
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
]
|
|
358
|
+
}
|
|
359
|
+
];
|
|
360
|
+
it('should return empty array if server responses do not contain sync urls', function () {
|
|
361
|
+
const syncOptions = {
|
|
362
|
+
iframeEnabled: true,
|
|
363
|
+
pixelEnabled: true
|
|
364
|
+
};
|
|
365
|
+
const serverResponsesWithoutSyncUrls = serverResponses.map(serverResponse => {
|
|
366
|
+
const serverResponseWithoutSyncUrls = Object.assign({}, serverResponse);
|
|
367
|
+
serverResponseWithoutSyncUrls.body = serverResponse.body.map(serverResponseBody => {
|
|
368
|
+
const serverResponseBodyWithoutSyncUrls = Object.assign({}, serverResponseBody);
|
|
369
|
+
delete serverResponseBodyWithoutSyncUrls.ext;
|
|
370
|
+
return serverResponseBodyWithoutSyncUrls;
|
|
371
|
+
});
|
|
372
|
+
return serverResponseWithoutSyncUrls;
|
|
373
|
+
});
|
|
374
|
+
expect(spec.getUserSyncs(syncOptions, serverResponsesWithoutSyncUrls)).to.be.an('array').that.is.empty;
|
|
375
|
+
});
|
|
376
|
+
it('should return empty array if all sync types are disabled', function () {
|
|
377
|
+
const syncOptions = {
|
|
378
|
+
iframeEnabled: false,
|
|
379
|
+
pixelEnabled: false
|
|
380
|
+
};
|
|
381
|
+
expect(spec.getUserSyncs(syncOptions, serverResponses)).to.be.an('array').that.is.empty;
|
|
382
|
+
});
|
|
383
|
+
it('should return iframe sync urls if iframe sync is enabled', function () {
|
|
384
|
+
const syncOptions = {
|
|
385
|
+
iframeEnabled: true,
|
|
386
|
+
pixelEnabled: false
|
|
387
|
+
};
|
|
388
|
+
expect(spec.getUserSyncs(syncOptions, serverResponses)).to.deep.equal([
|
|
389
|
+
{
|
|
390
|
+
type: 'iframe',
|
|
391
|
+
url: 'iframeUrl'
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
type: 'iframe',
|
|
395
|
+
url: 'iframeUrl2'
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
type: 'iframe',
|
|
399
|
+
url: 'iframeUrl3'
|
|
400
|
+
}
|
|
401
|
+
]);
|
|
402
|
+
});
|
|
403
|
+
it('should return image sync urls if pixel sync is enabled', function () {
|
|
404
|
+
const syncOptions = {
|
|
405
|
+
iframeEnabled: false,
|
|
406
|
+
pixelEnabled: true
|
|
407
|
+
};
|
|
408
|
+
expect(spec.getUserSyncs(syncOptions, serverResponses)).to.deep.equal([
|
|
409
|
+
{
|
|
410
|
+
type: 'image',
|
|
411
|
+
url: 'pixelUrl'
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
type: 'image',
|
|
415
|
+
url: 'pixelUrl3'
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
type: 'image',
|
|
419
|
+
url: 'pixelUrl2'
|
|
420
|
+
}
|
|
421
|
+
]);
|
|
422
|
+
});
|
|
423
|
+
it('should return all sync urls if all sync types are enabled', function () {
|
|
424
|
+
const syncOptions = {
|
|
425
|
+
iframeEnabled: true,
|
|
426
|
+
pixelEnabled: true
|
|
427
|
+
}
|
|
428
|
+
expect(spec.getUserSyncs(syncOptions, serverResponses)).to.deep.equal([
|
|
429
|
+
{
|
|
430
|
+
type: 'iframe',
|
|
431
|
+
url: 'iframeUrl'
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
type: 'iframe',
|
|
435
|
+
url: 'iframeUrl2'
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
type: 'iframe',
|
|
439
|
+
url: 'iframeUrl3'
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
type: 'image',
|
|
443
|
+
url: 'pixelUrl'
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
type: 'image',
|
|
447
|
+
url: 'pixelUrl3'
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
type: 'image',
|
|
451
|
+
url: 'pixelUrl2'
|
|
452
|
+
}
|
|
453
|
+
]);
|
|
454
|
+
});
|
|
455
|
+
});
|
|
302
456
|
});
|
|
303
457
|
|
|
304
458
|
function validateAdUnit(adUnit, bid) {
|
|
@@ -323,5 +477,5 @@ function validateAdUnit(adUnit, bid) {
|
|
|
323
477
|
width: size[0],
|
|
324
478
|
height: size[1]
|
|
325
479
|
}
|
|
326
|
-
}))
|
|
480
|
+
}));
|
|
327
481
|
}
|
|
@@ -2,6 +2,7 @@ import livewrappedAnalyticsAdapter, { BID_WON_TIMEOUT } from 'modules/livewrappe
|
|
|
2
2
|
import CONSTANTS from 'src/constants.json';
|
|
3
3
|
import { config } from 'src/config.js';
|
|
4
4
|
import { server } from 'test/mocks/xhr.js';
|
|
5
|
+
import { setConfig } from 'modules/currency.js';
|
|
5
6
|
|
|
6
7
|
let events = require('src/events');
|
|
7
8
|
let utils = require('src/utils');
|
|
@@ -16,7 +17,8 @@ const {
|
|
|
16
17
|
BIDDER_DONE,
|
|
17
18
|
BID_WON,
|
|
18
19
|
BID_TIMEOUT,
|
|
19
|
-
SET_TARGETING
|
|
20
|
+
SET_TARGETING,
|
|
21
|
+
AD_RENDER_FAILED
|
|
20
22
|
},
|
|
21
23
|
STATUS: {
|
|
22
24
|
GOOD
|
|
@@ -27,6 +29,9 @@ const BID1 = {
|
|
|
27
29
|
width: 980,
|
|
28
30
|
height: 240,
|
|
29
31
|
cpm: 1.1,
|
|
32
|
+
originalCpm: 12.0,
|
|
33
|
+
currency: 'USD',
|
|
34
|
+
originalCurrency: 'FOO',
|
|
30
35
|
timeToRespond: 200,
|
|
31
36
|
bidId: '2ecff0db240757',
|
|
32
37
|
requestId: '2ecff0db240757',
|
|
@@ -42,6 +47,9 @@ const BID2 = Object.assign({}, BID1, {
|
|
|
42
47
|
width: 300,
|
|
43
48
|
height: 250,
|
|
44
49
|
cpm: 2.2,
|
|
50
|
+
originalCpm: 23.0,
|
|
51
|
+
currency: 'USD',
|
|
52
|
+
originalCurrency: 'FOO',
|
|
45
53
|
timeToRespond: 300,
|
|
46
54
|
bidId: '3ecff0db240757',
|
|
47
55
|
requestId: '3ecff0db240757',
|
|
@@ -115,6 +123,14 @@ const MOCK = {
|
|
|
115
123
|
'bidId': '2ecff0db240757',
|
|
116
124
|
'auctionId': '25c6d7f5-699a-4bfc-87c9-996f915341fa'
|
|
117
125
|
}
|
|
126
|
+
],
|
|
127
|
+
AD_RENDER_FAILED: [
|
|
128
|
+
{
|
|
129
|
+
'bidId': '2ecff0db240757',
|
|
130
|
+
'reason': CONSTANTS.AD_RENDER_FAILED_REASON.CANNOT_FIND_AD,
|
|
131
|
+
'message': 'message',
|
|
132
|
+
'bid': BID1
|
|
133
|
+
}
|
|
118
134
|
]
|
|
119
135
|
};
|
|
120
136
|
|
|
@@ -169,6 +185,7 @@ const ANALYTICS_MESSAGE = {
|
|
|
169
185
|
width: 980,
|
|
170
186
|
height: 240,
|
|
171
187
|
cpm: 1.1,
|
|
188
|
+
orgCpm: 120,
|
|
172
189
|
ttr: 200,
|
|
173
190
|
IsBid: true,
|
|
174
191
|
mediaType: 1,
|
|
@@ -183,6 +200,7 @@ const ANALYTICS_MESSAGE = {
|
|
|
183
200
|
width: 300,
|
|
184
201
|
height: 250,
|
|
185
202
|
cpm: 2.2,
|
|
203
|
+
orgCpm: 230,
|
|
186
204
|
ttr: 300,
|
|
187
205
|
IsBid: true,
|
|
188
206
|
mediaType: 1,
|
|
@@ -210,6 +228,7 @@ const ANALYTICS_MESSAGE = {
|
|
|
210
228
|
width: 980,
|
|
211
229
|
height: 240,
|
|
212
230
|
cpm: 1.1,
|
|
231
|
+
orgCpm: 120,
|
|
213
232
|
mediaType: 1,
|
|
214
233
|
gdpr: 0,
|
|
215
234
|
auctionId: 0
|
|
@@ -222,10 +241,22 @@ const ANALYTICS_MESSAGE = {
|
|
|
222
241
|
width: 300,
|
|
223
242
|
height: 250,
|
|
224
243
|
cpm: 2.2,
|
|
244
|
+
orgCpm: 230,
|
|
225
245
|
mediaType: 1,
|
|
226
246
|
gdpr: 0,
|
|
227
247
|
auctionId: 0
|
|
228
248
|
}
|
|
249
|
+
],
|
|
250
|
+
rf: [
|
|
251
|
+
{
|
|
252
|
+
timeStamp: 1519149562216,
|
|
253
|
+
adUnit: 'panorama_d_1',
|
|
254
|
+
adUnitId: 'adunitid',
|
|
255
|
+
bidder: 'livewrapped',
|
|
256
|
+
auctionId: 0,
|
|
257
|
+
rsn: CONSTANTS.AD_RENDER_FAILED_REASON.CANNOT_FIND_AD,
|
|
258
|
+
msg: 'message'
|
|
259
|
+
},
|
|
229
260
|
]
|
|
230
261
|
};
|
|
231
262
|
|
|
@@ -239,6 +270,7 @@ function performStandardAuction() {
|
|
|
239
270
|
events.emit(SET_TARGETING, MOCK.SET_TARGETING);
|
|
240
271
|
events.emit(BID_WON, MOCK.BID_WON[0]);
|
|
241
272
|
events.emit(BID_WON, MOCK.BID_WON[1]);
|
|
273
|
+
events.emit(AD_RENDER_FAILED, MOCK.AD_RENDER_FAILED[0]);
|
|
242
274
|
}
|
|
243
275
|
|
|
244
276
|
describe('Livewrapped analytics adapter', function () {
|
|
@@ -258,6 +290,14 @@ describe('Livewrapped analytics adapter', function () {
|
|
|
258
290
|
sandbox.stub(document, 'getElementById').returns(element);
|
|
259
291
|
|
|
260
292
|
clock = sandbox.useFakeTimers(1519767013781);
|
|
293
|
+
setConfig({
|
|
294
|
+
adServerCurrency: 'USD',
|
|
295
|
+
rates: {
|
|
296
|
+
USD: {
|
|
297
|
+
FOO: 0.1
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
});
|
|
261
301
|
});
|
|
262
302
|
|
|
263
303
|
afterEach(function () {
|
|
@@ -300,7 +340,7 @@ describe('Livewrapped analytics adapter', function () {
|
|
|
300
340
|
expect(message).to.deep.equal(ANALYTICS_MESSAGE);
|
|
301
341
|
});
|
|
302
342
|
|
|
303
|
-
it('should send batched message without BID_WON if necessary and further BID_WON events individually', function () {
|
|
343
|
+
it('should send batched message without BID_WON AND AD_RENDER_FAILED if necessary and further BID_WON and AD_RENDER_FAILED events individually', function () {
|
|
304
344
|
events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
|
|
305
345
|
events.emit(BID_REQUESTED, MOCK.BID_REQUESTED);
|
|
306
346
|
events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[0]);
|
|
@@ -313,8 +353,9 @@ describe('Livewrapped analytics adapter', function () {
|
|
|
313
353
|
clock.tick(BID_WON_TIMEOUT + 1000);
|
|
314
354
|
|
|
315
355
|
events.emit(BID_WON, MOCK.BID_WON[1]);
|
|
356
|
+
events.emit(AD_RENDER_FAILED, MOCK.AD_RENDER_FAILED[0]);
|
|
316
357
|
|
|
317
|
-
expect(server.requests.length).to.equal(
|
|
358
|
+
expect(server.requests.length).to.equal(3);
|
|
318
359
|
|
|
319
360
|
let message = JSON.parse(server.requests[0].requestBody);
|
|
320
361
|
expect(message.wins.length).to.equal(1);
|
|
@@ -324,6 +365,10 @@ describe('Livewrapped analytics adapter', function () {
|
|
|
324
365
|
message = JSON.parse(server.requests[1].requestBody);
|
|
325
366
|
expect(message.wins.length).to.equal(1);
|
|
326
367
|
expect(message.wins[0]).to.deep.equal(ANALYTICS_MESSAGE.wins[1]);
|
|
368
|
+
|
|
369
|
+
message = JSON.parse(server.requests[2].requestBody);
|
|
370
|
+
expect(message.rf.length).to.equal(1);
|
|
371
|
+
expect(message.rf[0]).to.deep.equal(ANALYTICS_MESSAGE.rf[0]);
|
|
327
372
|
});
|
|
328
373
|
|
|
329
374
|
it('should properly mark bids as timed out', function () {
|
|
@@ -416,18 +461,28 @@ describe('Livewrapped analytics adapter', function () {
|
|
|
416
461
|
{
|
|
417
462
|
'bidder': 'livewrapped',
|
|
418
463
|
'adUnitCode': 'panorama_d_1',
|
|
419
|
-
'bidId': '2ecff0db240757'
|
|
420
|
-
'floorData': {
|
|
421
|
-
'floorValue': 1.1,
|
|
422
|
-
'floorCurrency': 'SEK'
|
|
423
|
-
}
|
|
464
|
+
'bidId': '2ecff0db240757'
|
|
424
465
|
}
|
|
425
466
|
],
|
|
426
467
|
'start': 1519149562216
|
|
427
468
|
});
|
|
428
469
|
|
|
429
|
-
events.emit(BID_RESPONSE,
|
|
430
|
-
|
|
470
|
+
events.emit(BID_RESPONSE, Object.assign({},
|
|
471
|
+
MOCK.BID_RESPONSE[0],
|
|
472
|
+
{
|
|
473
|
+
'floorData': {
|
|
474
|
+
'floorValue': 1.1,
|
|
475
|
+
'floorCurrency': 'FOO'
|
|
476
|
+
}
|
|
477
|
+
}));
|
|
478
|
+
events.emit(BID_WON, Object.assign({},
|
|
479
|
+
MOCK.BID_WON[0],
|
|
480
|
+
{
|
|
481
|
+
'floorData': {
|
|
482
|
+
'floorValue': 1.1,
|
|
483
|
+
'floorCurrency': 'FOO'
|
|
484
|
+
}
|
|
485
|
+
}));
|
|
431
486
|
events.emit(AUCTION_END, MOCK.AUCTION_END);
|
|
432
487
|
|
|
433
488
|
clock.tick(BID_WON_TIMEOUT + 1000);
|
|
@@ -440,11 +495,11 @@ describe('Livewrapped analytics adapter', function () {
|
|
|
440
495
|
|
|
441
496
|
expect(message.responses.length).to.equal(1);
|
|
442
497
|
expect(message.responses[0].floor).to.equal(1.1);
|
|
443
|
-
expect(message.responses[0].floorCur).to.equal('
|
|
498
|
+
expect(message.responses[0].floorCur).to.equal('FOO');
|
|
444
499
|
|
|
445
500
|
expect(message.wins.length).to.equal(1);
|
|
446
501
|
expect(message.wins[0].floor).to.equal(1.1);
|
|
447
|
-
expect(message.wins[0].floorCur).to.equal('
|
|
502
|
+
expect(message.wins[0].floorCur).to.equal('FOO');
|
|
448
503
|
});
|
|
449
504
|
|
|
450
505
|
it('should forward Livewrapped floor data', function () {
|