prebid.js 7.26.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 (305) 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/bidViewability.js +1 -1
  31. package/dist/bidglassBidAdapter.js +1 -1
  32. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  33. package/dist/big-richmediaBidAdapter.js +1 -1
  34. package/dist/bridgewellBidAdapter.js +1 -1
  35. package/dist/brightMountainMediaBidAdapter.js +1 -1
  36. package/dist/browsiRtdProvider.js +1 -1
  37. package/dist/bucksenseBidAdapter.js +1 -1
  38. package/dist/byDataAnalyticsAdapter.js +1 -1
  39. package/dist/carodaBidAdapter.js +1 -1
  40. package/dist/chtnwBidAdapter.js +1 -1
  41. package/dist/concertAnalyticsAdapter.js +1 -1
  42. package/dist/concertBidAdapter.js +1 -1
  43. package/dist/connectadBidAdapter.js +1 -1
  44. package/dist/consentManagement.js +1 -1
  45. package/dist/consentManagementUsp.js +1 -1
  46. package/dist/consumableBidAdapter.js +1 -1
  47. package/dist/conversantAnalyticsAdapter.js +1 -1
  48. package/dist/conversantBidAdapter.js +1 -1
  49. package/dist/craftBidAdapter.js +1 -1
  50. package/dist/criteoBidAdapter.js +1 -1
  51. package/dist/datablocksAnalyticsAdapter.js +1 -1
  52. package/dist/dependencies.json +6 -0
  53. package/dist/dfpAdServerVideo.js +1 -1
  54. package/dist/dspxBidAdapter.js +1 -1
  55. package/dist/eplanningAnalyticsAdapter.js +1 -1
  56. package/dist/eplanningBidAdapter.js +1 -1
  57. package/dist/finativeBidAdapter.js +1 -1
  58. package/dist/fintezaAnalyticsAdapter.js +1 -1
  59. package/dist/fluctBidAdapter.js +1 -1
  60. package/dist/ftrackIdSystem.js +1 -1
  61. package/dist/gdprEnforcement.js +1 -1
  62. package/dist/genericAnalyticsAdapter.js +1 -0
  63. package/dist/geoedgeRtdProvider.js +1 -1
  64. package/dist/glimpseBidAdapter.js +1 -1
  65. package/dist/glomexBidAdapter.js +1 -1
  66. package/dist/gmosspBidAdapter.js +1 -1
  67. package/dist/goldbachBidAdapter.js +1 -1
  68. package/dist/googleAnalyticsAdapter.js +1 -1
  69. package/dist/gravitoIdSystem.js +1 -1
  70. package/dist/gridBidAdapter.js +1 -1
  71. package/dist/gridNMBidAdapter.js +1 -1
  72. package/dist/growthCodeAnalyticsAdapter.js +1 -0
  73. package/dist/gumgumBidAdapter.js +1 -1
  74. package/dist/h12mediaBidAdapter.js +1 -1
  75. package/dist/hadronAnalyticsAdapter.js +1 -1
  76. package/dist/id5AnalyticsAdapter.js +1 -1
  77. package/dist/id5IdSystem.js +1 -1
  78. package/dist/impactifyBidAdapter.js +1 -1
  79. package/dist/improvedigitalBidAdapter.js +1 -1
  80. package/dist/inmarBidAdapter.js +1 -1
  81. package/dist/insticatorBidAdapter.js +1 -1
  82. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  83. package/dist/ixBidAdapter.js +1 -1
  84. package/dist/justpremiumBidAdapter.js +1 -1
  85. package/dist/jwplayerRtdProvider.js +1 -1
  86. package/dist/kargoAnalyticsAdapter.js +1 -1
  87. package/dist/kinessoIdSystem.js +1 -1
  88. package/dist/konduitAnalyticsAdapter.js +1 -1
  89. package/dist/kueezBidAdapter.js +1 -1
  90. package/dist/kueezRtbBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/lifestreetBidAdapter.js +1 -1
  93. package/dist/limelightDigitalBidAdapter.js +1 -1
  94. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  95. package/dist/liveIntentIdSystem.js +1 -1
  96. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  97. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  98. package/dist/logicadBidAdapter.js +1 -1
  99. package/dist/loglyliftBidAdapter.js +1 -1
  100. package/dist/lotamePanoramaIdSystem.js +1 -1
  101. package/dist/magniteAnalyticsAdapter.js +1 -1
  102. package/dist/malltvAnalyticsAdapter.js +1 -1
  103. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  104. package/dist/marsmediaBidAdapter.js +1 -1
  105. package/dist/mediafuseBidAdapter.js +1 -1
  106. package/dist/medianetAnalyticsAdapter.js +1 -1
  107. package/dist/mediasquareBidAdapter.js +1 -1
  108. package/dist/mgidBidAdapter.js +1 -1
  109. package/dist/minutemediaBidAdapter.js +1 -1
  110. package/dist/nexx360BidAdapter.js +1 -1
  111. package/dist/not-for-prod/prebid.js +200 -196
  112. package/dist/oguryBidAdapter.js +1 -1
  113. package/dist/onetagBidAdapter.js +1 -1
  114. package/dist/ooloAnalyticsAdapter.js +1 -1
  115. package/dist/openxAnalyticsAdapter.js +1 -1
  116. package/dist/optimonAnalyticsAdapter.js +1 -1
  117. package/dist/outbrainBidAdapter.js +1 -1
  118. package/dist/parrableIdSystem.js +1 -1
  119. package/dist/pbsExtensions.js +1 -1
  120. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  121. package/dist/pixfutureBidAdapter.js +1 -1
  122. package/dist/prebid-core.js +1 -1
  123. package/dist/prebidServerBidAdapter.js +1 -1
  124. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  125. package/dist/pubCommonId.js +1 -1
  126. package/dist/pubProvidedIdSystem.js +1 -1
  127. package/dist/publinkIdSystem.js +1 -1
  128. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  129. package/dist/pubmaticBidAdapter.js +1 -1
  130. package/dist/pubperfAnalyticsAdapter.js +1 -1
  131. package/dist/pubstackAnalyticsAdapter.js +1 -1
  132. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  133. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  134. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  135. package/dist/pxyzBidAdapter.js +1 -1
  136. package/dist/quantcastBidAdapter.js +1 -1
  137. package/dist/quantcastIdSystem.js +1 -1
  138. package/dist/rasBidAdapter.js +1 -1
  139. package/dist/readpeakBidAdapter.js +1 -1
  140. package/dist/realvuAnalyticsAdapter.js +1 -1
  141. package/dist/redtramBidAdapter.js +1 -0
  142. package/dist/relaidoBidAdapter.js +1 -1
  143. package/dist/relevantAnalyticsAdapter.js +1 -1
  144. package/dist/rhythmoneBidAdapter.js +1 -1
  145. package/dist/riseBidAdapter.js +1 -1
  146. package/dist/rivrAnalyticsAdapter.js +1 -1
  147. package/dist/roxotAnalyticsAdapter.js +1 -1
  148. package/dist/rtbhouseBidAdapter.js +1 -1
  149. package/dist/rtdModule.js +1 -1
  150. package/dist/rubiconAnalyticsAdapter.js +1 -1
  151. package/dist/rubiconBidAdapter.js +1 -1
  152. package/dist/s2sTesting.js +1 -1
  153. package/dist/scaleableAnalyticsAdapter.js +1 -1
  154. package/dist/schain.js +1 -1
  155. package/dist/seedingAllianceBidAdapter.js +1 -1
  156. package/dist/seedtagBidAdapter.js +1 -1
  157. package/dist/sharedIdSystem.js +1 -1
  158. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  159. package/dist/sharethroughBidAdapter.js +1 -1
  160. package/dist/shinezBidAdapter.js +1 -1
  161. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  162. package/dist/smaatoBidAdapter.js +1 -1
  163. package/dist/smartadserverBidAdapter.js +1 -1
  164. package/dist/smartxBidAdapter.js +1 -1
  165. package/dist/smilewantedBidAdapter.js +1 -1
  166. package/dist/sonobiAnalyticsAdapter.js +1 -1
  167. package/dist/sonobiBidAdapter.js +1 -1
  168. package/dist/sovrnAnalyticsAdapter.js +1 -1
  169. package/dist/sovrnBidAdapter.js +1 -1
  170. package/dist/sspBCBidAdapter.js +1 -1
  171. package/dist/staqAnalyticsAdapter.js +1 -1
  172. package/dist/sublimeBidAdapter.js +1 -1
  173. package/dist/synacormediaBidAdapter.js +1 -1
  174. package/dist/tapadIdSystem.js +1 -1
  175. package/dist/targetVideoBidAdapter.js +1 -1
  176. package/dist/teadsBidAdapter.js +1 -1
  177. package/dist/teadsIdSystem.js +1 -1
  178. package/dist/terceptAnalyticsAdapter.js +1 -1
  179. package/dist/trionBidAdapter.js +1 -1
  180. package/dist/tripleliftBidAdapter.js +1 -1
  181. package/dist/ttdBidAdapter.js +1 -1
  182. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  183. package/dist/underdogmediaBidAdapter.js +1 -1
  184. package/dist/undertoneBidAdapter.js +1 -1
  185. package/dist/userId.js +1 -1
  186. package/dist/vidazooBidAdapter.js +1 -1
  187. package/dist/videobyteBidAdapter.js +1 -1
  188. package/dist/visxBidAdapter.js +1 -1
  189. package/dist/vuukleBidAdapter.js +1 -1
  190. package/dist/weboramaRtdProvider.js +1 -1
  191. package/dist/widespaceBidAdapter.js +1 -1
  192. package/dist/winrBidAdapter.js +1 -1
  193. package/dist/yahoosspBidAdapter.js +1 -1
  194. package/dist/yandexBidAdapter.js +1 -1
  195. package/dist/yieldlabBidAdapter.js +1 -1
  196. package/dist/yieldliftBidAdapter.js +1 -1
  197. package/dist/yieldmoBidAdapter.js +1 -1
  198. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  199. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  200. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  201. package/integrationExamples/gpt/growthcode.html +134 -0
  202. package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
  203. package/modules/admaticBidAdapter.js +10 -1
  204. package/modules/admixerBidAdapter.js +1 -1
  205. package/modules/aidemBidAdapter.js +492 -0
  206. package/modules/aidemBidAdapter.md +187 -0
  207. package/modules/browsiRtdProvider.js +6 -4
  208. package/modules/bucksenseBidAdapter.js +1 -1
  209. package/modules/criteoBidAdapter.js +3 -3
  210. package/modules/eplanningBidAdapter.js +2 -6
  211. package/modules/fluctBidAdapter.js +5 -0
  212. package/modules/gdprEnforcement.js +26 -24
  213. package/modules/genericAnalyticsAdapter.js +157 -0
  214. package/modules/geoedgeRtdProvider.js +22 -0
  215. package/modules/glomexBidAdapter.js +2 -0
  216. package/modules/gravitoIdSystem.js +3 -4
  217. package/modules/gridBidAdapter.js +1 -1
  218. package/modules/gridNMBidAdapter.js +1 -1
  219. package/modules/growthCodeAnalyticsAdapter.js +176 -0
  220. package/modules/growthCodeAnalyticsAdapter.md +41 -0
  221. package/modules/impactifyBidAdapter.js +19 -1
  222. package/modules/jwplayerRtdProvider.js +1 -2
  223. package/modules/limelightDigitalBidAdapter.js +1 -1
  224. package/modules/minutemediaBidAdapter.md +3 -3
  225. package/modules/nexx360BidAdapter.js +264 -138
  226. package/modules/pubCommonId.js +2 -1
  227. package/modules/pubProvidedIdSystem.js +2 -0
  228. package/modules/rasBidAdapter.js +8 -3
  229. package/modules/rasBidAdapter.md +16 -15
  230. package/modules/redtramBidAdapter.js +155 -0
  231. package/modules/redtramBidAdapter.md +33 -0
  232. package/modules/riseBidAdapter.js +15 -0
  233. package/modules/riseBidAdapter.md +3 -3
  234. package/modules/rtbhouseBidAdapter.js +90 -29
  235. package/modules/rubiconBidAdapter.js +2 -1
  236. package/modules/seedtagBidAdapter.js +67 -56
  237. package/modules/seedtagBidAdapter.md +60 -0
  238. package/modules/sharedIdSystem.js +3 -1
  239. package/modules/smartxBidAdapter.js +1 -1
  240. package/modules/smnBidAdapter.md +52 -0
  241. package/modules/tripleliftBidAdapter.js +1 -1
  242. package/modules/ttdBidAdapter.js +4 -0
  243. package/modules/vidazooBidAdapter.js +11 -1
  244. package/modules/yandexBidAdapter.js +85 -19
  245. package/modules/yandexBidAdapter.md +7 -7
  246. package/modules/yieldlabBidAdapter.js +10 -4
  247. package/modules/yieldliftBidAdapter.js +3 -3
  248. package/package.json +1 -1
  249. package/src/auction.js +19 -3
  250. package/src/consentHandler.js +8 -0
  251. package/src/events.js +4 -0
  252. package/src/native.js +31 -20
  253. package/src/refererDetection.js +6 -1
  254. package/src/storageManager.js +6 -3
  255. package/test/helpers/analytics.js +34 -0
  256. package/test/mocks/analyticsStub.js +3 -1
  257. package/test/spec/AnalyticsAdapter_spec.js +119 -116
  258. package/test/spec/auctionmanager_spec.js +86 -0
  259. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
  260. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
  261. package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
  262. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
  263. package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
  264. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
  265. package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
  266. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
  267. package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
  268. package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
  269. package/test/spec/modules/fpdModule_spec.js +1 -1
  270. package/test/spec/modules/gdprEnforcement_spec.js +115 -68
  271. package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
  272. package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
  273. package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
  274. package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
  275. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
  276. package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
  277. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
  278. package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
  279. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
  280. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
  281. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
  282. package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
  283. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
  284. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
  285. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
  286. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
  287. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
  288. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
  289. package/test/spec/modules/rasBidAdapter_spec.js +5 -1
  290. package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
  291. package/test/spec/modules/riseBidAdapter_spec.js +24 -0
  292. package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
  293. package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
  294. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
  295. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
  296. package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
  297. package/test/spec/modules/ttdBidAdapter_spec.js +14 -0
  298. package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
  299. package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
  300. package/test/spec/modules/yieldlabBidAdapter_spec.js +49 -20
  301. package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
  302. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
  303. package/test/spec/native_spec.js +68 -56
  304. package/test/spec/refererDetection_spec.js +45 -7
  305. package/test/spec/unit/core/storageManager_spec.js +2 -1
@@ -0,0 +1,664 @@
1
+ import {expect} from 'chai';
2
+ import {setEndPoints, spec} from 'modules/aidemBidAdapter.js';
3
+ import * as utils from '../../../src/utils';
4
+ import {deepSetValue} from '../../../src/utils';
5
+ import {server} from '../../mocks/xhr';
6
+ import {config} from '../../../src/config';
7
+ import {NATIVE} from '../../../src/mediaTypes.js';
8
+
9
+ // Full banner + Full Video + Basic Banner + Basic Video
10
+ const VALID_BIDS = [
11
+ {
12
+ bidder: 'aidem',
13
+ params: {
14
+ siteId: '301491',
15
+ publisherId: '3021491',
16
+ placementId: 13144370,
17
+ },
18
+ mediaTypes: {
19
+ banner: {
20
+ sizes: [[300, 250], [300, 600]],
21
+ }
22
+ },
23
+ },
24
+ {
25
+ bidder: 'aidem',
26
+ params: {
27
+ siteId: '301491',
28
+ publisherId: '3021491',
29
+ placementId: 13144370,
30
+ },
31
+ mediaTypes: {
32
+ video: {
33
+ context: 'instream',
34
+ minduration: 7,
35
+ maxduration: 30,
36
+ playerSize: [640, 480],
37
+ mimes: ['video/mp4'],
38
+ protocols: [2]
39
+ }
40
+ },
41
+ },
42
+ ]
43
+
44
+ const INVALID_BIDS = [
45
+ {
46
+ bidder: 'aidem',
47
+ params: {
48
+ siteId: '3014912'
49
+ }
50
+ },
51
+ {
52
+ bidder: 'aidem',
53
+ mediaTypes: {
54
+ banner: {
55
+ sizes: [[300, 250], [300, 600]],
56
+ }
57
+ },
58
+ params: {
59
+ siteId: '3014912',
60
+ }
61
+ },
62
+ {
63
+ bidder: 'aidem',
64
+ mediaTypes: {
65
+ banner: {
66
+ sizes: [[300, 250], [300, 600]],
67
+ }
68
+ },
69
+ params: {
70
+ publisherId: '3014912',
71
+ }
72
+ },
73
+ {
74
+ bidder: 'aidem',
75
+ params: {
76
+ siteId: '3014912',
77
+ member: '301e4912'
78
+ }
79
+ },
80
+ {
81
+ bidder: 'aidem',
82
+ params: {
83
+ siteId: '3014912',
84
+ invCode: '3014912'
85
+ }
86
+ },
87
+ {
88
+ bidder: 'aidem',
89
+ mediaType: NATIVE,
90
+ params: {
91
+ siteId: '3014912'
92
+ }
93
+ },
94
+ {
95
+ bidder: 'aidem',
96
+ mediaTypes: {
97
+ banner: {}
98
+ },
99
+ },
100
+ {
101
+ bidder: 'aidem',
102
+ mediaTypes: {
103
+ video: {
104
+ placement: 1,
105
+ minduration: 7,
106
+ maxduration: 30,
107
+ mimes: ['video/mp4'],
108
+ protocols: [2]
109
+ }
110
+ },
111
+ params: {
112
+ siteId: '301491',
113
+ placementId: 13144370,
114
+ },
115
+ },
116
+ {
117
+ bidder: 'aidem',
118
+ mediaTypes: {
119
+ video: {
120
+ minduration: 7,
121
+ maxduration: 30,
122
+ playerSize: [640, 480],
123
+ mimes: ['video/mp4'],
124
+ protocols: [2]
125
+ }
126
+ },
127
+ params: {
128
+ siteId: '301491',
129
+ placementId: 13144370,
130
+ },
131
+ },
132
+ {
133
+ bidder: 'aidem',
134
+ mediaTypes: {
135
+ video: {
136
+ minduration: 7,
137
+ maxduration: 30,
138
+ playerSize: [640, 480],
139
+ mimes: ['video/mp4'],
140
+ protocols: [2],
141
+ placement: 1
142
+ }
143
+ },
144
+ params: {
145
+ siteId: '301491',
146
+ placementId: 13144370,
147
+ video: {
148
+ size: [480, 40]
149
+ }
150
+ },
151
+ },
152
+ ]
153
+
154
+ const DEFAULT_VALID_BANNER_REQUESTS = [
155
+ {
156
+ adUnitCode: 'test-div',
157
+ auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
158
+ bidId: '22c4871113f461',
159
+ bidder: 'aidem',
160
+ bidderRequestId: '15246a574e859f',
161
+ mediaTypes: {
162
+ banner: {
163
+ sizes: [
164
+ [ 300, 250 ],
165
+ [ 300, 600 ]
166
+ ]
167
+ }
168
+ },
169
+ params: {
170
+ siteId: 1,
171
+ placementId: 13144370
172
+ },
173
+ src: 'client',
174
+ transactionId: '54a58774-7a41-494e-9aaf-fa7b79164f0c'
175
+ }
176
+ ];
177
+
178
+ const DEFAULT_VALID_VIDEO_REQUESTS = [
179
+ {
180
+ adUnitCode: 'test-div',
181
+ auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
182
+ bidId: '22c4871113f461',
183
+ bidder: 'aidem',
184
+ bidderRequestId: '15246a574e859f',
185
+ mediaTypes: {
186
+ video: {
187
+ minduration: 7,
188
+ maxduration: 30,
189
+ playerSize: [640, 480],
190
+ mimes: ['video/mp4'],
191
+ protocols: [2]
192
+ }
193
+ },
194
+ params: {
195
+ siteId: 1,
196
+ placementId: 13144370
197
+ },
198
+ src: 'client',
199
+ transactionId: '54a58774-7a41-494e-9aaf-fa7b79164f0c'
200
+ }
201
+ ];
202
+
203
+ const VALID_BIDDER_REQUEST = {
204
+ auctionId: '6e9b46c3-65a8-46ea-89f4-c5071110c85c',
205
+ bidderCode: 'aidem',
206
+ bidderRequestId: '170ea5d2b1d073',
207
+ refererInfo: {
208
+ page: 'test-page',
209
+ domain: 'test-domain',
210
+ ref: 'test-referer'
211
+ },
212
+ }
213
+
214
+ // Add mediatype
215
+ const SERVER_RESPONSE_BANNER = {
216
+ body: {
217
+ id: 'efa1930a-bc3e-4fd0-8368-08bc40236b4f',
218
+ bid: [
219
+ // BANNER
220
+ {
221
+ 'id': '2e614be960ee1d',
222
+ 'impid': '2e614be960ee1d',
223
+ 'price': 7.91,
224
+ 'mediatype': 'banner',
225
+ 'adid': '24277955',
226
+ 'adm': 'creativity_banner',
227
+ 'adomain': [
228
+ 'aidem.com'
229
+ ],
230
+ 'iurl': 'http://www.aidem.com',
231
+ 'cat': [],
232
+ 'cid': '4193561',
233
+ 'crid': '24277955',
234
+ 'w': 300,
235
+ 'h': 250,
236
+ 'ext': {
237
+ 'dspid': 85,
238
+ 'advbrandid': 1246,
239
+ 'advbrand': 'AIDEM'
240
+ }
241
+ },
242
+ ],
243
+ cur: 'USD'
244
+ },
245
+ }
246
+
247
+ const SERVER_RESPONSE_VIDEO = {
248
+ body: {
249
+ id: 'efa1930a-bc3e-4fd0-8368-08bc40236b4f',
250
+ bid: [
251
+ // VIDEO
252
+ {
253
+ 'id': '2876a29392a47c',
254
+ 'impid': '2876a29392a47c',
255
+ 'price': 7.93,
256
+ 'mediatype': 'video',
257
+ 'adid': '24277955',
258
+ 'adm': 'https://hermes.aidemsrv.com/vast-tag/cl9mzhhd502uq09l720uegb02?auction_id={{AUCTION_ID}}&cachebuster={{CACHEBUSTER}}',
259
+ 'adomain': [
260
+ 'aidem.com'
261
+ ],
262
+ 'iurl': 'http://www.aidem.com',
263
+ 'cat': [],
264
+ 'cid': '4193561',
265
+ 'crid': '24277955',
266
+ 'w': 640,
267
+ 'h': 480,
268
+ 'ext': {
269
+ 'dspid': 85,
270
+ 'advbrandid': 1246,
271
+ 'advbrand': 'AIDEM'
272
+ }
273
+ }
274
+ ],
275
+ cur: 'USD'
276
+ },
277
+ }
278
+
279
+ const WIN_NOTICE = {
280
+ 'adId': '3a20ee5dc78c1e',
281
+ 'adUnitCode': 'div-gpt-ad-1460505748561-0',
282
+ 'creativeId': '24277955',
283
+ 'cpm': 1,
284
+ 'netRevenue': false,
285
+ 'adserverTargeting': {
286
+ 'hb_bidder': 'aidem',
287
+ 'hb_adid': '3a20ee5dc78c1e',
288
+ 'hb_pb': '1.00',
289
+ 'hb_size': '300x250',
290
+ 'hb_source': 'client',
291
+ 'hb_format': 'banner',
292
+ 'hb_adomain': 'tenutabene.it'
293
+ },
294
+ 'auctionId': '85864730-6cbc-4e56-bc3c-a4a6596dca5b',
295
+ 'currency': [
296
+ 'USD'
297
+ ],
298
+ 'mediaType': 'banner',
299
+ 'size': '300x250',
300
+ 'width': 300,
301
+ 'height': 250,
302
+ 'status': 'rendered',
303
+ 'transactionId': 'ce089116-4251-45c3-bdbb-3a03cb13816b',
304
+ 'ttl': 300,
305
+ 'requestTimestamp': 1666796241007,
306
+ 'responseTimestamp': 1666796241021,
307
+ metrics: {
308
+ getMetrics() {
309
+ return {
310
+
311
+ }
312
+ }
313
+ }
314
+ }
315
+
316
+ const ERROR_NOTICE = {
317
+ 'message': 'Prebid.js: Server call for aidem failed.',
318
+ 'url': 'http%3A%2F%2Flocalhost%3A9999%2FintegrationExamples%2Fgpt%2Fhello_world.html%3Fpbjs_debug%3Dtrue',
319
+ 'auctionId': 'b57faab7-23f7-4b63-90db-67b259d20db7',
320
+ 'bidderRequestId': '1c53857d1ce616',
321
+ 'timeout': 1000,
322
+ 'bidderCode': 'aidem',
323
+ metrics: {
324
+ getMetrics() {
325
+ return {
326
+
327
+ }
328
+ }
329
+ }
330
+ }
331
+
332
+ describe('Aidem adapter', () => {
333
+ describe('isBidRequestValid', () => {
334
+ it('should return true for each valid bid requests', function () {
335
+ // spec.isBidRequestValid()
336
+ VALID_BIDS.forEach((value, index) => {
337
+ expect(spec.isBidRequestValid(value)).to.be.true
338
+ })
339
+ });
340
+
341
+ it('should return false for each invalid bid requests', function () {
342
+ // spec.isBidRequestValid()
343
+ INVALID_BIDS.forEach((value, index) => {
344
+ expect(spec.isBidRequestValid(value)).to.be.false
345
+ })
346
+ });
347
+
348
+ it('should return true if valid banner sizes are specified in params as single array', function () {
349
+ // spec.isBidRequestValid()
350
+ const validBannerRequest = utils.deepClone(VALID_BIDS[0])
351
+ deepSetValue(validBannerRequest.params, 'banner.size', [300, 250])
352
+ expect(spec.isBidRequestValid(validBannerRequest)).to.be.true
353
+ });
354
+
355
+ it('should return true if valid banner sizes are specified in params as array of array', function () {
356
+ // spec.isBidRequestValid()
357
+ const validBannerRequest = utils.deepClone(VALID_BIDS[0])
358
+ deepSetValue(validBannerRequest.params, 'banner.size', [[300, 600]])
359
+ expect(spec.isBidRequestValid(validBannerRequest)).to.be.true
360
+ });
361
+
362
+ it('should return true if valid video sizes are specified in params as single array', function () {
363
+ // spec.isBidRequestValid()
364
+ const validVideoRequest = utils.deepClone(VALID_BIDS[1])
365
+ deepSetValue(validVideoRequest.params, 'video.size', [640, 480])
366
+ expect(spec.isBidRequestValid(validVideoRequest)).to.be.true
367
+ });
368
+ });
369
+
370
+ describe('buildRequests', () => {
371
+ it('should match server requirements', () => {
372
+ const requests = spec.buildRequests(DEFAULT_VALID_BANNER_REQUESTS, VALID_BIDDER_REQUEST);
373
+ expect(requests).to.be.an('object');
374
+ expect(requests.method).to.be.a('string')
375
+ expect(requests.data).to.be.a('string')
376
+ expect(requests.options).to.be.an('object').that.have.a.property('withCredentials')
377
+ });
378
+
379
+ it('should have a well formatted banner payload', () => {
380
+ const requests = spec.buildRequests(DEFAULT_VALID_BANNER_REQUESTS, VALID_BIDDER_REQUEST);
381
+ const payload = JSON.parse(requests.data)
382
+ expect(payload).to.be.a('object').that.has.all.keys(
383
+ 'id', 'imp', 'device', 'cur', 'tz', 'regs', 'site', 'environment', 'at'
384
+ )
385
+ expect(payload.imp).to.be.a('array').that.has.lengthOf(DEFAULT_VALID_BANNER_REQUESTS.length)
386
+
387
+ expect(payload.imp[0]).to.be.a('object').that.has.all.keys(
388
+ 'banner', 'id', 'mediatype', 'imp_ext', 'tid'
389
+ )
390
+ expect(payload.imp[0].banner).to.be.a('object').that.has.all.keys(
391
+ 'format', 'topframe'
392
+ )
393
+ });
394
+
395
+ it('should have a well formatted video payload', () => {
396
+ const requests = spec.buildRequests(DEFAULT_VALID_VIDEO_REQUESTS, VALID_BIDDER_REQUEST);
397
+ const payload = JSON.parse(requests.data)
398
+ expect(payload).to.be.a('object').that.has.all.keys(
399
+ 'id', 'imp', 'device', 'cur', 'tz', 'regs', 'site', 'environment', 'at'
400
+ )
401
+ expect(payload.imp).to.be.a('array').that.has.lengthOf(DEFAULT_VALID_VIDEO_REQUESTS.length)
402
+
403
+ expect(payload.imp[0]).to.be.a('object').that.has.all.keys(
404
+ 'video', 'id', 'mediatype', 'imp_ext', 'tid'
405
+ )
406
+ expect(payload.imp[0].video).to.be.a('object').that.has.all.keys(
407
+ 'format', 'mimes', 'minDuration', 'maxDuration', 'protocols'
408
+ )
409
+ });
410
+
411
+ it('should have a well formatted bid floor payload if configured', () => {
412
+ const validBannerRequests = utils.deepClone(DEFAULT_VALID_BANNER_REQUESTS)
413
+ validBannerRequests[0].params.floor = {
414
+ value: 1.98,
415
+ currency: 'USD'
416
+ }
417
+ const requests = spec.buildRequests(validBannerRequests, VALID_BIDDER_REQUEST);
418
+ const payload = JSON.parse(requests.data)
419
+ const { floor } = payload.imp[0]
420
+ expect(floor).to.be.a('object').that.has.all.keys(
421
+ 'value', 'currency'
422
+ )
423
+ });
424
+ })
425
+
426
+ describe('interpretResponse', () => {
427
+ it('should return a valid bid array with a banner bid', () => {
428
+ const response = utils.deepClone(SERVER_RESPONSE_BANNER)
429
+ const interpreted = spec.interpretResponse(response)
430
+ expect(interpreted).to.be.a('array').that.has.lengthOf(1)
431
+ interpreted.forEach(value => {
432
+ expect(value).to.be.a('object').that.has.all.keys(
433
+ 'ad', 'cpm', 'creativeId', 'currency', 'height', 'mediaType', 'meta', 'netRevenue', 'requestId', 'ttl', 'width', 'dealId'
434
+ )
435
+ })
436
+ });
437
+
438
+ it('should return a valid bid array with a banner bid', () => {
439
+ const response = utils.deepClone(SERVER_RESPONSE_VIDEO)
440
+ const interpreted = spec.interpretResponse(response)
441
+ expect(interpreted).to.be.a('array').that.has.lengthOf(1)
442
+ interpreted.forEach(value => {
443
+ expect(value).to.be.a('object').that.has.all.keys(
444
+ 'vastUrl', 'cpm', 'creativeId', 'currency', 'height', 'mediaType', 'meta', 'netRevenue', 'requestId', 'ttl', 'width', 'dealId'
445
+ )
446
+ })
447
+ });
448
+
449
+ it('should return a valid bid array with netRevenue', () => {
450
+ const response = utils.deepClone(SERVER_RESPONSE_BANNER)
451
+ response.body.bid[0].isNet = true
452
+ const interpreted = spec.interpretResponse(response)
453
+ expect(interpreted).to.be.a('array').that.has.lengthOf(1)
454
+ expect(interpreted[0].netRevenue).to.be.true
455
+ });
456
+
457
+ it('should return an empty bid array if one of seatbid entry is missing price property', () => {
458
+ const response = utils.deepClone(SERVER_RESPONSE_BANNER)
459
+ delete response.body.bid[0].price
460
+ const interpreted = spec.interpretResponse(response)
461
+ expect(interpreted).to.be.a('array').that.has.lengthOf(0)
462
+ });
463
+
464
+ it('should return an empty bid array if one of seatbid entry is missing adm property', () => {
465
+ const response = utils.deepClone(SERVER_RESPONSE_BANNER)
466
+ delete response.body.bid[0].adm
467
+ const interpreted = spec.interpretResponse(response)
468
+ expect(interpreted).to.be.a('array').that.has.lengthOf(0)
469
+ });
470
+ })
471
+
472
+ describe('onBidWon', () => {
473
+ it(`should exists and type function`, function () {
474
+ expect(spec.onBidWon).to.exist.and.to.be.a('function')
475
+ });
476
+
477
+ it(`should send a valid bid won notice`, function () {
478
+ spec.onBidWon(WIN_NOTICE);
479
+ // server.respondWith('POST', WIN_EVENT_URL, [
480
+ // 400, {'Content-Type': 'application/json'}, )
481
+ // ]);
482
+ expect(server.requests.length).to.equal(1);
483
+ });
484
+ });
485
+
486
+ describe('onBidderError', () => {
487
+ it(`should exists and type function`, function () {
488
+ expect(spec.onBidderError).to.exist.and.to.be.a('function')
489
+ });
490
+
491
+ it(`should send a valid error notice`, function () {
492
+ spec.onBidderError({ bidderRequest: ERROR_NOTICE })
493
+ expect(server.requests.length).to.equal(1);
494
+ const body = JSON.parse(server.requests[0].requestBody)
495
+ expect(body).to.be.a('object').that.has.all.keys('message', 'auctionId', 'bidderRequestId', 'url', 'metrics')
496
+ // const { bids } = JSON.parse(server.requests[0].requestBody)
497
+ // expect(bids).to.be.a('array').that.has.lengthOf(1)
498
+ // _each(bids, (bid) => {
499
+ // expect(bid).to.be.a('object').that.has.all.keys('adUnitCode', 'auctionId', 'bidId', 'bidderRequestId', 'transactionId', 'metrics')
500
+ // })
501
+ });
502
+ });
503
+
504
+ describe('setEndPoints', () => {
505
+ it(`should exists and type function`, function () {
506
+ expect(setEndPoints).to.exist.and.to.be.a('function')
507
+ });
508
+
509
+ it(`should not modify default endpoints`, function () {
510
+ const endpoints = setEndPoints()
511
+ const requestURL = new URL(endpoints.request)
512
+ const winNoticeURL = new URL(endpoints.notice.win)
513
+ const timeoutNoticeURL = new URL(endpoints.notice.timeout)
514
+ const errorNoticeURL = new URL(endpoints.notice.error)
515
+
516
+ expect(requestURL.host).to.equal('zero.aidemsrv.com')
517
+ expect(winNoticeURL.host).to.equal('zero.aidemsrv.com')
518
+ expect(timeoutNoticeURL.host).to.equal('zero.aidemsrv.com')
519
+ expect(errorNoticeURL.host).to.equal('zero.aidemsrv.com')
520
+
521
+ expect(decodeURIComponent(requestURL.pathname)).to.equal('/bid/request')
522
+ expect(decodeURIComponent(winNoticeURL.pathname)).to.equal('/notice/win')
523
+ expect(decodeURIComponent(timeoutNoticeURL.pathname)).to.equal('/notice/timeout')
524
+ expect(decodeURIComponent(errorNoticeURL.pathname)).to.equal('/notice/error')
525
+ });
526
+
527
+ it(`should not change request endpoint`, function () {
528
+ const endpoints = setEndPoints('default')
529
+ const requestURL = new URL(endpoints.request)
530
+ expect(decodeURIComponent(requestURL.pathname)).to.equal('/bid/request')
531
+ });
532
+
533
+ it(`should change to local env`, function () {
534
+ const endpoints = setEndPoints('local')
535
+ const requestURL = new URL(endpoints.request)
536
+ const winNoticeURL = new URL(endpoints.notice.win)
537
+ const timeoutNoticeURL = new URL(endpoints.notice.timeout)
538
+ const errorNoticeURL = new URL(endpoints.notice.error)
539
+
540
+ expect(requestURL.host).to.equal('127.0.0.1:8787')
541
+ expect(winNoticeURL.host).to.equal('127.0.0.1:8787')
542
+ expect(timeoutNoticeURL.host).to.equal('127.0.0.1:8787')
543
+ expect(errorNoticeURL.host).to.equal('127.0.0.1:8787')
544
+ });
545
+
546
+ it(`should add a path prefix`, function () {
547
+ const endpoints = setEndPoints('local', '/path')
548
+ const requestURL = new URL(endpoints.request)
549
+ const winNoticeURL = new URL(endpoints.notice.win)
550
+ const timeoutNoticeURL = new URL(endpoints.notice.timeout)
551
+ const errorNoticeURL = new URL(endpoints.notice.error)
552
+
553
+ expect(decodeURIComponent(requestURL.pathname)).to.equal('/path/bid/request')
554
+ expect(decodeURIComponent(winNoticeURL.pathname)).to.equal('/path/notice/win')
555
+ expect(decodeURIComponent(timeoutNoticeURL.pathname)).to.equal('/path/notice/timeout')
556
+ expect(decodeURIComponent(errorNoticeURL.pathname)).to.equal('/path/notice/error')
557
+ });
558
+
559
+ it(`should add a path prefix and change request endpoint`, function () {
560
+ const endpoints = setEndPoints('local', '/path')
561
+ const requestURL = new URL(endpoints.request)
562
+ const winNoticeURL = new URL(endpoints.notice.win)
563
+ const timeoutNoticeURL = new URL(endpoints.notice.timeout)
564
+ const errorNoticeURL = new URL(endpoints.notice.error)
565
+
566
+ expect(decodeURIComponent(requestURL.pathname)).to.equal('/path/bid/request')
567
+ expect(decodeURIComponent(winNoticeURL.pathname)).to.equal('/path/notice/win')
568
+ expect(decodeURIComponent(timeoutNoticeURL.pathname)).to.equal('/path/notice/timeout')
569
+ expect(decodeURIComponent(errorNoticeURL.pathname)).to.equal('/path/notice/error')
570
+ });
571
+ });
572
+
573
+ describe('config', () => {
574
+ beforeEach(() => {
575
+ config.setConfig({
576
+ aidem: {
577
+ env: 'main'
578
+ }
579
+ });
580
+ })
581
+
582
+ it(`should not override default endpoints`, function () {
583
+ config.setConfig({
584
+ aidem: {
585
+ env: 'unknown',
586
+ path: '/test'
587
+ }
588
+ });
589
+ const { url } = spec.buildRequests(DEFAULT_VALID_BANNER_REQUESTS, VALID_BIDDER_REQUEST);
590
+ const requestURL = new URL(url)
591
+ expect(requestURL.host).to.equal('zero.aidemsrv.com')
592
+ });
593
+
594
+ it(`should set local endpoints`, function () {
595
+ config.setConfig({
596
+ aidem: {
597
+ env: 'local',
598
+ path: '/test'
599
+ }
600
+ });
601
+ const { url } = spec.buildRequests(DEFAULT_VALID_BANNER_REQUESTS, VALID_BIDDER_REQUEST);
602
+ const requestURL = new URL(url)
603
+ expect(requestURL.host).to.equal('127.0.0.1:8787')
604
+ });
605
+
606
+ it(`should set coppa`, function () {
607
+ config.setConfig({
608
+ coppa: true
609
+ });
610
+ const { data } = spec.buildRequests(DEFAULT_VALID_BANNER_REQUESTS, VALID_BIDDER_REQUEST);
611
+ const request = JSON.parse(data)
612
+ expect(request.regs.coppa_applies).to.equal(true)
613
+ });
614
+
615
+ it(`should set gdpr to true`, function () {
616
+ config.setConfig({
617
+ consentManagement: {
618
+ gdpr: {
619
+ // any data here set gdpr to true
620
+ },
621
+ }
622
+ });
623
+ const { data } = spec.buildRequests(DEFAULT_VALID_BANNER_REQUESTS, VALID_BIDDER_REQUEST);
624
+ const request = JSON.parse(data)
625
+ expect(request.regs.gdpr_applies).to.equal(true)
626
+ });
627
+
628
+ it(`should set usp_consent string`, function () {
629
+ config.setConfig({
630
+ consentManagement: {
631
+ usp: {
632
+ cmpApi: 'static',
633
+ consentData: {
634
+ getUSPData: {
635
+ uspString: '1YYY'
636
+ }
637
+ }
638
+ }
639
+ }
640
+ });
641
+ const { data } = spec.buildRequests(DEFAULT_VALID_BANNER_REQUESTS, VALID_BIDDER_REQUEST);
642
+ const request = JSON.parse(data)
643
+ expect(request.regs.us_privacy).to.equal('1YYY')
644
+ });
645
+
646
+ it(`should not set usp_consent string`, function () {
647
+ config.setConfig({
648
+ consentManagement: {
649
+ usp: {
650
+ cmpApi: 'iab',
651
+ consentData: {
652
+ getUSPData: {
653
+ uspString: '1YYY'
654
+ }
655
+ }
656
+ }
657
+ }
658
+ });
659
+ const { data } = spec.buildRequests(DEFAULT_VALID_BANNER_REQUESTS, VALID_BIDDER_REQUEST);
660
+ const request = JSON.parse(data)
661
+ expect(request.regs.us_privacy).to.undefined
662
+ });
663
+ });
664
+ });
@@ -297,7 +297,6 @@ describe('BidWatch Analytics', function () {
297
297
  expect(message.auctionEnd[0]).to.have.property('bidderRequests').and.to.have.lengthOf(1);
298
298
  expect(message.auctionEnd[0].bidderRequests[0]).to.have.property('gdprConsent');
299
299
  expect(message.auctionEnd[0].bidderRequests[0].gdprConsent).not.to.have.property('vendorData');
300
- sinon.assert.callCount(bidwatchAnalytics.track, 4);
301
300
  });
302
301
 
303
302
  it('test bidWon', function() {
@@ -318,7 +317,6 @@ describe('BidWatch Analytics', function () {
318
317
  expect(message).not.to.have.property('ad');
319
318
  expect(message).to.have.property('adId')
320
319
  expect(message).to.have.property('cpmIncrement').and.to.equal(27.4276);
321
- sinon.assert.callCount(bidwatchAnalytics.track, 1);
322
320
  });
323
321
  });
324
322
  });
@@ -252,7 +252,8 @@ describe('browsi Real time data sub module', function () {
252
252
  })
253
253
  it('should send event if type is correct', function () {
254
254
  sendPageviewEvent('PAGEVIEW')
255
-
255
+ const pageViewEvent = new CustomEvent('browsi_pageview', {});
256
+ window.dispatchEvent(pageViewEvent);
256
257
  const expectedCall = {
257
258
  vendor: 'browsi',
258
259
  type: 'pageview',
@@ -1,5 +1,6 @@
1
1
  import concertAnalytics from 'modules/concertAnalyticsAdapter.js';
2
2
  import { expect } from 'chai';
3
+ import {expectEvents} from '../../helpers/analytics.js';
3
4
  const sinon = require('sinon');
4
5
  let adapterManager = require('src/adapterManager').default;
5
6
  let events = require('src/events');
@@ -46,10 +47,7 @@ describe('ConcertAnalyticsAdapter', function() {
46
47
 
47
48
  it('should catch all events', function() {
48
49
  sandbox.spy(concertAnalytics, 'track');
49
-
50
- fireBidEvents(events);
51
- // 5 Concert events + 1 Clean.io event
52
- sandbox.assert.callCount(concertAnalytics.track, 6);
50
+ expectEvents().to.beTrackedBy(concertAnalytics.track);
53
51
  });
54
52
 
55
53
  it('should report data for BID_RESPONSE, BID_WON events', function() {