prebid.js 7.26.0 → 7.28.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 (334) hide show
  1. package/.github/workflows/issue_tracker.yml +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/33acrossIdSystem.js +1 -1
  4. package/dist/adWMGAnalyticsAdapter.js +1 -1
  5. package/dist/adagioAnalyticsAdapter.js +1 -1
  6. package/dist/adagioBidAdapter.js +1 -1
  7. package/dist/adbookpspBidAdapter.js +1 -1
  8. package/dist/adgenerationBidAdapter.js +1 -1
  9. package/dist/adhashBidAdapter.js +1 -1
  10. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  11. package/dist/adlooxAdServerVideo.js +1 -1
  12. package/dist/adlooxAnalyticsAdapter.js +1 -1
  13. package/dist/adlooxRtdProvider.js +1 -1
  14. package/dist/admaticBidAdapter.js +1 -1
  15. package/dist/admixerBidAdapter.js +1 -1
  16. package/dist/adomikAnalyticsAdapter.js +1 -1
  17. package/dist/adrelevantisBidAdapter.js +1 -1
  18. package/dist/adtrgtmeBidAdapter.js +1 -1
  19. package/dist/adxcgAnalyticsAdapter.js +1 -1
  20. package/dist/adxcgBidAdapter.js +1 -1
  21. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  22. package/dist/aidemBidAdapter.js +1 -0
  23. package/dist/ajaBidAdapter.js +1 -1
  24. package/dist/amxBidAdapter.js +1 -1
  25. package/dist/amxIdSystem.js +1 -1
  26. package/dist/analyticsAdapter.js +1 -1
  27. package/dist/appierAnalyticsAdapter.js +1 -1
  28. package/dist/appnexusBidAdapter.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/atsAnalyticsAdapter.js +1 -1
  31. package/dist/axonixBidAdapter.js +1 -1
  32. package/dist/bidViewability.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bridgewellBidAdapter.js +1 -1
  37. package/dist/brightMountainMediaBidAdapter.js +1 -1
  38. package/dist/browsiRtdProvider.js +1 -1
  39. package/dist/bucksenseBidAdapter.js +1 -1
  40. package/dist/byDataAnalyticsAdapter.js +1 -1
  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/kargoBidAdapter.js +1 -1
  91. package/dist/kinessoIdSystem.js +1 -1
  92. package/dist/konduitAnalyticsAdapter.js +1 -1
  93. package/dist/kueezBidAdapter.js +1 -1
  94. package/dist/kueezRtbBidAdapter.js +1 -1
  95. package/dist/lassoBidAdapter.js +1 -1
  96. package/dist/lifestreetBidAdapter.js +1 -1
  97. package/dist/limelightDigitalBidAdapter.js +1 -1
  98. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  99. package/dist/liveIntentIdSystem.js +1 -1
  100. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  101. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  102. package/dist/logicadBidAdapter.js +1 -1
  103. package/dist/loglyliftBidAdapter.js +1 -1
  104. package/dist/lotamePanoramaIdSystem.js +1 -1
  105. package/dist/magniteAnalyticsAdapter.js +1 -1
  106. package/dist/malltvAnalyticsAdapter.js +1 -1
  107. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  108. package/dist/marsmediaBidAdapter.js +1 -1
  109. package/dist/mediafuseBidAdapter.js +1 -1
  110. package/dist/mediagoBidAdapter.js +1 -1
  111. package/dist/medianetAnalyticsAdapter.js +1 -1
  112. package/dist/mediasquareBidAdapter.js +1 -1
  113. package/dist/mgidBidAdapter.js +1 -1
  114. package/dist/minutemediaBidAdapter.js +1 -1
  115. package/dist/nexx360BidAdapter.js +1 -1
  116. package/dist/not-for-prod/prebid.js +206 -202
  117. package/dist/oguryBidAdapter.js +1 -1
  118. package/dist/onetagBidAdapter.js +1 -1
  119. package/dist/ooloAnalyticsAdapter.js +1 -1
  120. package/dist/openxAnalyticsAdapter.js +1 -1
  121. package/dist/optimonAnalyticsAdapter.js +1 -1
  122. package/dist/outbrainBidAdapter.js +1 -1
  123. package/dist/parrableIdSystem.js +1 -1
  124. package/dist/pbsExtensions.js +1 -1
  125. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  126. package/dist/pixfutureBidAdapter.js +1 -1
  127. package/dist/prebid-core.js +2 -2
  128. package/dist/prebidServerBidAdapter.js +1 -1
  129. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  130. package/dist/pubCommonId.js +1 -1
  131. package/dist/pubProvidedIdSystem.js +1 -1
  132. package/dist/publinkIdSystem.js +1 -1
  133. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  134. package/dist/pubmaticBidAdapter.js +1 -1
  135. package/dist/pubperfAnalyticsAdapter.js +1 -1
  136. package/dist/pubstackAnalyticsAdapter.js +1 -1
  137. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  138. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  139. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  140. package/dist/pxyzBidAdapter.js +1 -1
  141. package/dist/quantcastBidAdapter.js +1 -1
  142. package/dist/quantcastIdSystem.js +1 -1
  143. package/dist/rasBidAdapter.js +1 -1
  144. package/dist/readpeakBidAdapter.js +1 -1
  145. package/dist/realvuAnalyticsAdapter.js +1 -1
  146. package/dist/redtramBidAdapter.js +1 -0
  147. package/dist/relaidoBidAdapter.js +1 -1
  148. package/dist/relevantAnalyticsAdapter.js +1 -1
  149. package/dist/rhythmoneBidAdapter.js +1 -1
  150. package/dist/riseBidAdapter.js +1 -1
  151. package/dist/rivrAnalyticsAdapter.js +1 -1
  152. package/dist/roxotAnalyticsAdapter.js +1 -1
  153. package/dist/rtbhouseBidAdapter.js +1 -1
  154. package/dist/rtdModule.js +1 -1
  155. package/dist/rubiconAnalyticsAdapter.js +1 -1
  156. package/dist/rubiconBidAdapter.js +1 -1
  157. package/dist/s2sTesting.js +1 -1
  158. package/dist/scaleableAnalyticsAdapter.js +1 -1
  159. package/dist/schain.js +1 -1
  160. package/dist/seedingAllianceBidAdapter.js +1 -1
  161. package/dist/seedtagBidAdapter.js +1 -1
  162. package/dist/sharedIdSystem.js +1 -1
  163. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  164. package/dist/sharethroughBidAdapter.js +1 -1
  165. package/dist/shinezBidAdapter.js +1 -1
  166. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  167. package/dist/smaatoBidAdapter.js +1 -1
  168. package/dist/smartadserverBidAdapter.js +1 -1
  169. package/dist/smartxBidAdapter.js +1 -1
  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/targetVideoBidAdapter.js +1 -1
  182. package/dist/teadsBidAdapter.js +1 -1
  183. package/dist/teadsIdSystem.js +1 -1
  184. package/dist/terceptAnalyticsAdapter.js +1 -1
  185. package/dist/trionBidAdapter.js +1 -1
  186. package/dist/tripleliftBidAdapter.js +1 -1
  187. package/dist/ttdBidAdapter.js +1 -1
  188. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  189. package/dist/underdogmediaBidAdapter.js +1 -1
  190. package/dist/undertoneBidAdapter.js +1 -1
  191. package/dist/userId.js +1 -1
  192. package/dist/vidazooBidAdapter.js +1 -1
  193. package/dist/videobyteBidAdapter.js +1 -1
  194. package/dist/visxBidAdapter.js +1 -1
  195. package/dist/vuukleBidAdapter.js +1 -1
  196. package/dist/weboramaRtdProvider.js +1 -1
  197. package/dist/widespaceBidAdapter.js +1 -1
  198. package/dist/winrBidAdapter.js +1 -1
  199. package/dist/yahoosspBidAdapter.js +1 -1
  200. package/dist/yandexBidAdapter.js +1 -1
  201. package/dist/yieldlabBidAdapter.js +1 -1
  202. package/dist/yieldliftBidAdapter.js +1 -1
  203. package/dist/yieldmoBidAdapter.js +1 -1
  204. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  205. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  206. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  207. package/integrationExamples/gpt/growthcode.html +134 -0
  208. package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
  209. package/libraries/ortb2.5StrictTranslator/dsl.js +54 -0
  210. package/libraries/ortb2.5StrictTranslator/spec.js +81 -0
  211. package/libraries/ortb2.5StrictTranslator/translator.js +37 -0
  212. package/libraries/ortb2.5Translator/translator.js +82 -0
  213. package/modules/33acrossIdSystem.js +3 -0
  214. package/modules/adhashBidAdapter.js +115 -30
  215. package/modules/adhashBidAdapter.md +1 -3
  216. package/modules/admaticBidAdapter.js +10 -1
  217. package/modules/admixerBidAdapter.js +1 -1
  218. package/modules/aidemBidAdapter.js +492 -0
  219. package/modules/aidemBidAdapter.md +187 -0
  220. package/modules/browsiRtdProvider.js +6 -4
  221. package/modules/bucksenseBidAdapter.js +1 -1
  222. package/modules/criteoBidAdapter.js +3 -3
  223. package/modules/discoveryBidAdapter.js +3 -0
  224. package/modules/eplanningBidAdapter.js +2 -6
  225. package/modules/fluctBidAdapter.js +5 -0
  226. package/modules/gdprEnforcement.js +26 -24
  227. package/modules/genericAnalyticsAdapter.js +157 -0
  228. package/modules/geoedgeRtdProvider.js +22 -0
  229. package/modules/glomexBidAdapter.js +2 -0
  230. package/modules/gravitoIdSystem.js +3 -4
  231. package/modules/gridBidAdapter.js +1 -1
  232. package/modules/gridNMBidAdapter.js +1 -1
  233. package/modules/growthCodeAnalyticsAdapter.js +176 -0
  234. package/modules/growthCodeAnalyticsAdapter.md +41 -0
  235. package/modules/impactifyBidAdapter.js +19 -1
  236. package/modules/jwplayerRtdProvider.js +1 -2
  237. package/modules/kargoBidAdapter.js +1 -1
  238. package/modules/lassoBidAdapter.js +8 -4
  239. package/modules/limelightDigitalBidAdapter.js +1 -1
  240. package/modules/liveIntentIdSystem.js +1 -2
  241. package/modules/mediagoBidAdapter.js +2 -1
  242. package/modules/minutemediaBidAdapter.md +3 -3
  243. package/modules/nexx360BidAdapter.js +264 -138
  244. package/modules/openxBidAdapter.md +15 -14
  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/smartxBidAdapter.js +1 -1
  259. package/modules/smnBidAdapter.md +52 -0
  260. package/modules/taboolaBidAdapter.js +20 -7
  261. package/modules/tripleliftBidAdapter.js +1 -1
  262. package/modules/ttdBidAdapter.js +4 -0
  263. package/modules/vidazooBidAdapter.js +31 -8
  264. package/modules/yandexBidAdapter.js +85 -19
  265. package/modules/yandexBidAdapter.md +7 -7
  266. package/modules/yieldlabBidAdapter.js +10 -4
  267. package/modules/yieldliftBidAdapter.js +3 -3
  268. package/package.json +2 -2
  269. package/src/auction.js +30 -4
  270. package/src/consentHandler.js +8 -0
  271. package/src/constants.json +2 -1
  272. package/src/events.js +4 -0
  273. package/src/native.js +31 -20
  274. package/src/refererDetection.js +6 -1
  275. package/src/storageManager.js +6 -3
  276. package/test/helpers/analytics.js +34 -0
  277. package/test/helpers/refererDetectionHelper.js +88 -0
  278. package/test/mocks/analyticsStub.js +3 -1
  279. package/test/spec/AnalyticsAdapter_spec.js +119 -116
  280. package/test/spec/auctionmanager_spec.js +119 -1
  281. package/test/spec/modules/33acrossIdSystem_spec.js +4 -1
  282. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
  283. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
  284. package/test/spec/modules/adhashBidAdapter_spec.js +65 -11
  285. package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
  286. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
  287. package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
  288. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
  289. package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
  290. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
  291. package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
  292. package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
  293. package/test/spec/modules/fpdModule_spec.js +1 -1
  294. package/test/spec/modules/gdprEnforcement_spec.js +115 -68
  295. package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
  296. package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
  297. package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
  298. package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
  299. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
  300. package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
  301. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
  302. package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
  303. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
  304. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
  305. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
  306. package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
  307. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
  308. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
  309. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
  310. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
  311. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
  312. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
  313. package/test/spec/modules/rasBidAdapter_spec.js +5 -1
  314. package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
  315. package/test/spec/modules/riseBidAdapter_spec.js +24 -0
  316. package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
  317. package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
  318. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
  319. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
  320. package/test/spec/modules/taboolaBidAdapter_spec.js +39 -0
  321. package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
  322. package/test/spec/modules/ttdBidAdapter_spec.js +50 -9
  323. package/test/spec/modules/vidazooBidAdapter_spec.js +173 -27
  324. package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
  325. package/test/spec/modules/yieldlabBidAdapter_spec.js +49 -20
  326. package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
  327. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
  328. package/test/spec/native_spec.js +68 -56
  329. package/test/spec/ortb2.5StrictTranslator/dsl_spec.js +137 -0
  330. package/test/spec/ortb2.5StrictTranslator/spec_spec.js +358 -0
  331. package/test/spec/ortb2.5StrictTranslator/translator_spec.js +16 -0
  332. package/test/spec/ortb2.5Translator/translator_spec.js +64 -0
  333. package/test/spec/refererDetection_spec.js +46 -95
  334. package/test/spec/unit/core/storageManager_spec.js +2 -1
@@ -1,18 +1,17 @@
1
- import { expect } from 'chai';
1
+ import {expect} from 'chai';
2
2
  import * as events from 'src/events.js';
3
3
  import CONSTANTS from 'src/constants.json';
4
- import { server } from 'test/mocks/xhr.js';
4
+ import {server} from 'test/mocks/xhr.js';
5
5
  import {disableAjaxForAnalytics, enableAjaxForAnalytics} from '../mocks/analyticsStub.js';
6
+ import {clearEvents} from 'src/events.js';
7
+ import {
8
+ DEFAULT_EXCLUDE_EVENTS,
9
+ DEFAULT_INCLUDE_EVENTS,
10
+ setDebounceDelay
11
+ } from '../../libraries/analyticsAdapter/AnalyticsAdapter.js';
6
12
 
7
- const REQUEST_BIDS = CONSTANTS.EVENTS.REQUEST_BIDS;
8
- const BID_REQUESTED = CONSTANTS.EVENTS.BID_REQUESTED;
9
- const BID_RESPONSE = CONSTANTS.EVENTS.BID_RESPONSE;
10
13
  const BID_WON = CONSTANTS.EVENTS.BID_WON;
11
- const BID_TIMEOUT = CONSTANTS.EVENTS.BID_TIMEOUT;
12
- const AD_RENDER_FAILED = CONSTANTS.EVENTS.AD_RENDER_FAILED;
13
- const AD_RENDER_SUCCEEDED = CONSTANTS.EVENTS.AD_RENDER_SUCCEEDED;
14
- const AUCTION_DEBUG = CONSTANTS.EVENTS.AUCTION_DEBUG;
15
- const ADD_AD_UNITS = CONSTANTS.EVENTS.ADD_AD_UNITS;
14
+ const NO_BID = CONSTANTS.EVENTS.NO_BID;
16
15
 
17
16
  const AnalyticsAdapter = require('libraries/analyticsAdapter/AnalyticsAdapter.js').default;
18
17
  const config = {
@@ -35,6 +34,7 @@ FEATURE: Analytics Adapters API
35
34
 
36
35
  afterEach(function () {
37
36
  adapter.disableAnalytics();
37
+ clearEvents();
38
38
  });
39
39
 
40
40
  it('should track enable status in `enabled`', () => {
@@ -43,21 +43,21 @@ FEATURE: Analytics Adapters API
43
43
  expect(adapter.enabled).to.equal(true);
44
44
  adapter.disableAnalytics();
45
45
  expect(adapter.enabled).to.equal(false);
46
- })
46
+ });
47
47
 
48
48
  it(`SHOULD call the endpoint WHEN an event occurs that is to be tracked`, function () {
49
- const eventType = BID_REQUESTED;
50
- const args = { some: 'data' };
49
+ const eventType = BID_WON;
50
+ const args = {some: 'data'};
51
51
 
52
- adapter.track({ eventType, args });
52
+ adapter.track({eventType, args});
53
53
 
54
54
  let result = JSON.parse(server.requests[0].requestBody);
55
- expect(result).to.deep.equal({args: {some: 'data'}, eventType: 'bidRequested'});
55
+ expect(result).to.deep.equal({args: {some: 'data'}, eventType});
56
56
  });
57
57
 
58
58
  it(`SHOULD queue the event first and then track it WHEN an event occurs before tracking library is available`, function () {
59
- const eventType = BID_RESPONSE;
60
- const args = { wat: 'wot' };
59
+ const eventType = BID_WON;
60
+ const args = {wat: 'wot'};
61
61
 
62
62
  events.emit(eventType, args);
63
63
  adapter.enableAnalytics();
@@ -65,9 +65,58 @@ FEATURE: Analytics Adapters API
65
65
  // As now AUCTION_DEBUG is triggered for WARNINGS too, the BID_RESPONSE goes last in the array
66
66
  const index = server.requests.length - 1;
67
67
  let result = JSON.parse(server.requests[index].requestBody);
68
- expect(result).to.deep.equal({eventType: 'bidResponse', args: {wat: 'wot'}});
68
+ expect(result).to.deep.equal({eventType, args: {wat: 'wot'}});
69
69
  });
70
70
 
71
+ describe('event filters', () => {
72
+ function fireEvents() {
73
+ events.emit(BID_WON, {});
74
+ events.emit(NO_BID, {});
75
+ }
76
+ function getEvents(ev) {
77
+ return server.requests
78
+ .map(r => JSON.parse(r.requestBody))
79
+ .filter(r => r.eventType === ev)
80
+ }
81
+
82
+ Object.entries({
83
+ 'whitelist includeEvents': {
84
+ includeEvents: [BID_WON]
85
+ },
86
+ 'blacklist excludeEvents': {
87
+ excludeEvents: [NO_BID]
88
+ },
89
+ 'give precedence to exclude over include': {
90
+ includeEvents: [BID_WON, NO_BID],
91
+ excludeEvents: [NO_BID]
92
+ }
93
+ }).forEach(([t, config]) => {
94
+ it(`should ${t}`, () => {
95
+ fireEvents();
96
+ adapter.enableAnalytics(config);
97
+ expect(getEvents(BID_WON).length).to.eql(1);
98
+ expect(getEvents(NO_BID).length).to.eql(0);
99
+ fireEvents();
100
+ expect(getEvents(BID_WON).length).to.eql(2);
101
+ expect(getEvents(NO_BID).length).to.eql(0);
102
+ })
103
+ })
104
+ })
105
+
106
+ it('should prevent infinite loops when track triggers other events', () => {
107
+ let i = 0;
108
+ adapter.track = ((orig) => {
109
+ return function (event) {
110
+ i++;
111
+ orig.call(this, event);
112
+ events.emit(BID_WON, {})
113
+ }
114
+ })(adapter.track);
115
+ adapter.enableAnalytics(config);
116
+ events.emit(BID_WON, {});
117
+ expect(i >= 100).to.eql(false);
118
+ })
119
+
71
120
  describe(`WHEN an event occurs after enable analytics\n`, function () {
72
121
  beforeEach(function () {
73
122
  sinon.stub(events, 'getEvents').returns([]); // these tests shouldn't be affected by previous tests
@@ -77,108 +126,26 @@ FEATURE: Analytics Adapters API
77
126
  events.getEvents.restore();
78
127
  });
79
128
 
80
- it('SHOULD call global when a bidWon event occurs', function () {
81
- const eventType = BID_WON;
82
- const args = { more: 'info' };
83
-
84
- adapter.enableAnalytics();
85
- events.emit(eventType, args);
86
-
87
- let result = JSON.parse(server.requests[0].requestBody);
88
- expect(result).to.deep.equal({args: {more: 'info'}, eventType: 'bidWon'});
89
- });
90
-
91
- it('SHOULD call global when a adRenderFailed event occurs', function () {
92
- const eventType = AD_RENDER_FAILED;
93
- const args = { call: 'adRenderFailed' };
94
-
95
- adapter.enableAnalytics();
96
- events.emit(eventType, args);
97
-
98
- let result = JSON.parse(server.requests[0].requestBody);
99
- expect(result).to.deep.equal({args: {call: 'adRenderFailed'}, eventType: 'adRenderFailed'});
100
- });
101
-
102
- it('SHOULD call global when a adRenderSucceeded event occurs', function () {
103
- const eventType = AD_RENDER_SUCCEEDED;
104
- const args = { call: 'adRenderSucceeded' };
105
-
106
- adapter.enableAnalytics();
107
- events.emit(eventType, args);
108
-
109
- let result = JSON.parse(server.requests[0].requestBody);
110
- expect(result).to.deep.equal({args: {call: 'adRenderSucceeded'}, eventType: 'adRenderSucceeded'});
111
- });
112
-
113
- it('SHOULD call global when an auction debug event occurs', function () {
114
- const eventType = AUCTION_DEBUG;
115
- const args = { call: 'auctionDebug' };
116
-
117
- adapter.enableAnalytics();
118
- events.emit(eventType, args);
119
-
120
- let result = JSON.parse(server.requests[0].requestBody);
121
- expect(result).to.deep.equal({args: {call: 'auctionDebug'}, eventType: 'auctionDebug'});
122
- });
123
-
124
- it('SHOULD call global when an addAdUnits event occurs', function () {
125
- const eventType = ADD_AD_UNITS;
126
- const args = { call: 'addAdUnits' };
127
-
128
- adapter.enableAnalytics();
129
- events.emit(eventType, args);
130
-
131
- let result = JSON.parse(server.requests[0].requestBody);
132
- expect(result).to.deep.equal({args: {call: 'addAdUnits'}, eventType: 'addAdUnits'});
133
- });
134
-
135
- it('SHOULD call global when a requestBids event occurs', function () {
136
- const eventType = REQUEST_BIDS;
137
- const args = { call: 'request' };
138
-
139
- adapter.enableAnalytics();
140
- events.emit(eventType, args);
141
-
142
- let result = JSON.parse(server.requests[0].requestBody);
143
- expect(result).to.deep.equal({args: {call: 'request'}, eventType: 'requestBids'});
144
- });
145
-
146
- it('SHOULD call global when a bidRequest event occurs', function () {
147
- const eventType = BID_REQUESTED;
148
- const args = { call: 'request' };
149
-
150
- adapter.enableAnalytics();
151
- events.emit(eventType, args);
152
-
153
- let result = JSON.parse(server.requests[0].requestBody);
154
- expect(result).to.deep.equal({args: {call: 'request'}, eventType: 'bidRequested'});
155
- });
156
-
157
- it('SHOULD call global when a bidResponse event occurs', function () {
158
- const eventType = BID_RESPONSE;
159
- const args = { call: 'response' };
160
-
161
- adapter.enableAnalytics();
162
- events.emit(eventType, args);
163
-
164
- let result = JSON.parse(server.requests[0].requestBody);
165
- expect(result).to.deep.equal({args: {call: 'response'}, eventType: 'bidResponse'});
166
- });
167
-
168
- it('SHOULD call global when a bidTimeout event occurs', function () {
169
- const eventType = BID_TIMEOUT;
170
- const args = { call: 'timeout' };
129
+ Object.values(DEFAULT_INCLUDE_EVENTS).forEach(eventType => {
130
+ it(`SHOULD call global when a ${eventType} event occurs`, () => {
131
+ const args = {more: 'info'};
171
132
 
172
- adapter.enableAnalytics();
173
- events.emit(eventType, args);
133
+ adapter.enableAnalytics();
134
+ events.emit(eventType, args);
174
135
 
175
- let result = JSON.parse(server.requests[0].requestBody);
176
- expect(result).to.deep.equal({args: {call: 'timeout'}, eventType: 'bidTimeout'});
136
+ let result = JSON.parse(server.requests[server.requests.length - 1].requestBody);
137
+ sinon.assert.match(result, {
138
+ eventType,
139
+ args: {
140
+ more: 'info'
141
+ },
142
+ });
143
+ });
177
144
  });
178
145
 
179
146
  it('SHOULD NOT call global again when adapter.enableAnalytics is called with previous timeout', function () {
180
- const eventType = BID_TIMEOUT;
181
- const args = { call: 'timeout' };
147
+ const eventType = BID_WON;
148
+ const args = {call: 'timeout'};
182
149
 
183
150
  events.emit(eventType, args);
184
151
  adapter.enableAnalytics();
@@ -189,7 +156,7 @@ FEATURE: Analytics Adapters API
189
156
 
190
157
  describe(`AND sampling is enabled\n`, function () {
191
158
  const eventType = BID_WON;
192
- const args = { more: 'info' };
159
+ const args = {more: 'info'};
193
160
 
194
161
  beforeEach(function () {
195
162
  sinon.stub(Math, 'random').returns(0.5);
@@ -225,3 +192,39 @@ FEATURE: Analytics Adapters API
225
192
  });
226
193
  });
227
194
  });
195
+
196
+ describe('Analytics asynchronous event tracking', () => {
197
+ before(() => {
198
+ setDebounceDelay(100);
199
+ });
200
+ after(() => {
201
+ setDebounceDelay(0);
202
+ });
203
+
204
+ let adapter, clock;
205
+
206
+ beforeEach(() => {
207
+ clock = sinon.useFakeTimers();
208
+ adapter = new AnalyticsAdapter(config);
209
+ adapter.track = sinon.stub();
210
+ adapter.enableAnalytics({});
211
+ });
212
+
213
+ afterEach(() => {
214
+ clock.restore();
215
+ })
216
+
217
+ it('does not call track as long as events are coming', () => {
218
+ events.emit(BID_WON, {i: 0});
219
+ sinon.assert.notCalled(adapter.track);
220
+ clock.tick(10);
221
+ events.emit(BID_WON, {i: 1});
222
+ sinon.assert.notCalled(adapter.track);
223
+ clock.tick(10);
224
+ sinon.assert.notCalled(adapter.track);
225
+ clock.tick(100);
226
+ sinon.assert.calledTwice(adapter.track);
227
+ sinon.assert.calledWith(adapter.track.firstCall, {eventType: BID_WON, args: {i: 0}});
228
+ sinon.assert.calledWith(adapter.track.secondCall, {eventType: BID_WON, args: {i: 1}});
229
+ });
230
+ })
@@ -22,6 +22,7 @@ import 'modules/debugging/index.js' // some tests look for debugging side effect
22
22
  import {AuctionIndex} from '../../src/auctionIndex.js';
23
23
  import {expect} from 'chai';
24
24
  import {deepClone} from '../../src/utils.js';
25
+ import { IMAGE as ortbNativeRequest } from 'src/native.js';
25
26
 
26
27
  var assert = require('assert');
27
28
 
@@ -185,7 +186,8 @@ describe('auctionmanager.js', function () {
185
186
  source: 'client',
186
187
  mediaType: 'banner',
187
188
  meta: {
188
- advertiserDomains: ['adomain']
189
+ advertiserDomains: ['adomain'],
190
+ primaryCatId: 'IAB-test'
189
191
  }
190
192
  };
191
193
 
@@ -199,6 +201,7 @@ describe('auctionmanager.js', function () {
199
201
  expected[ CONSTANTS.TARGETING_KEYS.SOURCE ] = bid.source;
200
202
  expected[ CONSTANTS.TARGETING_KEYS.FORMAT ] = bid.mediaType;
201
203
  expected[ CONSTANTS.TARGETING_KEYS.ADOMAIN ] = bid.meta.advertiserDomains[0];
204
+ expected[ CONSTANTS.TARGETING_KEYS.ACAT ] = bid.meta.primaryCatId;
202
205
  if (bid.mediaType === 'video') {
203
206
  expected[ CONSTANTS.TARGETING_KEYS.UUID ] = bid.videoCacheKey;
204
207
  expected[ CONSTANTS.TARGETING_KEYS.CACHE_ID ] = bid.videoCacheKey;
@@ -289,6 +292,12 @@ describe('auctionmanager.js', function () {
289
292
  val: function (bidResponse) {
290
293
  return bidResponse.meta.advertiserDomains[0];
291
294
  }
295
+ },
296
+ {
297
+ key: CONSTANTS.TARGETING_KEYS.ACAT,
298
+ val: function (bidResponse) {
299
+ return bidResponse.meta.primaryCatId;
300
+ }
292
301
  }
293
302
  ]
294
303
 
@@ -366,6 +375,12 @@ describe('auctionmanager.js', function () {
366
375
  val: function (bidResponse) {
367
376
  return bidResponse.meta.advertiserDomains[0];
368
377
  }
378
+ },
379
+ {
380
+ key: CONSTANTS.TARGETING_KEYS.ACAT,
381
+ val: function (bidResponse) {
382
+ return bidResponse.meta.primaryCatId;
383
+ }
369
384
  }
370
385
  ]
371
386
 
@@ -454,6 +469,24 @@ describe('auctionmanager.js', function () {
454
469
  assert.deepEqual(response, expected);
455
470
  });
456
471
 
472
+ it('Should set targeting as expecting when pbs is enabled', function () {
473
+ config.setConfig({
474
+ s2sConfig: {
475
+ accountId: '1',
476
+ enabled: true,
477
+ defaultVendor: 'appnexus',
478
+ bidders: ['appnexus'],
479
+ timeout: 1000,
480
+ adapter: 'prebidServer'
481
+ }
482
+ });
483
+
484
+ $$PREBID_GLOBAL$$.bidderSettings = {};
485
+ let expected = getDefaultExpected(bid);
486
+ let response = getKeyValueTargetingPairs(bid.bidderCode, bid);
487
+ assert.deepEqual(response, expected);
488
+ });
489
+
457
490
  it('Custom bidCpmAdjustment for one bidder and inherit standard but doesn\'t use standard bidCpmAdjustment', function () {
458
491
  $$PREBID_GLOBAL$$.bidderSettings =
459
492
  {
@@ -1276,6 +1309,81 @@ describe('auctionmanager.js', function () {
1276
1309
  });
1277
1310
  });
1278
1311
 
1312
+ if (FEATURES.NATIVE) {
1313
+ describe('addBidResponse native', function () {
1314
+ let makeRequestsStub;
1315
+ let ajaxStub;
1316
+ let spec;
1317
+ let auction;
1318
+
1319
+ beforeEach(function () {
1320
+ makeRequestsStub = sinon.stub(adapterManager, 'makeBidRequests');
1321
+ ajaxStub = sinon.stub(ajaxLib, 'ajaxBuilder').callsFake(mockAjaxBuilder);
1322
+
1323
+ const adUnits = [{
1324
+ code: ADUNIT_CODE,
1325
+ transactionId: ADUNIT_CODE,
1326
+ bids: [
1327
+ {bidder: BIDDER_CODE, params: {placementId: 'id'}},
1328
+ ],
1329
+ nativeOrtbRequest: ortbNativeRequest.ortb,
1330
+ mediaTypes: { native: { type: 'image' } }
1331
+ }];
1332
+ auction = auctionModule.newAuction({adUnits, adUnitCodes: [ADUNIT_CODE], callback: function() {}, cbTimeout: 3000});
1333
+ indexAuctions = [auction];
1334
+ const createAuctionStub = sinon.stub(auctionModule, 'newAuction');
1335
+ createAuctionStub.returns(auction);
1336
+
1337
+ spec = mockBidder(BIDDER_CODE);
1338
+ registerBidder(spec);
1339
+ });
1340
+
1341
+ afterEach(function () {
1342
+ ajaxStub.restore();
1343
+ auctionModule.newAuction.restore();
1344
+ adapterManager.makeBidRequests.restore();
1345
+ });
1346
+
1347
+ it('should add legacy fields to native response', function () {
1348
+ let nativeBid = mockBid();
1349
+ nativeBid.mediaType = 'native';
1350
+ nativeBid.native = {
1351
+ ortb: {
1352
+ ver: '1.2',
1353
+ assets: [
1354
+ { id: 2, title: { text: 'Sample title' } },
1355
+ { id: 4, data: { value: 'Sample body' } },
1356
+ { id: 3, data: { value: 'Sample sponsoredBy' } },
1357
+ { id: 1, img: { url: 'https://www.example.com/image.png', w: 200, h: 200 } },
1358
+ { id: 5, img: { url: 'https://www.example.com/icon.png', w: 32, h: 32 } }
1359
+ ],
1360
+ link: { url: 'http://www.click.com' },
1361
+ eventtrackers: [
1362
+ { event: 1, method: 1, url: 'http://www.imptracker.com' },
1363
+ { event: 1, method: 2, url: 'http://www.jstracker.com/file.js' }
1364
+ ]
1365
+ }
1366
+ }
1367
+
1368
+ let bidRequest = mockBidRequest(nativeBid, { mediaType: { native: ortbNativeRequest } });
1369
+ makeRequestsStub.returns([bidRequest]);
1370
+
1371
+ spec.interpretResponse.returns(nativeBid);
1372
+ auction.callBids();
1373
+
1374
+ const addedBid = auction.getBidsReceived().pop();
1375
+ assert.equal(addedBid.native.body, 'Sample body')
1376
+ assert.equal(addedBid.native.title, 'Sample title')
1377
+ assert.equal(addedBid.native.sponsoredBy, 'Sample sponsoredBy')
1378
+ assert.equal(addedBid.native.clickUrl, 'http://www.click.com')
1379
+ assert.equal(addedBid.native.image, 'https://www.example.com/image.png')
1380
+ assert.equal(addedBid.native.icon, 'https://www.example.com/icon.png')
1381
+ assert.equal(addedBid.native.impressionTrackers[0], 'http://www.imptracker.com')
1382
+ assert.equal(addedBid.native.javascriptTrackers, '<script async src="http://www.jstracker.com/file.js"></script>')
1383
+ });
1384
+ });
1385
+ }
1386
+
1279
1387
  describe('getMediaTypeGranularity', function () {
1280
1388
  it('video', function () {
1281
1389
  let mediaTypes = { video: {id: '1'} };
@@ -1464,6 +1572,15 @@ describe('auctionmanager.js', function () {
1464
1572
  assert.equal(doneSpy.callCount, 1);
1465
1573
  });
1466
1574
 
1575
+ it('should convert cpm to number', () => {
1576
+ auction.addBidReceived = sinon.spy();
1577
+ const cbs = auctionCallbacks(doneSpy, auction);
1578
+ const bid = {...bids[0], cpm: '1.23'}
1579
+ bidRequests = [mockBidRequest(bid)];
1580
+ cbs.addBidResponse.call(bidRequests[0], ADUNIT_CODE, bid);
1581
+ sinon.assert.calledWith(auction.addBidReceived, sinon.match({cpm: 1.23}));
1582
+ })
1583
+
1467
1584
  describe('when addBidResponse hook returns promises', () => {
1468
1585
  let resolvers, callbacks, bids;
1469
1586
 
@@ -1605,6 +1722,7 @@ describe('auctionmanager.js', function () {
1605
1722
  ];
1606
1723
  cbs = auctionCallbacks(doneSpy, auction);
1607
1724
  expectedRejection = sinon.match(Object.assign({}, bid, {
1725
+ cpm: parseFloat(bid.cpm),
1608
1726
  rejectionReason: REJECTION_REASON,
1609
1727
  adUnitCode: AU_CODE
1610
1728
  }));
@@ -43,7 +43,10 @@ describe('33acrossIdSystem', () => {
43
43
 
44
44
  expect(request.method).to.equal('GET');
45
45
  expect(request.withCredentials).to.be.true;
46
- expect(request.url).to.contain('https://lexicon.33across.com/v1/envelope?pid=12345');
46
+
47
+ const regExp = new RegExp('https://lexicon.33across.com/v1/envelope\\?pid=12345&gdpr=\\d&src=pbjs&ver=$prebid.version$');
48
+
49
+ expect(request.url).to.match(regExp);
47
50
  expect(completeCallback.calledOnceWithExactly('foo')).to.be.true;
48
51
  });
49
52
 
@@ -1,6 +1,7 @@
1
1
  import adWMGAnalyticsAdapter from 'modules/adWMGAnalyticsAdapter.js';
2
2
  import { expect } from 'chai';
3
3
  import { server } from 'test/mocks/xhr.js';
4
+ import {expectEvents} from '../../helpers/analytics.js';
4
5
  let adapterManager = require('src/adapterManager').default;
5
6
  let events = require('src/events');
6
7
  let constants = require('src/constants.json');
@@ -140,14 +141,15 @@ describe('adWMG Analytics', function () {
140
141
  }
141
142
  });
142
143
 
143
- events.emit(constants.EVENTS.AUCTION_INIT, {timestamp, auctionId, timeout, adUnits});
144
- events.emit(constants.EVENTS.BID_REQUESTED, {});
145
- events.emit(constants.EVENTS.BID_RESPONSE, bidResponse);
146
- events.emit(constants.EVENTS.NO_BID, {});
147
- events.emit(constants.EVENTS.BID_TIMEOUT, bidTimeoutArgs);
148
- events.emit(constants.EVENTS.AUCTION_END, {});
149
- events.emit(constants.EVENTS.BID_WON, wonRequest);
150
- sinon.assert.callCount(adWMGAnalyticsAdapter.track, 7);
144
+ expectEvents([
145
+ [constants.EVENTS.AUCTION_INIT, {timestamp, auctionId, timeout, adUnits}],
146
+ [constants.EVENTS.BID_REQUESTED, {}],
147
+ [constants.EVENTS.BID_RESPONSE, bidResponse],
148
+ [constants.EVENTS.NO_BID, {}],
149
+ [constants.EVENTS.BID_TIMEOUT, bidTimeoutArgs],
150
+ [constants.EVENTS.AUCTION_END, {}],
151
+ [constants.EVENTS.BID_WON, wonRequest],
152
+ ]).to.beTrackedBy(adWMGAnalyticsAdapter.track);
151
153
  });
152
154
 
153
155
  it('should be two xhr requests', function () {
@@ -83,34 +83,27 @@ describe('adagio analytics adapter', () => {
83
83
  timeToRespond: 132,
84
84
  };
85
85
 
86
- // Step 1: Send bid requested event
87
- events.emit(constants.EVENTS.BID_REQUESTED, bidRequest);
86
+ const testEvents = {
87
+ [constants.EVENTS.BID_REQUESTED]: bidRequest,
88
+ [constants.EVENTS.BID_RESPONSE]: bidResponse,
89
+ [constants.EVENTS.AUCTION_END]: {}
90
+ };
88
91
 
89
- // Step 2: Send bid response event
90
- events.emit(constants.EVENTS.BID_RESPONSE, bidResponse);
92
+ // Step 1-3: Send events
93
+ Object.entries(testEvents).forEach(([ev, payload]) => events.emit(ev, payload));
91
94
 
92
- // Step 3: Send auction end event
93
- events.emit(constants.EVENTS.AUCTION_END, {});
95
+ function eventItem(eventName, args) {
96
+ return sinon.match({
97
+ action: 'pb-analytics-event',
98
+ ts: sinon.match((val) => val !== undefined),
99
+ data: {
100
+ eventName,
101
+ args
102
+ }
103
+ })
104
+ }
94
105
 
95
- sandbox.assert.callCount(adagioQueuePushSpy, 3);
96
-
97
- const call0 = adagioQueuePushSpy.getCall(0);
98
- expect(call0.args[0].action).to.equal('pb-analytics-event');
99
- expect(call0.args[0].ts).to.not.be.undefined;
100
- expect(call0.args[0].data).to.not.be.undefined;
101
- expect(call0.args[0].data).to.deep.equal({eventName: constants.EVENTS.BID_REQUESTED, args: bidRequest});
102
-
103
- const call1 = adagioQueuePushSpy.getCall(1);
104
- expect(call1.args[0].action).to.equal('pb-analytics-event');
105
- expect(call1.args[0].ts).to.not.be.undefined;
106
- expect(call1.args[0].data).to.not.be.undefined;
107
- expect(call1.args[0].data).to.deep.equal({eventName: constants.EVENTS.BID_RESPONSE, args: bidResponse});
108
-
109
- const call2 = adagioQueuePushSpy.getCall(2);
110
- expect(call2.args[0].action).to.equal('pb-analytics-event');
111
- expect(call2.args[0].ts).to.not.be.undefined;
112
- expect(call2.args[0].data).to.not.be.undefined;
113
- expect(call2.args[0].data).to.deep.equal({eventName: constants.EVENTS.AUCTION_END, args: {}});
106
+ Object.entries(testEvents).forEach(([ev, payload]) => sinon.assert.calledWith(adagioQueuePushSpy, eventItem(ev, payload)));
114
107
  });
115
108
  });
116
109