prebid.js 5.14.0 → 5.18.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.
Files changed (397) hide show
  1. package/.devcontainer/Dockerfile +11 -0
  2. package/.devcontainer/devcontainer.json +27 -0
  3. package/.devcontainer/postCreate.sh +6 -0
  4. package/allowedModules.js +2 -1
  5. package/integrationExamples/gpt/afpExample.html +242 -0
  6. package/integrationExamples/gpt/afpGamExample.html +152 -0
  7. package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
  8. package/modules/.submodules.json +29 -27
  9. package/modules/33acrossBidAdapter.js +23 -20
  10. package/modules/a4gBidAdapter.js +3 -3
  11. package/modules/ablidaBidAdapter.js +2 -2
  12. package/modules/adWMGBidAdapter.js +4 -4
  13. package/modules/adagioAnalyticsAdapter.js +4 -4
  14. package/modules/adagioBidAdapter.js +85 -82
  15. package/modules/adbookpspBidAdapter.js +56 -54
  16. package/modules/adfBidAdapter.js +24 -16
  17. package/modules/adgenerationBidAdapter.js +42 -18
  18. package/modules/adhashBidAdapter.js +105 -0
  19. package/modules/adhashBidAdapter.md +1 -1
  20. package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
  21. package/modules/adkernelAdnBidAdapter.js +23 -23
  22. package/modules/adkernelBidAdapter.js +49 -44
  23. package/modules/adlooxAdServerVideo.js +26 -26
  24. package/modules/adlooxAnalyticsAdapter.js +38 -35
  25. package/modules/adlooxRtdProvider.js +49 -46
  26. package/modules/admanBidAdapter.js +4 -4
  27. package/modules/admixerBidAdapter.js +13 -2
  28. package/modules/admixerIdSystem.js +4 -4
  29. package/modules/adnowBidAdapter.js +4 -4
  30. package/modules/adnuntiusBidAdapter.js +6 -5
  31. package/modules/adoceanBidAdapter.js +10 -10
  32. package/modules/adpartnerBidAdapter.js +3 -3
  33. package/modules/adpod.js +45 -42
  34. package/modules/adprimeBidAdapter.js +4 -4
  35. package/modules/adqueryBidAdapter.js +204 -0
  36. package/modules/adqueryBidAdapter.md +32 -0
  37. package/modules/adrelevantisBidAdapter.js +30 -27
  38. package/modules/adriverBidAdapter.js +13 -13
  39. package/modules/adtargetBidAdapter.js +24 -24
  40. package/modules/adtelligentBidAdapter.js +29 -29
  41. package/modules/adtrueBidAdapter.js +35 -35
  42. package/modules/aduptechBidAdapter.js +10 -10
  43. package/modules/advangelistsBidAdapter.js +14 -14
  44. package/modules/adxcgAnalyticsAdapter.js +5 -5
  45. package/modules/adxcgBidAdapter.js +56 -56
  46. package/modules/adxpremiumAnalyticsAdapter.js +17 -17
  47. package/modules/adyoulikeBidAdapter.js +11 -11
  48. package/modules/afpBidAdapter.js +166 -0
  49. package/modules/afpBidAdapter.md +348 -0
  50. package/modules/ajaBidAdapter.js +12 -12
  51. package/modules/akamaiDAPIdSystem.js +9 -9
  52. package/modules/aniviewBidAdapter.js +2 -2
  53. package/modules/aolBidAdapter.js +15 -14
  54. package/modules/apacdexBidAdapter.js +16 -16
  55. package/modules/appnexusBidAdapter.js +59 -59
  56. package/modules/apstreamBidAdapter.js +5 -5
  57. package/modules/asoBidAdapter.js +30 -30
  58. package/modules/astraoneBidAdapter.js +2 -2
  59. package/modules/atsAnalyticsAdapter.js +35 -30
  60. package/modules/audiencerunBidAdapter.js +15 -15
  61. package/modules/automatadBidAdapter.js +2 -2
  62. package/modules/axonixBidAdapter.js +7 -7
  63. package/modules/beachfrontBidAdapter.js +23 -23
  64. package/modules/beopBidAdapter.js +22 -22
  65. package/modules/bidViewabilityIO.js +7 -7
  66. package/modules/bidglassBidAdapter.js +8 -8
  67. package/modules/bidscubeBidAdapter.js +3 -3
  68. package/modules/bizzclickBidAdapter.js +10 -10
  69. package/modules/bliinkBidAdapter.js +58 -32
  70. package/modules/bliinkBidAdapter.md +29 -6
  71. package/modules/bluebillywigBidAdapter.js +30 -30
  72. package/modules/boldwinBidAdapter.js +4 -4
  73. package/modules/braveBidAdapter.js +5 -5
  74. package/modules/bridgewellBidAdapter.js +5 -5
  75. package/modules/brightMountainMediaBidAdapter.js +10 -10
  76. package/modules/brightcomBidAdapter.js +18 -18
  77. package/modules/britepoolIdSystem.js +7 -7
  78. package/modules/browsiRtdProvider.js +8 -8
  79. package/modules/bucksenseBidAdapter.js +9 -9
  80. package/modules/buzzoolaBidAdapter.js +4 -4
  81. package/modules/byDataAnalyticsAdapter.js +12 -12
  82. package/modules/ccxBidAdapter.js +38 -38
  83. package/modules/cleanmedianetBidAdapter.js +9 -9
  84. package/modules/clickforceBidAdapter.js +4 -4
  85. package/modules/cointrafficBidAdapter.js +4 -4
  86. package/modules/coinzillaBidAdapter.js +2 -2
  87. package/modules/colossussspBidAdapter.js +7 -3
  88. package/modules/concertAnalyticsAdapter.js +3 -3
  89. package/modules/concertBidAdapter.js +16 -17
  90. package/modules/connectadBidAdapter.js +13 -13
  91. package/modules/consentManagement.js +29 -28
  92. package/modules/consentManagementUsp.js +14 -14
  93. package/modules/consumableBidAdapter.js +3 -3
  94. package/modules/contentexchangeBidAdapter.js +5 -5
  95. package/modules/conversantBidAdapter.js +32 -31
  96. package/modules/cpmstarBidAdapter.js +8 -9
  97. package/modules/craftBidAdapter.js +10 -10
  98. package/modules/criteoBidAdapter.js +16 -16
  99. package/modules/criteoIdSystem.js +5 -5
  100. package/modules/currency.js +18 -18
  101. package/modules/cwireBidAdapter.js +272 -0
  102. package/modules/cwireBidAdapter.md +43 -0
  103. package/modules/datablocksBidAdapter.js +12 -12
  104. package/modules/deepintentBidAdapter.js +13 -13
  105. package/modules/dgkeywordRtdProvider.js +10 -11
  106. package/modules/districtmDMXBidAdapter.js +15 -15
  107. package/modules/dmdIdSystem.js +5 -5
  108. package/modules/docereeBidAdapter.js +9 -9
  109. package/modules/dspxBidAdapter.js +5 -5
  110. package/modules/ebdrBidAdapter.js +9 -9
  111. package/modules/emx_digitalBidAdapter.js +23 -23
  112. package/modules/enrichmentFpdModule.js +10 -9
  113. package/modules/eplanningAnalyticsAdapter.js +2 -2
  114. package/modules/eplanningBidAdapter.js +10 -10
  115. package/modules/etargetBidAdapter.js +4 -4
  116. package/modules/express.js +9 -10
  117. package/modules/fabrickIdSystem.js +6 -6
  118. package/modules/feedadBidAdapter.js +5 -5
  119. package/modules/fintezaAnalyticsAdapter.js +4 -4
  120. package/modules/flocIdSystem.js +5 -5
  121. package/modules/fluctBidAdapter.js +6 -5
  122. package/modules/freewheel-sspBidAdapter.js +6 -6
  123. package/modules/gamoshiBidAdapter.js +22 -22
  124. package/modules/gdprEnforcement.js +13 -14
  125. package/modules/getintentBidAdapter.js +3 -4
  126. package/modules/glimpseBidAdapter.js +160 -48
  127. package/modules/glimpseBidAdapter.md +11 -74
  128. package/modules/gmosspBidAdapter.js +17 -17
  129. package/modules/gnetBidAdapter.js +5 -5
  130. package/modules/googleAnalyticsAdapter.js +6 -6
  131. package/modules/gothamadsBidAdapter.js +9 -9
  132. package/modules/gptPreAuction.js +7 -7
  133. package/modules/gridBidAdapter.js +15 -16
  134. package/modules/gridNMBidAdapter.js +214 -63
  135. package/modules/growadvertisingBidAdapter.js +7 -8
  136. package/modules/gumgumBidAdapter.js +19 -13
  137. package/modules/h12mediaBidAdapter.js +12 -12
  138. package/modules/haloIdSystem.js +8 -8
  139. package/modules/hybridBidAdapter.js +7 -7
  140. package/modules/iasRtdProvider.js +79 -63
  141. package/modules/id5IdSystem.js +24 -24
  142. package/modules/idImportLibrary.js +35 -35
  143. package/modules/idxIdSystem.js +3 -3
  144. package/modules/impactifyBidAdapter.js +10 -10
  145. package/modules/improvedigitalBidAdapter.js +36 -36
  146. package/modules/imuIdSystem.js +6 -6
  147. package/modules/inmarBidAdapter.js +2 -2
  148. package/modules/innityBidAdapter.js +3 -3
  149. package/modules/inskinBidAdapter.js +14 -2
  150. package/modules/inskinBidAdapter.md +5 -4
  151. package/modules/instreamTracking.js +5 -5
  152. package/modules/integr8BidAdapter.js +4 -4
  153. package/modules/intentIqIdSystem.js +7 -7
  154. package/modules/interactiveOffersBidAdapter.js +5 -5
  155. package/modules/invibesBidAdapter.js +53 -19
  156. package/modules/invisiblyAnalyticsAdapter.js +5 -5
  157. package/modules/iqmBidAdapter.js +19 -19
  158. package/modules/iqzoneBidAdapter.js +5 -5
  159. package/modules/ixBidAdapter.js +73 -73
  160. package/modules/jixieBidAdapter.js +6 -6
  161. package/modules/justpremiumBidAdapter.js +5 -1
  162. package/modules/kargoBidAdapter.js +16 -9
  163. package/modules/kargoBidAdapter.md +20 -0
  164. package/modules/kinessoIdSystem.js +8 -8
  165. package/modules/koblerBidAdapter.js +12 -12
  166. package/modules/konduitAnalyticsAdapter.js +4 -4
  167. package/modules/konduitWrapper.js +14 -14
  168. package/modules/krushmediaBidAdapter.js +4 -4
  169. package/modules/kubientBidAdapter.js +5 -5
  170. package/modules/limelightDigitalBidAdapter.js +4 -4
  171. package/modules/liveIntentIdSystem.js +4 -5
  172. package/modules/livewrappedAnalyticsAdapter.js +27 -15
  173. package/modules/livewrappedBidAdapter.js +7 -7
  174. package/modules/liveyieldAnalyticsAdapter.js +13 -13
  175. package/modules/lockerdomeBidAdapter.js +2 -2
  176. package/modules/loganBidAdapter.js +4 -4
  177. package/modules/lotamePanoramaIdSystem.js +13 -13
  178. package/modules/lunamediahbBidAdapter.js +2 -2
  179. package/modules/madvertiseBidAdapter.js +3 -3
  180. package/modules/marsmediaBidAdapter.js +26 -26
  181. package/modules/mathildeadsBidAdapter.js +5 -5
  182. package/modules/mediaforceBidAdapter.js +11 -11
  183. package/modules/mediakeysBidAdapter.js +444 -53
  184. package/modules/mediakeysBidAdapter.md +108 -0
  185. package/modules/medianetAnalyticsAdapter.js +48 -125
  186. package/modules/medianetBidAdapter.js +38 -33
  187. package/modules/medianetRtdProvider.js +7 -7
  188. package/modules/merkleIdSystem.js +19 -19
  189. package/modules/mgidBidAdapter.js +50 -50
  190. package/modules/microadBidAdapter.js +3 -3
  191. package/modules/multibid/index.js +15 -13
  192. package/modules/mwOpenLinkIdSystem.js +7 -7
  193. package/modules/mytargetBidAdapter.js +112 -0
  194. package/modules/nativoBidAdapter.js +46 -31
  195. package/modules/nativoBidAdapter.md +0 -1
  196. package/modules/naveggIdSystem.js +3 -3
  197. package/modules/nextMillenniumBidAdapter.js +6 -6
  198. package/modules/nextrollBidAdapter.js +375 -0
  199. package/modules/nobidBidAdapter.js +12 -11
  200. package/modules/novatiqIdSystem.js +8 -8
  201. package/modules/oguryBidAdapter.js +22 -6
  202. package/modules/oneVideoBidAdapter.js +20 -20
  203. package/modules/onomagicBidAdapter.js +16 -16
  204. package/modules/ooloAnalyticsAdapter.js +13 -13
  205. package/modules/openwebBidAdapter.js +26 -26
  206. package/modules/openxAnalyticsAdapter.js +33 -33
  207. package/modules/openxBidAdapter.js +29 -29
  208. package/modules/operaadsBidAdapter.js +53 -53
  209. package/modules/optimeraRtdProvider.js +9 -9
  210. package/modules/optoutBidAdapter.js +3 -3
  211. package/modules/orbidderBidAdapter.js +3 -3
  212. package/modules/outbrainBidAdapter.js +13 -13
  213. package/modules/ozoneBidAdapter.js +131 -131
  214. package/modules/padsquadBidAdapter.js +4 -4
  215. package/modules/parrableIdSystem.js +17 -17
  216. package/modules/pixfutureBidAdapter.js +45 -25
  217. package/modules/pixfutureBidAdapter.md +127 -0
  218. package/modules/prebidServerBidAdapter/index.js +109 -105
  219. package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
  220. package/modules/priceFloors.js +47 -47
  221. package/modules/proxistoreBidAdapter.js +6 -8
  222. package/modules/pubCommonId.js +11 -11
  223. package/modules/pubProvidedIdSystem.js +3 -3
  224. package/modules/publinkIdSystem.js +23 -7
  225. package/modules/publinkIdSystem.md +7 -2
  226. package/modules/pubmaticAnalyticsAdapter.js +16 -16
  227. package/modules/pubmaticBidAdapter.js +109 -93
  228. package/modules/pubmaticBidAdapter.md +1 -1
  229. package/modules/pubperfAnalyticsAdapter.js +3 -3
  230. package/modules/pubwiseAnalyticsAdapter.js +6 -6
  231. package/modules/pubwiseBidAdapter.js +23 -23
  232. package/modules/pubxBidAdapter.js +2 -2
  233. package/modules/pubxaiAnalyticsAdapter.js +7 -7
  234. package/modules/pulsepointBidAdapter.js +13 -13
  235. package/modules/pxyzBidAdapter.js +7 -7
  236. package/modules/quantcastBidAdapter.js +16 -16
  237. package/modules/radsBidAdapter.js +5 -5
  238. package/modules/realvuAnalyticsAdapter.js +5 -7
  239. package/modules/reconciliationRtdProvider.js +6 -6
  240. package/modules/relaidoBidAdapter.js +44 -38
  241. package/modules/resetdigitalBidAdapter.js +3 -4
  242. package/modules/revcontentBidAdapter.js +9 -9
  243. package/modules/rhythmoneBidAdapter.js +17 -16
  244. package/modules/richaudienceBidAdapter.js +9 -9
  245. package/modules/riseBidAdapter.js +26 -26
  246. package/modules/riseBidAdapter.md +1 -3
  247. package/modules/roxotAnalyticsAdapter.js +14 -14
  248. package/modules/rtbhouseBidAdapter.js +7 -7
  249. package/modules/rtbsapeBidAdapter.js +3 -4
  250. package/modules/rtdModule/index.js +3 -3
  251. package/modules/rubiconAnalyticsAdapter.js +82 -82
  252. package/modules/rubiconBidAdapter.js +72 -68
  253. package/modules/scaleableAnalyticsAdapter.js +2 -2
  254. package/modules/seedingAllianceBidAdapter.js +231 -0
  255. package/modules/seedtagBidAdapter.js +10 -10
  256. package/modules/sharedIdSystem.js +11 -11
  257. package/modules/sharethroughAnalyticsAdapter.js +8 -8
  258. package/modules/sharethroughBidAdapter.js +20 -27
  259. package/modules/showheroes-bsBidAdapter.js +23 -23
  260. package/modules/sigmoidAnalyticsAdapter.js +4 -5
  261. package/modules/sirdataRtdProvider.js +34 -34
  262. package/modules/sizeMappingV2.js +39 -39
  263. package/modules/slimcutBidAdapter.js +121 -0
  264. package/modules/smaatoBidAdapter.js +44 -44
  265. package/modules/smartadserverBidAdapter.js +7 -7
  266. package/modules/smartxBidAdapter.js +72 -72
  267. package/modules/smartyadsBidAdapter.js +2 -2
  268. package/modules/smilewantedBidAdapter.js +6 -6
  269. package/modules/sonobiAnalyticsAdapter.js +23 -23
  270. package/modules/sortableAnalyticsAdapter.js +5 -5
  271. package/modules/sortableBidAdapter.js +28 -28
  272. package/modules/sovrnAnalyticsAdapter.js +5 -5
  273. package/modules/sovrnBidAdapter.js +22 -22
  274. package/modules/spotxBidAdapter.js +97 -83
  275. package/modules/sspBCBidAdapter.js +216 -21
  276. package/modules/sspBCBidAdapter.md +1 -1
  277. package/modules/staqAnalyticsAdapter.js +9 -9
  278. package/modules/stroeerCoreBidAdapter.js +16 -16
  279. package/modules/sublimeBidAdapter.js +6 -6
  280. package/modules/talkadsBidAdapter.js +129 -0
  281. package/modules/talkadsBidAdapter.md +60 -0
  282. package/modules/tapadIdSystem.js +3 -3
  283. package/modules/tappxBidAdapter.js +63 -64
  284. package/modules/teadsBidAdapter.js +20 -20
  285. package/modules/telariaBidAdapter.js +17 -17
  286. package/modules/temedyaBidAdapter.js +4 -4
  287. package/modules/terceptAnalyticsAdapter.js +4 -4
  288. package/modules/theAdxBidAdapter.js +16 -16
  289. package/modules/timeoutRtdProvider.js +15 -15
  290. package/modules/tpmnBidAdapter.js +3 -3
  291. package/modules/trionBidAdapter.js +15 -15
  292. package/modules/tripleliftBidAdapter.js +27 -24
  293. package/modules/truereachBidAdapter.js +4 -4
  294. package/modules/trustxBidAdapter.js +22 -18
  295. package/modules/ucfunnelBidAdapter.js +3 -3
  296. package/modules/uid2IdSystem.js +6 -6
  297. package/modules/underdogmediaBidAdapter.js +4 -4
  298. package/modules/unicornBidAdapter.js +15 -15
  299. package/modules/unifiedIdSystem.js +4 -4
  300. package/modules/unrulyBidAdapter.js +16 -16
  301. package/modules/userId/eids.js +9 -9
  302. package/modules/userId/index.js +37 -35
  303. package/modules/validationFpdModule/index.js +15 -15
  304. package/modules/vdoaiBidAdapter.js +2 -2
  305. package/modules/verizonMediaIdSystem.js +5 -5
  306. package/modules/vidazooBidAdapter.js +5 -5
  307. package/modules/videobyteBidAdapter.js +24 -24
  308. package/modules/videoreachBidAdapter.js +7 -7
  309. package/modules/vidoomyBidAdapter.js +105 -22
  310. package/modules/viewdeosDXBidAdapter.js +17 -17
  311. package/modules/visxBidAdapter.js +21 -29
  312. package/modules/voxBidAdapter.js +7 -7
  313. package/modules/vuukleBidAdapter.js +2 -2
  314. package/modules/waardexBidAdapter.js +26 -26
  315. package/modules/weboramaRtdProvider.js +174 -0
  316. package/modules/weboramaRtdProvider.md +70 -0
  317. package/modules/winrBidAdapter.js +27 -27
  318. package/modules/wipesBidAdapter.js +2 -2
  319. package/modules/yahoosspBidAdapter.js +637 -0
  320. package/modules/yahoosspBidAdapter.md +795 -0
  321. package/modules/yieldlabBidAdapter.js +57 -12
  322. package/modules/yieldlabBidAdapter.md +16 -1
  323. package/modules/yieldliftBidAdapter.js +9 -9
  324. package/modules/yieldmoBidAdapter.js +64 -50
  325. package/modules/yieldoneAnalyticsAdapter.js +6 -6
  326. package/modules/yieldoneBidAdapter.js +11 -11
  327. package/modules/yuktamediaAnalyticsAdapter.js +15 -15
  328. package/modules/zeotapIdPlusIdSystem.js +2 -2
  329. package/modules/zetaBidAdapter.js +6 -6
  330. package/modules/zeta_global_sspBidAdapter.js +14 -14
  331. package/package.json +1 -1
  332. package/src/AnalyticsAdapter.js +6 -6
  333. package/src/Renderer.js +10 -8
  334. package/src/adapterManager.js +45 -42
  335. package/src/adloader.js +6 -6
  336. package/src/ajax.js +8 -9
  337. package/src/auction.js +26 -23
  338. package/src/bidfactory.js +2 -2
  339. package/src/config.js +52 -50
  340. package/src/cpmBucketManager.js +2 -2
  341. package/src/prebid.js +85 -81
  342. package/src/storageManager.js +5 -5
  343. package/src/targeting.js +25 -26
  344. package/src/userSync.js +35 -22
  345. package/src/videoCache.js +2 -2
  346. package/test/.eslintrc.js +2 -1
  347. package/test/spec/modules/adfBidAdapter_spec.js +55 -0
  348. package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
  349. package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
  350. package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
  351. package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
  352. package/test/spec/modules/afpBidAdapter_spec.js +306 -0
  353. package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
  354. package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
  355. package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
  356. package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
  357. package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
  358. package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
  359. package/test/spec/modules/gridBidAdapter_spec.js +38 -2
  360. package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
  361. package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
  362. package/test/spec/modules/iasRtdProvider_spec.js +71 -6
  363. package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
  364. package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
  365. package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
  366. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
  367. package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
  368. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
  369. package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
  370. package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
  371. package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
  372. package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
  373. package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
  374. package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
  375. package/test/spec/modules/publinkIdSystem_spec.js +42 -12
  376. package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
  377. package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
  378. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
  379. package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
  380. package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
  381. package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
  382. package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
  383. package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
  384. package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
  385. package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
  386. package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
  387. package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
  388. package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
  389. package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
  390. package/test/spec/modules/visxBidAdapter_spec.js +48 -4
  391. package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
  392. package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
  393. package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
  394. package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
  395. package/test/spec/unit/pbjs_api_spec.js +4 -0
  396. package/test/spec/userSync_spec.js +30 -2
  397. package/modules/turktelekomBidAdapter.md +0 -49
@@ -0,0 +1,185 @@
1
+ import { expect } from 'chai'
2
+ import { spec } from 'modules/adqueryBidAdapter.js'
3
+ import { newBidder } from 'src/adapters/bidderFactory.js'
4
+ import * as utils from '../../../src/utils';
5
+
6
+ describe('adqueryBidAdapter', function () {
7
+ const adapter = newBidder(spec)
8
+ let bidRequest = {
9
+ bidder: 'adquery',
10
+ params: {
11
+ placementId: '6d93f2a0e5f0fe2cc3a6e9e3ade964b43b07f897',
12
+ type: 'banner300x250'
13
+ },
14
+ mediaTypes: {
15
+ banner: {
16
+ sizes: [[300, 250]],
17
+ }
18
+ }
19
+ }
20
+
21
+ let expectedResponse = {
22
+ 'body': {
23
+ 'data':
24
+ {
25
+ 'requestId': 1,
26
+ 'emission_id': 1,
27
+ 'eventTracker': 'https://example.com',
28
+ 'externalEmissionCodes': 'https://example.com',
29
+ 'impressionTracker': 'https://example.com',
30
+ 'viewabilityTracker': 'https://example.com',
31
+ 'clickTracker': 'https://example.com',
32
+ 'link': 'https://example.com',
33
+ 'logo': 'https://example.com',
34
+ 'medias': [
35
+ {
36
+ 'src': 'banner/2021-04-09/938',
37
+ 'ext': 'zip',
38
+ 'type': 3,
39
+ }
40
+ ],
41
+ 'domain': 'https://example.com',
42
+ 'urlAdq': 'https://example.com',
43
+ 'creationId': 1,
44
+ 'currency': 'PLN',
45
+ 'adDomains': ['https://example.com'],
46
+ 'tag': '<ad-adquery data-type="banner300x250" data-placement="6d93f2a0e5f0fe2cc3a6e9e3ade964b43b07f897"> </ad-adquery>',
47
+ 'adqLib': 'https://example.com/js/example.js',
48
+ 'mediaType': {'width': 300, 'height': 250, 'name': 'banner', 'type': 'banner300x250'},
49
+ 'cpm': 2.5,
50
+ 'meta': {
51
+ 'advertiserDomains': ['example.com'],
52
+ 'mediaType': 'banner',
53
+ }
54
+ }
55
+ }
56
+ }
57
+ describe('codes', function () {
58
+ it('should return a bidder code of adquery', function () {
59
+ expect(spec.code).to.equal('adquery')
60
+ })
61
+ })
62
+
63
+ describe('isBidRequestValid', function () {
64
+ let inValidBid = Object.assign({}, bidRequest)
65
+ delete inValidBid.params
66
+ it('should return true if all params present', function () {
67
+ expect(spec.isBidRequestValid(bidRequest)).to.equal(true)
68
+ })
69
+
70
+ it('should return false if any parameter missing', function () {
71
+ expect(spec.isBidRequestValid(inValidBid)).to.be.false
72
+ })
73
+ })
74
+
75
+ describe('buildRequests', function () {
76
+ let req = spec.buildRequests([ bidRequest ], { refererInfo: { } })[0]
77
+ let rdata
78
+
79
+ it('should return request object', function () {
80
+ expect(req).to.not.be.null
81
+ })
82
+
83
+ it('should build request data', function () {
84
+ expect(req.data).to.not.be.null
85
+ })
86
+
87
+ it('should include one request', function () {
88
+ rdata = req.data;
89
+ expect(rdata.data).to.not.be.null
90
+ })
91
+
92
+ it('should include placementCode', function () {
93
+ expect(rdata.placementCode).not.be.null
94
+ })
95
+
96
+ it('should include qid', function () {
97
+ expect(rdata.qid).not.be.null
98
+ })
99
+
100
+ it('should include type', function () {
101
+ expect(rdata.type !== null).not.be.null
102
+ })
103
+
104
+ it('should include all publisher params', function () {
105
+ expect(rdata.type !== null && rdata.placementCode !== null).to.be.true
106
+ })
107
+
108
+ it('should include bidder', function () {
109
+ expect(rdata.bidder !== null).to.be.true
110
+ })
111
+ })
112
+
113
+ describe('interpretResponse', function () {
114
+ it('should get the correct bid response', function () {
115
+ let result = spec.interpretResponse(expectedResponse)
116
+ expect(result).to.be.an('array')
117
+ })
118
+
119
+ it('validate response params', function() {
120
+ const newResponse = spec.interpretResponse(expectedResponse, bidRequest);
121
+ expect(newResponse[0].requestId).to.be.equal(1)
122
+ });
123
+ it('handles empty bid response', function () {
124
+ let response = {
125
+ body: {}
126
+ };
127
+ let result = spec.interpretResponse(response);
128
+ expect(result.length).to.equal(0);
129
+ })
130
+ })
131
+
132
+ describe('getUserSyncs', function () {
133
+ it('should return iframe sync', function () {
134
+ let sync = spec.getUserSyncs()
135
+ expect(sync.length).to.equal(1)
136
+ expect(sync[0].type === 'iframe')
137
+ expect(typeof sync[0].url === 'string')
138
+ })
139
+
140
+ it('Should return array of objects with proper sync config , include GDPR', function() {
141
+ const syncData = spec.getUserSyncs({}, {}, {
142
+ consentString: 'ALL',
143
+ gdprApplies: true,
144
+ }, {});
145
+ expect(syncData).to.be.an('array').which.is.not.empty;
146
+ expect(syncData[0]).to.be.an('object')
147
+ expect(syncData[0].type).to.be.a('string')
148
+ expect(syncData[0].type).to.equal('image')
149
+ });
150
+ })
151
+
152
+ describe('test onBidWon function', function () {
153
+ beforeEach(function() {
154
+ sinon.stub(utils, 'triggerPixel');
155
+ });
156
+ afterEach(function() {
157
+ utils.triggerPixel.restore();
158
+ });
159
+ it('exists and is a function', () => {
160
+ expect(spec.onBidWon).to.exist.and.to.be.a('function');
161
+ });
162
+ it('should return nothing', function () {
163
+ var response = spec.onBidWon({});
164
+ expect(response).to.be.an('undefined')
165
+ expect(utils.triggerPixel.called).to.equal(true);
166
+ });
167
+ })
168
+
169
+ describe('onTimeout', function () {
170
+ const timeoutData = [{
171
+ timeout: null
172
+ }];
173
+
174
+ it('should exists and be a function', () => {
175
+ expect(spec.onTimeout).to.exist.and.to.be.a('function');
176
+ });
177
+ it('should include timeoutData', function () {
178
+ expect(spec.onTimeout(timeoutData)).to.be.undefined;
179
+ })
180
+ });
181
+
182
+ it(`onSetTargeting is present and type function`, function () {
183
+ expect(spec.onSetTargeting).to.exist.and.to.be.a('function')
184
+ });
185
+ })
@@ -0,0 +1,306 @@
1
+ import includes from 'core-js-pure/features/array/includes.js'
2
+ import cloneDeep from 'lodash/cloneDeep'
3
+ import unset from 'lodash/unset'
4
+ import { expect } from 'chai'
5
+ import { BANNER, VIDEO } from '../../../src/mediaTypes.js'
6
+ import {
7
+ spec,
8
+ IN_IMAGE_BANNER_TYPE,
9
+ IN_IMAGE_MAX_BANNER_TYPE,
10
+ IN_CONTENT_BANNER_TYPE,
11
+ IN_CONTENT_VIDEO_TYPE,
12
+ OUT_CONTENT_VIDEO_TYPE,
13
+ IN_CONTENT_STORY_TYPE,
14
+ ACTION_SCROLLER_TYPE,
15
+ ACTION_SCROLLER_LIGHT_TYPE,
16
+ JUST_BANNER_TYPE,
17
+ BIDDER_CODE,
18
+ SSP_ENDPOINT,
19
+ REQUEST_METHOD,
20
+ TEST_PAGE_URL,
21
+ IS_DEV, mediaTypeByPlaceType
22
+ } from 'modules/afpBidAdapter.js'
23
+
24
+ const placeId = '613221112871613d1517d181'
25
+ const bidId = '2a67c5577ff6a5'
26
+ const transactionId = '7e8515a2-2ed9-4733-b976-6c2596a03287'
27
+ const imageUrl = 'https://rtbinsight.ru/content/images/size/w1000/2021/05/ximage-30.png.pagespeed.ic.IfuX4zAEPP.png'
28
+ const placeContainer = '#container'
29
+ const imageWidth = 600
30
+ const imageHeight = 400
31
+ const pageUrl = IS_DEV ? TEST_PAGE_URL : 'referer'
32
+ const sizes = [[imageWidth, imageHeight]]
33
+ const bidderRequest = {
34
+ refererInfo: { referer: pageUrl },
35
+ }
36
+ const mediaTypeBanner = { [BANNER]: {sizes: [[imageWidth, imageHeight]]} }
37
+ const mediaTypeVideo = { [VIDEO]: {playerSize: [[imageWidth, imageHeight]]} }
38
+ const commonParams = {
39
+ placeId,
40
+ placeContainer,
41
+ }
42
+ const commonParamsForInImage = Object.assign({}, commonParams, {
43
+ imageUrl,
44
+ imageWidth,
45
+ imageHeight,
46
+ })
47
+ const configByPlaceType = {
48
+ get [IN_IMAGE_BANNER_TYPE]() {
49
+ return cloneDeep({
50
+ mediaTypes: mediaTypeBanner,
51
+ params: Object.assign({}, commonParamsForInImage, {
52
+ placeType: IN_IMAGE_BANNER_TYPE
53
+ }),
54
+ })
55
+ },
56
+ get [IN_IMAGE_MAX_BANNER_TYPE]() {
57
+ return cloneDeep({
58
+ mediaTypes: mediaTypeBanner,
59
+ params: Object.assign({}, commonParamsForInImage, {
60
+ placeType: IN_IMAGE_MAX_BANNER_TYPE
61
+ }),
62
+ })
63
+ },
64
+ get [IN_CONTENT_BANNER_TYPE]() {
65
+ return cloneDeep({
66
+ mediaTypes: mediaTypeBanner,
67
+ params: Object.assign({}, commonParams, {
68
+ placeType: IN_CONTENT_BANNER_TYPE
69
+ }),
70
+ })
71
+ },
72
+ get [IN_CONTENT_VIDEO_TYPE]() {
73
+ return cloneDeep({
74
+ mediaTypes: mediaTypeVideo,
75
+ params: Object.assign({}, commonParams, {
76
+ placeType: IN_CONTENT_VIDEO_TYPE
77
+ }),
78
+ })
79
+ },
80
+ get [OUT_CONTENT_VIDEO_TYPE]() {
81
+ return cloneDeep({
82
+ mediaTypes: mediaTypeVideo,
83
+ params: Object.assign({}, commonParams, {
84
+ placeType: OUT_CONTENT_VIDEO_TYPE
85
+ }),
86
+ })
87
+ },
88
+ get [IN_CONTENT_STORY_TYPE]() {
89
+ return cloneDeep({
90
+ mediaTypes: mediaTypeBanner,
91
+ params: Object.assign({}, commonParams, {
92
+ placeType: IN_CONTENT_STORY_TYPE
93
+ }),
94
+ })
95
+ },
96
+ get [ACTION_SCROLLER_TYPE]() {
97
+ return cloneDeep({
98
+ mediaTypes: mediaTypeBanner,
99
+ params: Object.assign({}, commonParams, {
100
+ placeType: ACTION_SCROLLER_TYPE
101
+ }),
102
+ })
103
+ },
104
+ get [ACTION_SCROLLER_LIGHT_TYPE]() {
105
+ return cloneDeep({
106
+ mediaTypes: mediaTypeBanner,
107
+ params: Object.assign({}, commonParams, {
108
+ placeType: ACTION_SCROLLER_LIGHT_TYPE
109
+ }),
110
+ })
111
+ },
112
+ get [JUST_BANNER_TYPE]() {
113
+ return cloneDeep({
114
+ mediaTypes: mediaTypeBanner,
115
+ params: Object.assign({}, commonParams, {
116
+ placeType: JUST_BANNER_TYPE
117
+ }),
118
+ })
119
+ },
120
+ }
121
+ const getTransformedConfig = ({mediaTypes, params}) => {
122
+ return {
123
+ params: params,
124
+ sizes,
125
+ bidId,
126
+ bidder: BIDDER_CODE,
127
+ mediaTypes: mediaTypes,
128
+ transactionId,
129
+ }
130
+ }
131
+ const validBidRequests = Object.keys(configByPlaceType).map(key => getTransformedConfig(configByPlaceType[key]))
132
+
133
+ describe('AFP Adapter', function() {
134
+ describe('isBidRequestValid method', function() {
135
+ describe('returns true', function() {
136
+ describe('when config has all mandatory params', () => {
137
+ Object.keys(configByPlaceType).forEach(placeType => {
138
+ it(`and ${placeType} config has the correct value`, function() {
139
+ const isBidRequestValid = spec.isBidRequestValid(configByPlaceType[placeType])
140
+ expect(isBidRequestValid).to.equal(true)
141
+ })
142
+ })
143
+ })
144
+ })
145
+ describe('returns false', function() {
146
+ const checkMissingParams = (placesTypes, missingParams) =>
147
+ placesTypes.forEach(placeType =>
148
+ missingParams.forEach(missingParam => {
149
+ const config = configByPlaceType[placeType]
150
+ it(`${placeType} does not have the ${missingParam}.`, function() {
151
+ unset(config, missingParam)
152
+ const isBidRequestValid = spec.isBidRequestValid(config)
153
+ expect(isBidRequestValid).to.equal(false)
154
+ })
155
+ })
156
+ )
157
+
158
+ describe('when params are not correct', function() {
159
+ checkMissingParams(Object.keys(configByPlaceType), ['params.placeId', 'params.placeType'])
160
+ checkMissingParams([IN_IMAGE_BANNER_TYPE, IN_IMAGE_MAX_BANNER_TYPE],
161
+ ['params.imageUrl', 'params.imageWidth', 'params.imageHeight'])
162
+
163
+ it('does not have a the correct placeType.', function() {
164
+ const config = configByPlaceType[IN_IMAGE_BANNER_TYPE]
165
+ config.params.placeType = 'something'
166
+ const isBidRequestValid = spec.isBidRequestValid(config)
167
+ expect(isBidRequestValid).to.equal(false)
168
+ })
169
+ })
170
+ describe('when video mediaType object is not correct.', function() {
171
+ checkMissingParams([IN_CONTENT_VIDEO_TYPE, OUT_CONTENT_VIDEO_TYPE],
172
+ [`mediaTypes.${VIDEO}.playerSize`, `mediaTypes.${VIDEO}`])
173
+ checkMissingParams([
174
+ IN_IMAGE_BANNER_TYPE,
175
+ IN_IMAGE_MAX_BANNER_TYPE,
176
+ IN_CONTENT_BANNER_TYPE,
177
+ IN_CONTENT_STORY_TYPE,
178
+ ACTION_SCROLLER_TYPE,
179
+ ACTION_SCROLLER_LIGHT_TYPE,
180
+ JUST_BANNER_TYPE
181
+ ], [`mediaTypes.${BANNER}.sizes`, `mediaTypes.${BANNER}`])
182
+ })
183
+ })
184
+ })
185
+
186
+ describe('buildRequests method', function() {
187
+ const request = spec.buildRequests(validBidRequests, bidderRequest)
188
+
189
+ it('Url should be correct', function() {
190
+ expect(request.url).to.equal(SSP_ENDPOINT)
191
+ })
192
+
193
+ it('Method should be correct', function() {
194
+ expect(request.method).to.equal(REQUEST_METHOD)
195
+ })
196
+
197
+ describe('Common data request should be correct', function() {
198
+ it('pageUrl should be correct', function() {
199
+ expect(request.data.pageUrl).to.equal(pageUrl)
200
+ })
201
+ it('bidRequests should be array', function() {
202
+ expect(Array.isArray(request.data.bidRequests)).to.equal(true)
203
+ })
204
+
205
+ request.data.bidRequests.forEach((bid, index) => {
206
+ describe(`bid with ${validBidRequests[index].params.placeType} should be correct`, function() {
207
+ it('bidId should be correct', function() {
208
+ expect(bid.bidId).to.equal(bidId)
209
+ })
210
+ it('placeId should be correct', function() {
211
+ expect(bid.placeId).to.equal(placeId)
212
+ })
213
+ it('transactionId should be correct', function() {
214
+ expect(bid.transactionId).to.equal(transactionId)
215
+ })
216
+ it('sizes should be correct', function() {
217
+ expect(bid.sizes).to.equal(sizes)
218
+ })
219
+
220
+ if (includes([IN_IMAGE_BANNER_TYPE, IN_IMAGE_MAX_BANNER_TYPE], validBidRequests[index].params.placeType)) {
221
+ it('imageUrl should be correct', function() {
222
+ expect(bid.imageUrl).to.equal(imageUrl)
223
+ })
224
+ it('imageWidth should be correct', function() {
225
+ expect(bid.imageWidth).to.equal(Math.floor(imageWidth))
226
+ })
227
+ it('imageHeight should be correct', function() {
228
+ expect(bid.imageHeight).to.equal(Math.floor(imageHeight))
229
+ })
230
+ }
231
+ })
232
+ })
233
+ })
234
+ })
235
+
236
+ describe('interpretResponse method', function() {
237
+ it('should return a void array, when the server response are not correct.', function() {
238
+ const request = { data: JSON.stringify({}) }
239
+ const serverResponse = {
240
+ body: {}
241
+ }
242
+ const bids = spec.interpretResponse(serverResponse, request)
243
+ expect(Array.isArray(bids)).to.equal(true)
244
+ expect(bids.length).to.equal(0)
245
+ })
246
+ it('should return a void array, when the server response have not got bids.', function() {
247
+ const request = { data: JSON.stringify({}) }
248
+ const serverResponse = { body: { bids: [] } }
249
+ const bids = spec.interpretResponse(serverResponse, request)
250
+ expect(Array.isArray(bids)).to.equal(true)
251
+ expect(bids.length).to.equal(0)
252
+ })
253
+ describe('when the server response return a bids', function() {
254
+ Object.keys(configByPlaceType).forEach(placeType => {
255
+ it(`should return a bid with ${placeType} placeType`, function() {
256
+ const cpm = 10
257
+ const currency = 'RUB'
258
+ const creativeId = '123'
259
+ const netRevenue = true
260
+ const width = sizes[0][0]
261
+ const height = sizes[0][1]
262
+ const adSettings = {
263
+ content: 'html'
264
+ }
265
+ const placeSettings = {
266
+ placeType,
267
+ }
268
+ const request = spec.buildRequests([validBidRequests[0]], bidderRequest)
269
+ const serverResponse = {
270
+ body: {
271
+ bids: [
272
+ {
273
+ bidId,
274
+ cpm,
275
+ currency,
276
+ creativeId,
277
+ netRevenue,
278
+ width,
279
+ height,
280
+ adSettings,
281
+ placeSettings,
282
+ }
283
+ ]
284
+ }
285
+ }
286
+ const bids = spec.interpretResponse(serverResponse, request)
287
+ expect(bids.length).to.equal(1)
288
+ expect(bids[0].requestId).to.equal(bidId)
289
+ expect(bids[0].meta.mediaType).to.equal(mediaTypeByPlaceType[placeSettings.placeType])
290
+ expect(bids[0].cpm).to.equal(cpm)
291
+ expect(bids[0].width).to.equal(width)
292
+ expect(bids[0].height).to.equal(height)
293
+ expect(bids[0].currency).to.equal(currency)
294
+ expect(bids[0].netRevenue).to.equal(netRevenue)
295
+
296
+ if (mediaTypeByPlaceType[placeSettings.placeType] === BANNER) {
297
+ expect(typeof bids[0].ad).to.equal('string')
298
+ } else if (mediaTypeByPlaceType[placeSettings.placeType] === VIDEO) {
299
+ expect(typeof bids[0].vastXml).to.equal('string')
300
+ expect(typeof bids[0].renderer).to.equal('object')
301
+ }
302
+ })
303
+ })
304
+ })
305
+ })
306
+ })
@@ -5,16 +5,18 @@ import {server} from '../../mocks/xhr.js';
5
5
  import {parseBrowser} from '../../../modules/atsAnalyticsAdapter.js';
6
6
  import {getStorageManager} from '../../../src/storageManager.js';
7
7
  import {analyticsUrl} from '../../../modules/atsAnalyticsAdapter.js';
8
+ let utils = require('src/utils');
8
9
 
9
10
  let events = require('src/events');
10
11
  let constants = require('src/constants.json');
11
12
 
12
13
  export const storage = getStorageManager();
13
-
14
+ let sandbox;
14
15
  describe('ats analytics adapter', function () {
15
16
  beforeEach(function () {
16
17
  sinon.stub(events, 'getEvents').returns([]);
17
18
  storage.setCookie('_lr_env_src_ats', 'true', 'Thu, 01 Jan 1970 00:00:01 GMT');
19
+ sandbox = sinon.sandbox.create();
18
20
  });
19
21
 
20
22
  afterEach(function () {
@@ -22,6 +24,7 @@ describe('ats analytics adapter', function () {
22
24
  atsAnalyticsAdapter.getUserAgent.restore();
23
25
  atsAnalyticsAdapter.disableAnalytics();
24
26
  Math.random.restore();
27
+ sandbox.restore();
25
28
  });
26
29
 
27
30
  describe('track', function () {
@@ -87,7 +90,7 @@ describe('ats analytics adapter', function () {
87
90
  let expectedAfterBid = {
88
91
  'Data': [{
89
92
  'has_envelope': true,
90
- 'adapter_version': 1,
93
+ 'adapter_version': 2,
91
94
  'bidder': 'appnexus',
92
95
  'bid_id': '30c77d079cdf17',
93
96
  'auction_id': 'a5b849e5-87d7-4205-8300-d063084fcfb7',
@@ -185,6 +188,12 @@ describe('ats analytics adapter', function () {
185
188
  let browser = parseBrowser();
186
189
  expect(browser).to.equal('Firefox');
187
190
  })
191
+ it('check browser is unknown', function () {
192
+ sinon.stub(atsAnalyticsAdapter, 'getUserAgent').returns(undefined);
193
+ sinon.stub(Math, 'random').returns(0.99);
194
+ let browser = parseBrowser();
195
+ expect(browser).to.equal('Unknown');
196
+ })
188
197
  it('should not fire analytics request if sampling rate is 0', function () {
189
198
  sinon.stub(atsAnalyticsAdapter, 'getUserAgent').returns('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25');
190
199
  sinon.stub(Math, 'random').returns(0.99);
@@ -205,5 +214,31 @@ describe('ats analytics adapter', function () {
205
214
  let result = atsAnalyticsAdapter.shouldFireRequest(10);
206
215
  expect(result).to.equal(false);
207
216
  })
217
+
218
+ it('should set cookie value to 10 for _lr_sampling_rate', function () {
219
+ sinon.stub(atsAnalyticsAdapter, 'getUserAgent').returns('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25');
220
+ sinon.stub(Math, 'random').returns(0.99);
221
+ atsAnalyticsAdapter.setSamplingCookie(10);
222
+ let samplingRate = storage.getCookie('_lr_sampling_rate');
223
+ expect(samplingRate).to.equal('10');
224
+ })
225
+
226
+ it('should set cookie value to 0 for _lr_sampling_rate', function () {
227
+ sinon.stub(atsAnalyticsAdapter, 'getUserAgent').returns('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25');
228
+ sinon.stub(Math, 'random').returns(0.99);
229
+ atsAnalyticsAdapter.setSamplingCookie(0);
230
+ let samplingRate = storage.getCookie('_lr_sampling_rate');
231
+ expect(samplingRate).to.equal('0');
232
+ })
233
+
234
+ it('enable analytics', function () {
235
+ sandbox.stub(utils, 'logError');
236
+ sinon.stub(atsAnalyticsAdapter, 'getUserAgent').returns('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25');
237
+ sinon.stub(Math, 'random').returns(0.99);
238
+ atsAnalyticsAdapter.enableAnalytics({
239
+ options: {}
240
+ });
241
+ expect(utils.logError.called).to.equal(true);
242
+ })
208
243
  })
209
244
  })