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.
Files changed (353) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adWMGAnalyticsAdapter.js +1 -1
  4. package/dist/adagioAnalyticsAdapter.js +1 -1
  5. package/dist/adagioBidAdapter.js +1 -1
  6. package/dist/adbookpspBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  9. package/dist/adlooxAdServerVideo.js +1 -1
  10. package/dist/adlooxAnalyticsAdapter.js +1 -1
  11. package/dist/adlooxRtdProvider.js +1 -1
  12. package/dist/admaticBidAdapter.js +1 -1
  13. package/dist/admixerBidAdapter.js +1 -1
  14. package/dist/adomikAnalyticsAdapter.js +1 -1
  15. package/dist/adrelevantisBidAdapter.js +1 -1
  16. package/dist/adtrgtmeBidAdapter.js +1 -1
  17. package/dist/adxcgAnalyticsAdapter.js +1 -1
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  20. package/dist/aidemBidAdapter.js +1 -0
  21. package/dist/ajaBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/analyticsAdapter.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/asoBidAdapter.js +1 -1
  28. package/dist/atsAnalyticsAdapter.js +1 -1
  29. package/dist/axonixBidAdapter.js +1 -1
  30. package/dist/beopBidAdapter.js +1 -1
  31. package/dist/bidViewability.js +1 -1
  32. package/dist/bidglassBidAdapter.js +1 -1
  33. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bridgewellBidAdapter.js +1 -1
  36. package/dist/brightMountainMediaBidAdapter.js +1 -1
  37. package/dist/browsiRtdProvider.js +1 -1
  38. package/dist/bucksenseBidAdapter.js +1 -1
  39. package/dist/byDataAnalyticsAdapter.js +1 -1
  40. package/dist/captifyRtdProvider.js +1 -0
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/chtnwBidAdapter.js +1 -1
  43. package/dist/concertAnalyticsAdapter.js +1 -1
  44. package/dist/concertBidAdapter.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consentManagement.js +1 -1
  47. package/dist/consentManagementUsp.js +1 -1
  48. package/dist/consumableBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -1
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/datablocksAnalyticsAdapter.js +1 -1
  54. package/dist/dependencies.json +6 -0
  55. package/dist/dfpAdServerVideo.js +1 -1
  56. package/dist/discoveryBidAdapter.js +1 -1
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/eplanningAnalyticsAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/finativeBidAdapter.js +1 -1
  61. package/dist/fintezaAnalyticsAdapter.js +1 -1
  62. package/dist/fluctBidAdapter.js +1 -1
  63. package/dist/ftrackIdSystem.js +1 -1
  64. package/dist/gdprEnforcement.js +1 -1
  65. package/dist/genericAnalyticsAdapter.js +1 -0
  66. package/dist/geoedgeRtdProvider.js +1 -1
  67. package/dist/glimpseBidAdapter.js +1 -1
  68. package/dist/glomexBidAdapter.js +1 -1
  69. package/dist/gmosspBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/googleAnalyticsAdapter.js +1 -1
  72. package/dist/gravitoIdSystem.js +1 -1
  73. package/dist/gridBidAdapter.js +1 -1
  74. package/dist/gridNMBidAdapter.js +1 -1
  75. package/dist/growthCodeAnalyticsAdapter.js +1 -0
  76. package/dist/gumgumBidAdapter.js +1 -1
  77. package/dist/h12mediaBidAdapter.js +1 -1
  78. package/dist/hadronAnalyticsAdapter.js +1 -1
  79. package/dist/id5AnalyticsAdapter.js +1 -1
  80. package/dist/id5IdSystem.js +1 -1
  81. package/dist/impactifyBidAdapter.js +1 -1
  82. package/dist/improvedigitalBidAdapter.js +1 -1
  83. package/dist/inmarBidAdapter.js +1 -1
  84. package/dist/insticatorBidAdapter.js +1 -1
  85. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  86. package/dist/ixBidAdapter.js +1 -1
  87. package/dist/justpremiumBidAdapter.js +1 -1
  88. package/dist/jwplayerRtdProvider.js +1 -1
  89. package/dist/kargoAnalyticsAdapter.js +1 -1
  90. package/dist/kinessoIdSystem.js +1 -1
  91. package/dist/konduitAnalyticsAdapter.js +1 -1
  92. package/dist/kueezBidAdapter.js +1 -1
  93. package/dist/kueezRtbBidAdapter.js +1 -1
  94. package/dist/lassoBidAdapter.js +1 -1
  95. package/dist/lifestreetBidAdapter.js +1 -1
  96. package/dist/limelightDigitalBidAdapter.js +1 -1
  97. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  98. package/dist/liveIntentIdSystem.js +1 -1
  99. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  100. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  101. package/dist/logicadBidAdapter.js +1 -1
  102. package/dist/loglyliftBidAdapter.js +1 -1
  103. package/dist/lotamePanoramaIdSystem.js +1 -1
  104. package/dist/magniteAnalyticsAdapter.js +1 -1
  105. package/dist/malltvAnalyticsAdapter.js +1 -1
  106. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  107. package/dist/marsmediaBidAdapter.js +1 -1
  108. package/dist/mediafuseBidAdapter.js +1 -1
  109. package/dist/medianetAnalyticsAdapter.js +1 -1
  110. package/dist/mediasquareBidAdapter.js +1 -1
  111. package/dist/mgidBidAdapter.js +1 -1
  112. package/dist/minutemediaBidAdapter.js +1 -1
  113. package/dist/nextMillenniumBidAdapter.js +1 -1
  114. package/dist/nexx360BidAdapter.js +1 -1
  115. package/dist/not-for-prod/prebid.js +240 -202
  116. package/dist/oguryBidAdapter.js +1 -1
  117. package/dist/onetagBidAdapter.js +1 -1
  118. package/dist/ooloAnalyticsAdapter.js +1 -1
  119. package/dist/openxAnalyticsAdapter.js +1 -1
  120. package/dist/optimonAnalyticsAdapter.js +1 -1
  121. package/dist/outbrainBidAdapter.js +1 -1
  122. package/dist/parrableIdSystem.js +1 -1
  123. package/dist/pbsExtensions.js +1 -1
  124. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  125. package/dist/pixfutureBidAdapter.js +1 -1
  126. package/dist/prebid-core.js +1 -1
  127. package/dist/prebidServerBidAdapter.js +1 -1
  128. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  129. package/dist/pubCommonId.js +1 -1
  130. package/dist/pubProvidedIdSystem.js +1 -1
  131. package/dist/publinkIdSystem.js +1 -1
  132. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  133. package/dist/pubmaticBidAdapter.js +1 -1
  134. package/dist/pubperfAnalyticsAdapter.js +1 -1
  135. package/dist/pubstackAnalyticsAdapter.js +1 -1
  136. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  137. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  138. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  139. package/dist/pxyzBidAdapter.js +1 -1
  140. package/dist/quantcastBidAdapter.js +1 -1
  141. package/dist/quantcastIdSystem.js +1 -1
  142. package/dist/rasBidAdapter.js +1 -1
  143. package/dist/readpeakBidAdapter.js +1 -1
  144. package/dist/realvuAnalyticsAdapter.js +1 -1
  145. package/dist/redtramBidAdapter.js +1 -0
  146. package/dist/relaidoBidAdapter.js +1 -1
  147. package/dist/relevantAnalyticsAdapter.js +1 -1
  148. package/dist/rhythmoneBidAdapter.js +1 -1
  149. package/dist/riseBidAdapter.js +1 -1
  150. package/dist/rivrAnalyticsAdapter.js +1 -1
  151. package/dist/roxotAnalyticsAdapter.js +1 -1
  152. package/dist/rtbhouseBidAdapter.js +1 -1
  153. package/dist/rtdModule.js +1 -1
  154. package/dist/rubiconAnalyticsAdapter.js +1 -1
  155. package/dist/rubiconBidAdapter.js +1 -1
  156. package/dist/s2sTesting.js +1 -1
  157. package/dist/scaleableAnalyticsAdapter.js +1 -1
  158. package/dist/schain.js +1 -1
  159. package/dist/seedingAllianceBidAdapter.js +1 -1
  160. package/dist/seedtagBidAdapter.js +1 -1
  161. package/dist/sharedIdSystem.js +1 -1
  162. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  163. package/dist/sharethroughBidAdapter.js +1 -1
  164. package/dist/shinezBidAdapter.js +1 -1
  165. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  166. package/dist/smaatoBidAdapter.js +1 -1
  167. package/dist/smartadserverBidAdapter.js +1 -1
  168. package/dist/smartxBidAdapter.js +1 -1
  169. package/dist/smartytechBidAdapter.js +1 -0
  170. package/dist/smilewantedBidAdapter.js +1 -1
  171. package/dist/sonobiAnalyticsAdapter.js +1 -1
  172. package/dist/sonobiBidAdapter.js +1 -1
  173. package/dist/sovrnAnalyticsAdapter.js +1 -1
  174. package/dist/sovrnBidAdapter.js +1 -1
  175. package/dist/sspBCBidAdapter.js +1 -1
  176. package/dist/staqAnalyticsAdapter.js +1 -1
  177. package/dist/sublimeBidAdapter.js +1 -1
  178. package/dist/synacormediaBidAdapter.js +1 -1
  179. package/dist/taboolaBidAdapter.js +1 -1
  180. package/dist/tapadIdSystem.js +1 -1
  181. package/dist/tappxBidAdapter.js +1 -1
  182. package/dist/targetVideoBidAdapter.js +1 -1
  183. package/dist/teadsBidAdapter.js +1 -1
  184. package/dist/teadsIdSystem.js +1 -1
  185. package/dist/terceptAnalyticsAdapter.js +1 -1
  186. package/dist/trionBidAdapter.js +1 -1
  187. package/dist/tripleliftBidAdapter.js +1 -1
  188. package/dist/ttdBidAdapter.js +1 -1
  189. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  190. package/dist/underdogmediaBidAdapter.js +1 -1
  191. package/dist/undertoneBidAdapter.js +1 -1
  192. package/dist/userId.js +1 -1
  193. package/dist/vidazooBidAdapter.js +1 -1
  194. package/dist/videobyteBidAdapter.js +1 -1
  195. package/dist/viqeoBidAdapter.js +1 -0
  196. package/dist/visxBidAdapter.js +1 -1
  197. package/dist/vuukleBidAdapter.js +1 -1
  198. package/dist/weboramaRtdProvider.js +1 -1
  199. package/dist/widespaceBidAdapter.js +1 -1
  200. package/dist/winrBidAdapter.js +1 -1
  201. package/dist/yahoosspBidAdapter.js +1 -1
  202. package/dist/yandexBidAdapter.js +1 -1
  203. package/dist/yieldlabBidAdapter.js +1 -1
  204. package/dist/yieldliftBidAdapter.js +1 -1
  205. package/dist/yieldmoBidAdapter.js +1 -1
  206. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  207. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  208. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  209. package/dist/zeta_global_sspBidAdapter.js +1 -1
  210. package/dist/zeusPrimeRtdProvider.js +31 -0
  211. package/integrationExamples/gpt/captifyRtdProvider_example.html +167 -0
  212. package/integrationExamples/gpt/growthcode.html +134 -0
  213. package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
  214. package/modules/.submodules.json +3 -1
  215. package/modules/admaticBidAdapter.js +116 -58
  216. package/modules/admaticBidAdapter.md +2 -2
  217. package/modules/admixerBidAdapter.js +1 -1
  218. package/modules/aidemBidAdapter.js +492 -0
  219. package/modules/aidemBidAdapter.md +187 -0
  220. package/modules/beopBidAdapter.js +17 -2
  221. package/modules/browsiRtdProvider.js +6 -4
  222. package/modules/bucksenseBidAdapter.js +1 -1
  223. package/modules/captifyRtdProvider.js +146 -0
  224. package/modules/captifyRtdProvider.md +68 -0
  225. package/modules/criteoBidAdapter.js +3 -3
  226. package/modules/discoveryBidAdapter.js +38 -17
  227. package/modules/discoveryBidAdapter.md +7 -6
  228. package/modules/eplanningBidAdapter.js +2 -6
  229. package/modules/fluctBidAdapter.js +5 -0
  230. package/modules/gdprEnforcement.js +26 -24
  231. package/modules/genericAnalyticsAdapter.js +157 -0
  232. package/modules/geoedgeRtdProvider.js +22 -0
  233. package/modules/glomexBidAdapter.js +2 -0
  234. package/modules/gravitoIdSystem.js +3 -4
  235. package/modules/gridBidAdapter.js +441 -23
  236. package/modules/gridNMBidAdapter.js +1 -1
  237. package/modules/growthCodeAnalyticsAdapter.js +176 -0
  238. package/modules/growthCodeAnalyticsAdapter.md +41 -0
  239. package/modules/impactifyBidAdapter.js +19 -1
  240. package/modules/jwplayerRtdProvider.js +1 -2
  241. package/modules/limelightDigitalBidAdapter.js +1 -1
  242. package/modules/minutemediaBidAdapter.md +3 -3
  243. package/modules/nextMillenniumBidAdapter.js +19 -23
  244. package/modules/nexx360BidAdapter.js +264 -138
  245. package/modules/pubCommonId.js +2 -1
  246. package/modules/pubProvidedIdSystem.js +2 -0
  247. package/modules/rasBidAdapter.js +8 -3
  248. package/modules/rasBidAdapter.md +16 -15
  249. package/modules/redtramBidAdapter.js +155 -0
  250. package/modules/redtramBidAdapter.md +33 -0
  251. package/modules/riseBidAdapter.js +15 -0
  252. package/modules/riseBidAdapter.md +3 -3
  253. package/modules/rtbhouseBidAdapter.js +90 -29
  254. package/modules/rubiconBidAdapter.js +2 -1
  255. package/modules/seedtagBidAdapter.js +67 -56
  256. package/modules/seedtagBidAdapter.md +60 -0
  257. package/modules/sharedIdSystem.js +3 -1
  258. package/modules/smartadserverBidAdapter.js +6 -2
  259. package/modules/smartxBidAdapter.js +11 -8
  260. package/modules/smartytechBidAdapter.js +78 -0
  261. package/modules/smartytechBidAdapter.md +44 -0
  262. package/modules/smnBidAdapter.md +52 -0
  263. package/modules/taboolaBidAdapter.js +3 -3
  264. package/modules/taboolaBidAdapter.md +0 -2
  265. package/modules/tappxBidAdapter.js +21 -6
  266. package/modules/tripleliftBidAdapter.js +1 -1
  267. package/modules/ttdBidAdapter.js +8 -3
  268. package/modules/userId/index.js +1 -1
  269. package/modules/vidazooBidAdapter.js +26 -3
  270. package/modules/viqeoBidAdapter.js +180 -0
  271. package/modules/viqeoBidAdapter.md +56 -0
  272. package/modules/yandexBidAdapter.js +85 -19
  273. package/modules/yandexBidAdapter.md +7 -7
  274. package/modules/yieldlabBidAdapter.js +29 -12
  275. package/modules/yieldliftBidAdapter.js +3 -3
  276. package/modules/yieldoneBidAdapter.js +60 -8
  277. package/modules/yieldoneBidAdapter.md +109 -9
  278. package/modules/zeta_global_sspBidAdapter.js +4 -0
  279. package/modules/zeusPrimeRtdProvider.js +357 -0
  280. package/modules/zeusPrimeRtdProvider.md +60 -0
  281. package/package.json +1 -1
  282. package/src/adloader.js +0 -1
  283. package/src/auction.js +19 -3
  284. package/src/consentHandler.js +8 -0
  285. package/src/events.js +4 -0
  286. package/src/native.js +31 -20
  287. package/src/refererDetection.js +6 -1
  288. package/src/storageManager.js +6 -3
  289. package/test/helpers/analytics.js +34 -0
  290. package/test/mocks/analyticsStub.js +3 -1
  291. package/test/spec/AnalyticsAdapter_spec.js +119 -116
  292. package/test/spec/auctionmanager_spec.js +86 -0
  293. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
  294. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
  295. package/test/spec/modules/admaticBidAdapter_spec.js +262 -3
  296. package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
  297. package/test/spec/modules/beopBidAdapter_spec.js +52 -0
  298. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
  299. package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
  300. package/test/spec/modules/captifyRtdProvider_spec.js +253 -0
  301. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
  302. package/test/spec/modules/discoveryBidAdapter_spec.js +9 -8
  303. package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
  304. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
  305. package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
  306. package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
  307. package/test/spec/modules/fpdModule_spec.js +1 -1
  308. package/test/spec/modules/gdprEnforcement_spec.js +115 -68
  309. package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
  310. package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
  311. package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
  312. package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
  313. package/test/spec/modules/gridBidAdapter_spec.js +289 -1
  314. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
  315. package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
  316. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
  317. package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
  318. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
  319. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
  320. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
  321. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +4 -3
  322. package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
  323. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
  324. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
  325. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
  326. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
  327. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
  328. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
  329. package/test/spec/modules/rasBidAdapter_spec.js +5 -1
  330. package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
  331. package/test/spec/modules/riseBidAdapter_spec.js +24 -0
  332. package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
  333. package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
  334. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
  335. package/test/spec/modules/smartadserverBidAdapter_spec.js +80 -0
  336. package/test/spec/modules/smartxBidAdapter_spec.js +32 -0
  337. package/test/spec/modules/smartytechBidAdapter_spec.js +162 -0
  338. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
  339. package/test/spec/modules/taboolaBidAdapter_spec.js +0 -77
  340. package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
  341. package/test/spec/modules/ttdBidAdapter_spec.js +27 -0
  342. package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
  343. package/test/spec/modules/viqeoBidAdapter_spec.js +124 -0
  344. package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
  345. package/test/spec/modules/yieldlabBidAdapter_spec.js +174 -20
  346. package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
  347. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
  348. package/test/spec/modules/yieldoneBidAdapter_spec.js +30 -6
  349. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +16 -1
  350. package/test/spec/modules/zeusPrimeRtdProvider_spec.js +410 -0
  351. package/test/spec/native_spec.js +68 -56
  352. package/test/spec/refererDetection_spec.js +45 -7
  353. 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 createVideoSlotConfig(mediaType) {
28
+ function createInStreamSlotConfig(mediaType) {
29
29
  return getSlotConfigs(mediaType, {
30
30
  publisherId: PUBLISHER_ID,
31
31
  adUnitId: ADUNIT_ID,
32
- placement: 'video',
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 = getSlotConfigs(
71
- {
72
- video: {
73
- context: 'instream',
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: 'outstream',
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: 'video',
84
+ placement: 'inBanner',
99
85
  }
100
86
  );
101
87
  const isBidRequestValid = spec.isBidRequestValid(slotConfig);
102
- expect(isBidRequestValid).to.equal(true);
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: 'banner',
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: 'banner',
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
- createVideoSlotConfig({ video: {} })
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
- createVideoSlotConfig({ video: { context: 'instream' } })
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
- createVideoSlotConfig({
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(true);
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
- createVideoSlotConfig({ banner: {}, video: {} })
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
- createVideoSlotConfig({ video: {}, banner: {} })
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 mandatoryParams = {
193
+ const mandatoryDisplayParams = {
204
194
  publisherId: PUBLISHER_ID,
205
195
  adUnitId: ADUNIT_ID,
206
- placement: 'banner',
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: {} }, mandatoryParams),
204
+ getSlotConfigs({ banner: {} }, mandatoryDisplayParams),
215
205
  getSlotConfigs(
216
- { video: { context: 'instream', playerSize: [[300, 200]] } },
217
- inStreamParams
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.equal('mp4');
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
- params.publisherId +
564
- '&adUnitId=' +
565
- params.adUnitId +
566
- '&timeout=' +
567
- timeout
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
- params.publisherId +
580
- '&adUnitId=' +
581
- params.adUnitId +
582
- '&timeout=' +
583
- timeout
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 { expect } from 'chai';
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
- events.emit(constants.EVENTS.AUCTION_INIT, {});
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
+ });