prebid.js 6.1.0 → 6.5.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 (184) hide show
  1. package/.circleci/config.yml +1 -1
  2. package/README.md +1 -1
  3. package/browsers.json +13 -29
  4. package/gulpfile.js +87 -82
  5. package/integrationExamples/gpt/weboramaRtdProvider_example.html +23 -14
  6. package/karma.conf.maker.js +2 -2
  7. package/modules/33acrossBidAdapter.js +189 -102
  8. package/modules/adagioBidAdapter.js +1 -1
  9. package/modules/addefendBidAdapter.js +1 -0
  10. package/modules/adkernelBidAdapter.js +146 -61
  11. package/modules/adlooxAdServerVideo.js +2 -2
  12. package/modules/adlooxAnalyticsAdapter.js +4 -4
  13. package/modules/admanBidAdapter.js +1 -0
  14. package/modules/admixerBidAdapter.js +3 -2
  15. package/modules/adnuntiusBidAdapter.js +5 -2
  16. package/modules/adomikAnalyticsAdapter.js +6 -0
  17. package/modules/adplusBidAdapter.js +203 -0
  18. package/modules/adplusBidAdapter.md +39 -0
  19. package/modules/adxcgBidAdapter.js +311 -359
  20. package/modules/adxcgBidAdapter.md +22 -21
  21. package/modules/adyoulikeBidAdapter.js +20 -11
  22. package/modules/aniviewBidAdapter.js +1 -1
  23. package/modules/appnexusBidAdapter.js +19 -3
  24. package/modules/beachfrontBidAdapter.js +14 -17
  25. package/modules/beopBidAdapter.js +6 -4
  26. package/modules/bidViewability.js +3 -3
  27. package/modules/bidViewabilityIO.js +3 -3
  28. package/modules/bliinkBidAdapter.js +1 -1
  29. package/modules/colossussspBidAdapter.js +7 -0
  30. package/modules/compassBidAdapter.js +201 -0
  31. package/modules/compassBidAdapter.md +79 -0
  32. package/modules/consentManagement.js +7 -1
  33. package/modules/craftBidAdapter.js +5 -3
  34. package/modules/criteoBidAdapter.js +1 -1
  35. package/modules/currency.js +2 -2
  36. package/modules/cwireBidAdapter.js +3 -0
  37. package/modules/dailyhuntBidAdapter.js +435 -0
  38. package/modules/dailyhuntBidAdapter.md +4 -0
  39. package/modules/dchain.js +149 -0
  40. package/modules/dchain.md +45 -0
  41. package/modules/docereeBidAdapter.js +10 -1
  42. package/modules/docereeBidAdapter.md +2 -0
  43. package/modules/dspxBidAdapter.js +1 -1
  44. package/modules/emx_digitalBidAdapter.js +9 -1
  45. package/modules/engageyaBidAdapter.js +1 -1
  46. package/modules/feedadBidAdapter.js +2 -2
  47. package/modules/feedadBidAdapter.md +4 -2
  48. package/modules/freewheel-sspBidAdapter.js +6 -0
  49. package/modules/futureads.md +48 -0
  50. package/modules/glimpseBidAdapter.js +16 -3
  51. package/modules/goldbachBidAdapter.js +1176 -0
  52. package/modules/goldbachBidAdapter.md +151 -0
  53. package/modules/gptPreAuction.js +55 -7
  54. package/modules/gridBidAdapter.js +4 -3
  55. package/modules/gumgumBidAdapter.js +7 -3
  56. package/modules/improvedigitalBidAdapter.js +19 -3
  57. package/modules/instreamTracking.js +4 -4
  58. package/modules/intersectionRtdProvider.js +114 -0
  59. package/modules/invibesBidAdapter.js +64 -14
  60. package/modules/invibesBidAdapter.md +2 -1
  61. package/modules/ipromBidAdapter.js +79 -0
  62. package/modules/ixBidAdapter.js +53 -18
  63. package/modules/kinessoIdSystem.js +1 -1
  64. package/modules/limelightDigitalBidAdapter.js +3 -1
  65. package/modules/livewrappedAnalyticsAdapter.js +3 -1
  66. package/modules/livewrappedBidAdapter.js +8 -2
  67. package/modules/loglyliftBidAdapter.js +79 -0
  68. package/modules/loglyliftBidAdapter.md +55 -0
  69. package/modules/lotamePanoramaIdSystem.js +80 -8
  70. package/modules/luponmediaBidAdapter.js +570 -0
  71. package/modules/mediasquareBidAdapter.js +1 -9
  72. package/modules/missenaBidAdapter.js +89 -0
  73. package/modules/nextMillenniumBidAdapter.js +37 -7
  74. package/modules/optimeraRtdProvider.js +8 -1
  75. package/modules/ozoneBidAdapter.js +21 -64
  76. package/modules/prebidServerBidAdapter/index.js +16 -12
  77. package/modules/pubgeniusBidAdapter.js +1 -1
  78. package/modules/pubmaticBidAdapter.js +3 -3
  79. package/modules/pubxaiAnalyticsAdapter.js +17 -0
  80. package/modules/relaidoBidAdapter.js +86 -65
  81. package/modules/richaudienceBidAdapter.js +2 -3
  82. package/modules/rtdModule/index.js +48 -18
  83. package/modules/rubiconBidAdapter.js +31 -19
  84. package/modules/sharedIdSystem.js +27 -1
  85. package/modules/smaatoBidAdapter.js +4 -1
  86. package/modules/smartxBidAdapter.js +17 -1
  87. package/modules/tappxBidAdapter.js +3 -1
  88. package/modules/targetVideoBidAdapter.js +187 -0
  89. package/modules/targetVideoBidAdapter.md +34 -0
  90. package/modules/telariaBidAdapter.js +2 -2
  91. package/modules/trustxBidAdapter.js +8 -16
  92. package/modules/undertoneBidAdapter.js +8 -1
  93. package/modules/userId/index.js +27 -2
  94. package/modules/ventes.md +71 -0
  95. package/modules/ventesBidAdapter.js +104 -64
  96. package/modules/ventesBidAdapter.md +0 -1
  97. package/modules/vidoomyBidAdapter.js +16 -10
  98. package/modules/visxBidAdapter.js +19 -2
  99. package/modules/visxBidAdapter.md +4 -6
  100. package/modules/weboramaRtdProvider.js +288 -73
  101. package/modules/weboramaRtdProvider.md +27 -10
  102. package/modules/yahoosspBidAdapter.js +5 -1
  103. package/modules/yahoosspBidAdapter.md +1 -1
  104. package/modules/yieldmoBidAdapter.js +23 -5
  105. package/modules/yieldoneBidAdapter.js +115 -11
  106. package/modules/zetaSspBidAdapter.md +33 -1
  107. package/modules/zeta_global_sspAnalyticsAdapter.js +97 -0
  108. package/modules/zeta_global_sspAnalyticsAdapter.md +24 -0
  109. package/modules/zeta_global_sspBidAdapter.js +22 -1
  110. package/package.json +1 -1
  111. package/plugins/pbjsGlobals.js +28 -1
  112. package/src/auction.js +5 -4
  113. package/src/config.js +27 -3
  114. package/src/prebid.js +3 -2
  115. package/src/targeting.js +24 -3
  116. package/src/utils.js +53 -8
  117. package/test/helpers/prebidGlobal.js +1 -0
  118. package/test/spec/config_spec.js +279 -0
  119. package/test/spec/integration/faker/googletag.js +6 -0
  120. package/test/spec/modules/33acrossBidAdapter_spec.js +300 -78
  121. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  122. package/test/spec/modules/adnuntiusBidAdapter_spec.js +35 -0
  123. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +6 -0
  124. package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
  125. package/test/spec/modules/adxcgBidAdapter_spec.js +820 -571
  126. package/test/spec/modules/adyoulikeBidAdapter_spec.js +75 -0
  127. package/test/spec/modules/appnexusBidAdapter_spec.js +49 -1
  128. package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
  129. package/test/spec/modules/beopBidAdapter_spec.js +1 -1
  130. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  131. package/test/spec/modules/bidViewability_spec.js +4 -4
  132. package/test/spec/modules/colossussspBidAdapter_spec.js +9 -0
  133. package/test/spec/modules/compassBidAdapter_spec.js +397 -0
  134. package/test/spec/modules/consentManagement_spec.js +20 -0
  135. package/test/spec/modules/cwireBidAdapter_spec.js +10 -8
  136. package/test/spec/modules/dailyhuntBidAdapter_spec.js +404 -0
  137. package/test/spec/modules/dchain_spec.js +329 -0
  138. package/test/spec/modules/docereeBidAdapter_spec.js +9 -1
  139. package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
  140. package/test/spec/modules/feedadBidAdapter_spec.js +15 -0
  141. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
  142. package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
  143. package/test/spec/modules/gptPreAuction_spec.js +177 -2
  144. package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
  145. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -1
  146. package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
  147. package/test/spec/modules/invibesBidAdapter_spec.js +148 -4
  148. package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
  149. package/test/spec/modules/ixBidAdapter_spec.js +112 -62
  150. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +84 -23
  151. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +22 -0
  152. package/test/spec/modules/livewrappedBidAdapter_spec.js +31 -0
  153. package/test/spec/modules/loglyliftBidAdapter_spec.js +172 -0
  154. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +227 -0
  155. package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
  156. package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -4
  157. package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
  158. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +26 -1
  159. package/test/spec/modules/optimeraRtdProvider_spec.js +14 -1
  160. package/test/spec/modules/ozoneBidAdapter_spec.js +43 -31
  161. package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -0
  162. package/test/spec/modules/pubgeniusBidAdapter_spec.js +3 -3
  163. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  164. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +11 -0
  165. package/test/spec/modules/realTimeDataModule_spec.js +135 -49
  166. package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
  167. package/test/spec/modules/richaudienceBidAdapter_spec.js +2 -2
  168. package/test/spec/modules/rubiconBidAdapter_spec.js +65 -9
  169. package/test/spec/modules/sharedIdSystem_spec.js +52 -6
  170. package/test/spec/modules/smaatoBidAdapter_spec.js +31 -0
  171. package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
  172. package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
  173. package/test/spec/modules/targetVideoBidAdapter_spec.js +96 -0
  174. package/test/spec/modules/userId_spec.js +51 -0
  175. package/test/spec/modules/visxBidAdapter_spec.js +120 -4
  176. package/test/spec/modules/weboramaRtdProvider_spec.js +408 -214
  177. package/test/spec/modules/yahoosspBidAdapter_spec.js +28 -1
  178. package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
  179. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +427 -0
  180. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +33 -1
  181. package/test/spec/unit/core/targeting_spec.js +116 -0
  182. package/test/spec/utils_spec.js +38 -0
  183. package/test/test_deps.js +3 -0
  184. package/test/test_index.js +1 -3
@@ -11,7 +11,7 @@ const DEFAULT_AD_UNIT_CODE = '/19968336/header-bid-tag-1';
11
11
  const DEFAULT_AD_UNIT_TYPE = 'banner';
12
12
  const DEFAULT_PARAMS_BID_OVERRIDE = {};
13
13
  const DEFAULT_VIDEO_CONTEXT = 'instream';
14
- const ADAPTER_VERSION = '1.0.1';
14
+ const ADAPTER_VERSION = '1.0.2';
15
15
  const PREBID_VERSION = '$prebid.version$';
16
16
  const INTEGRATION_METHOD = 'prebid.js';
17
17
 
@@ -656,6 +656,33 @@ describe('YahooSSP Bid Adapter:', () => {
656
656
  const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
657
657
  expect(data.imp[0].ext.data).to.deep.equal(validBidRequests[0].ortb2Imp.ext.data);
658
658
  });
659
+ // adUnit.ortb2Imp.instl
660
+ it(`should allow adUnit.ortb2Imp.instl numeric boolean "1" to be added to the bid-request`, () => {
661
+ let { validBidRequests, bidderRequest } = generateBuildRequestMock({})
662
+ validBidRequests[0].ortb2Imp = {
663
+ instl: 1
664
+ };
665
+ const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
666
+ expect(data.imp[0].instl).to.deep.equal(validBidRequests[0].ortb2Imp.instl);
667
+ });
668
+
669
+ it(`should prevent adUnit.ortb2Imp.instl boolean "true" to be added to the bid-request`, () => {
670
+ let { validBidRequests, bidderRequest } = generateBuildRequestMock({})
671
+ validBidRequests[0].ortb2Imp = {
672
+ instl: true
673
+ };
674
+ const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
675
+ expect(data.imp[0].instl).to.not.exist;
676
+ });
677
+
678
+ it(`should prevent adUnit.ortb2Imp.instl boolean "false" to be added to the bid-request`, () => {
679
+ let { validBidRequests, bidderRequest } = generateBuildRequestMock({})
680
+ validBidRequests[0].ortb2Imp = {
681
+ instl: false
682
+ };
683
+ const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
684
+ expect(data.imp[0].instl).to.not.exist;
685
+ });
659
686
  });
660
687
 
661
688
  describe('e2etest mode support:', () => {
@@ -7,6 +7,8 @@ const ENDPOINT = 'https://y.one.impact-ad.jp/h_bid';
7
7
  const USER_SYNC_URL = 'https://y.one.impact-ad.jp/push_sync';
8
8
  const VIDEO_PLAYER_URL = 'https://img.ak.impact-ad.jp/ic/pone/ivt/firstview/js/dac-video-prebid.min.js';
9
9
 
10
+ const DEFAULT_VIDEO_SIZE = {w: 640, h: 360};
11
+
10
12
  describe('yieldoneBidAdapter', function() {
11
13
  const adapter = newBidder(spec);
12
14
 
@@ -40,32 +42,7 @@ describe('yieldoneBidAdapter', function() {
40
42
  });
41
43
 
42
44
  describe('buildRequests', function () {
43
- let bidRequests = [
44
- {
45
- 'bidder': 'yieldone',
46
- 'params': {
47
- placementId: '36891'
48
- },
49
- 'adUnitCode': 'adunit-code1',
50
- 'sizes': [[300, 250], [336, 280]],
51
- 'bidId': '23beaa6af6cdde',
52
- 'bidderRequestId': '19c0c1efdf37e7',
53
- 'auctionId': '61466567-d482-4a16-96f0-fe5f25ffbdf1',
54
- },
55
- {
56
- 'bidder': 'yieldone',
57
- 'params': {
58
- placementId: '47919'
59
- },
60
- 'adUnitCode': 'adunit-code2',
61
- 'sizes': [[300, 250]],
62
- 'bidId': '382091349b149f"',
63
- 'bidderRequestId': '"1f9c98192de251"',
64
- 'auctionId': '61466567-d482-4a16-96f0-fe5f25ffbdf1',
65
- }
66
- ];
67
-
68
- let bidderRequest = {
45
+ const bidderRequest = {
69
46
  refererInfo: {
70
47
  numIframes: 0,
71
48
  reachedTop: true,
@@ -74,49 +51,318 @@ describe('yieldoneBidAdapter', function() {
74
51
  }
75
52
  };
76
53
 
77
- const request = spec.buildRequests(bidRequests, bidderRequest);
54
+ describe('Basic', function () {
55
+ const bidRequests = [
56
+ {
57
+ 'bidder': 'yieldone',
58
+ 'params': {placementId: '36891'},
59
+ 'adUnitCode': 'adunit-code1',
60
+ 'bidId': '23beaa6af6cdde',
61
+ 'bidderRequestId': '19c0c1efdf37e7',
62
+ 'auctionId': '61466567-d482-4a16-96f0-fe5f25ffbdf1',
63
+ },
64
+ {
65
+ 'bidder': 'yieldone',
66
+ 'params': {placementId: '47919'},
67
+ 'adUnitCode': 'adunit-code2',
68
+ 'bidId': '382091349b149f"',
69
+ 'bidderRequestId': '"1f9c98192de251"',
70
+ 'auctionId': '61466567-d482-4a16-96f0-fe5f25ffbdf1',
71
+ }
72
+ ];
73
+ const request = spec.buildRequests(bidRequests, bidderRequest);
78
74
 
79
- it('sends bid request to our endpoint via GET', function () {
80
- expect(request[0].method).to.equal('GET');
81
- expect(request[1].method).to.equal('GET');
75
+ it('sends bid request to our endpoint via GET', function () {
76
+ expect(request[0].method).to.equal('GET');
77
+ expect(request[1].method).to.equal('GET');
78
+ });
79
+ it('attaches source and version to endpoint URL as query params', function () {
80
+ expect(request[0].url).to.equal(ENDPOINT);
81
+ expect(request[1].url).to.equal(ENDPOINT);
82
+ });
83
+ it('adUnitCode should be sent as uc parameters on any requests', function () {
84
+ expect(request[0].data.uc).to.equal('adunit-code1');
85
+ expect(request[1].data.uc).to.equal('adunit-code2');
86
+ });
82
87
  });
83
88
 
84
- it('attaches source and version to endpoint URL as query params', function () {
85
- expect(request[0].url).to.equal(ENDPOINT);
86
- expect(request[1].url).to.equal(ENDPOINT);
87
- });
89
+ describe('Old Format', function () {
90
+ const bidRequests = [
91
+ {
92
+ params: {placementId: '0'},
93
+ mediaType: 'banner',
94
+ sizes: [[300, 250], [336, 280]],
95
+ },
96
+ {
97
+ params: {placementId: '1'},
98
+ mediaType: 'banner',
99
+ sizes: [[336, 280]],
100
+ },
101
+ {
102
+ // It doesn't actually exist.
103
+ params: {placementId: '2'},
104
+ },
105
+ {
106
+ params: {placementId: '3'},
107
+ mediaType: 'video',
108
+ sizes: [[1280, 720], [1920, 1080]],
109
+ },
110
+ {
111
+ params: {placementId: '4'},
112
+ mediaType: 'video',
113
+ sizes: [[1920, 1080]],
114
+ },
115
+ {
116
+ params: {placementId: '5'},
117
+ mediaType: 'video',
118
+ },
119
+ ];
120
+ const request = spec.buildRequests(bidRequests, bidderRequest);
88
121
 
89
- it('parameter sz has more than one size on banner requests', function () {
90
- expect(request[0].data.sz).to.equal('300x250,336x280');
91
- expect(request[1].data.sz).to.equal('300x250');
122
+ it('parameter sz has more than one size on banner requests', function () {
123
+ expect(request[0].data.sz).to.equal('300x250,336x280');
124
+ expect(request[1].data.sz).to.equal('336x280');
125
+ expect(request[2].data.sz).to.equal('');
126
+ expect(request[3].data).to.not.have.property('sz');
127
+ expect(request[4].data).to.not.have.property('sz');
128
+ expect(request[5].data).to.not.have.property('sz');
129
+ });
130
+
131
+ it('width and height should be set as separate parameters on outstream requests', function () {
132
+ expect(request[0].data).to.not.have.property('w');
133
+ expect(request[1].data).to.not.have.property('w');
134
+ expect(request[2].data).to.not.have.property('w');
135
+ expect(request[3].data.w).to.equal(1280);
136
+ expect(request[3].data.h).to.equal(720);
137
+ expect(request[4].data.w).to.equal(1920);
138
+ expect(request[4].data.h).to.equal(1080);
139
+ expect(request[5].data.w).to.equal(DEFAULT_VIDEO_SIZE.w);
140
+ expect(request[5].data.h).to.equal(DEFAULT_VIDEO_SIZE.h);
141
+ });
92
142
  });
93
143
 
94
- it('width and height should be set as separate parameters on outstream requests', function () {
95
- const bidRequest = Object.assign({}, bidRequests[0]);
96
- bidRequest.mediaTypes = {};
97
- bidRequest.mediaTypes.video = {context: 'outstream'};
98
- const request = spec.buildRequests([bidRequest], bidderRequest);
99
- expect(request[0].data.w).to.equal('300');
100
- expect(request[0].data.h).to.equal('250');
144
+ describe('New Format', function () {
145
+ const bidRequests = [
146
+ {
147
+ params: {placementId: '0'},
148
+ mediaTypes: {
149
+ banner: {
150
+ sizes: [[300, 250], [336, 280]],
151
+ },
152
+ },
153
+ },
154
+ {
155
+ params: {placementId: '1'},
156
+ mediaTypes: {
157
+ banner: {
158
+ sizes: [[336, 280]],
159
+ },
160
+ },
161
+ },
162
+ {
163
+ // It doesn't actually exist.
164
+ params: {placementId: '2'},
165
+ mediaTypes: {
166
+ banner: {
167
+ },
168
+ },
169
+ },
170
+ {
171
+ params: {placementId: '3'},
172
+ mediaTypes: {
173
+ video: {
174
+ context: 'outstream',
175
+ playerSize: [[1280, 720], [1920, 1080]],
176
+ },
177
+ },
178
+ },
179
+ {
180
+ params: {placementId: '4'},
181
+ mediaTypes: {
182
+ video: {
183
+ context: 'outstream',
184
+ playerSize: [1920, 1080],
185
+ },
186
+ },
187
+ },
188
+ {
189
+ params: {placementId: '5'},
190
+ mediaTypes: {
191
+ video: {
192
+ context: 'outstream',
193
+ },
194
+ },
195
+ },
196
+ ];
197
+ const request = spec.buildRequests(bidRequests, bidderRequest);
198
+
199
+ it('parameter sz has more than one size on banner requests', function () {
200
+ expect(request[0].data.sz).to.equal('300x250,336x280');
201
+ expect(request[1].data.sz).to.equal('336x280');
202
+ expect(request[2].data.sz).to.equal('');
203
+ expect(request[3].data).to.not.have.property('sz');
204
+ expect(request[4].data).to.not.have.property('sz');
205
+ expect(request[5].data).to.not.have.property('sz');
206
+ });
207
+
208
+ it('width and height should be set as separate parameters on outstream requests', function () {
209
+ expect(request[0].data).to.not.have.property('w');
210
+ expect(request[1].data).to.not.have.property('w');
211
+ expect(request[2].data).to.not.have.property('w');
212
+ expect(request[3].data.w).to.equal(1280);
213
+ expect(request[3].data.h).to.equal(720);
214
+ expect(request[4].data.w).to.equal(1920);
215
+ expect(request[4].data.h).to.equal(1080);
216
+ expect(request[5].data.w).to.equal(DEFAULT_VIDEO_SIZE.w);
217
+ expect(request[5].data.h).to.equal(DEFAULT_VIDEO_SIZE.h);
218
+ });
101
219
  });
102
220
 
103
- it('adUnitCode should be sent as uc parameters on any requests', function () {
104
- expect(request[0].data.uc).to.equal('adunit-code1');
105
- expect(request[1].data.uc).to.equal('adunit-code2');
221
+ describe('Multiple Format', function () {
222
+ const bidRequests = [
223
+ {
224
+ // It will be treated as a banner.
225
+ params: {
226
+ placementId: '0',
227
+ },
228
+ mediaTypes: {
229
+ banner: {
230
+ sizes: [[300, 250], [336, 280]],
231
+ },
232
+ video: {
233
+ context: 'outstream',
234
+ playerSize: [1920, 1080],
235
+ },
236
+ },
237
+ },
238
+ {
239
+ // It will be treated as a video.
240
+ params: {
241
+ placementId: '1',
242
+ playerParams: {},
243
+ },
244
+ mediaTypes: {
245
+ banner: {
246
+ sizes: [[300, 250], [336, 280]],
247
+ },
248
+ video: {
249
+ context: 'outstream',
250
+ playerSize: [1920, 1080],
251
+ },
252
+ },
253
+ },
254
+ ];
255
+ const request = spec.buildRequests(bidRequests, bidderRequest);
256
+
257
+ it('parameter sz has more than one size on banner requests', function () {
258
+ expect(request[0].data.sz).to.equal('300x250,336x280');
259
+ expect(request[1].data).to.not.have.property('sz');
260
+ });
261
+
262
+ it('width and height should be set as separate parameters on outstream requests', function () {
263
+ expect(request[0].data).to.not.have.property('w');
264
+ expect(request[1].data.w).to.equal(1920);
265
+ expect(request[1].data.h).to.equal(1080);
266
+ });
106
267
  });
107
268
 
108
- describe('userid idl_env should be passed to querystring', function () {
109
- const bid = deepClone([bidRequests[0]]);
269
+ describe('FLUX Format', function () {
270
+ const bidRequests = [
271
+ {
272
+ // It will be treated as a banner.
273
+ params: {
274
+ placementId: '0',
275
+ },
276
+ mediaTypes: {
277
+ banner: {
278
+ sizes: [[300, 250], [336, 280]],
279
+ },
280
+ video: {
281
+ context: 'outstream',
282
+ playerSize: [[1, 1]],
283
+ },
284
+ },
285
+ },
286
+ {
287
+ // It will be treated as a video.
288
+ params: {
289
+ placementId: '1',
290
+ playerParams: {},
291
+ playerSize: [1920, 1080],
292
+ },
293
+ mediaTypes: {
294
+ banner: {
295
+ sizes: [[300, 250], [336, 280]],
296
+ },
297
+ video: {
298
+ context: 'outstream',
299
+ playerSize: [[1, 1]],
300
+ },
301
+ },
302
+ },
303
+ {
304
+ // It will be treated as a video.
305
+ params: {
306
+ placementId: '2',
307
+ playerParams: {},
308
+ },
309
+ mediaTypes: {
310
+ banner: {
311
+ sizes: [[300, 250], [336, 280]],
312
+ },
313
+ video: {
314
+ context: 'outstream',
315
+ playerSize: [[1, 1]],
316
+ },
317
+ },
318
+ },
319
+ ];
320
+ const request = spec.buildRequests(bidRequests, bidderRequest);
321
+
322
+ it('parameter sz has more than one size on banner requests', function () {
323
+ expect(request[0].data.sz).to.equal('300x250,336x280');
324
+ expect(request[1].data).to.not.have.property('sz');
325
+ expect(request[2].data).to.not.have.property('sz');
326
+ });
327
+
328
+ it('width and height should be set as separate parameters on outstream requests', function () {
329
+ expect(request[0].data).to.not.have.property('w');
330
+ expect(request[1].data.w).to.equal(1920);
331
+ expect(request[1].data.h).to.equal(1080);
332
+ expect(request[2].data.w).to.equal(DEFAULT_VIDEO_SIZE.w);
333
+ expect(request[2].data.h).to.equal(DEFAULT_VIDEO_SIZE.h);
334
+ });
335
+ });
110
336
 
337
+ describe('LiveRampID', function () {
111
338
  it('dont send LiveRampID if undefined', function () {
112
- bid[0].userId = {};
113
- const request = spec.buildRequests(bid, bidderRequest);
339
+ const bidRequests = [
340
+ {
341
+ params: {placementId: '0'},
342
+ },
343
+ {
344
+ params: {placementId: '1'},
345
+ userId: {},
346
+ },
347
+ {
348
+ params: {placementId: '2'},
349
+ userId: undefined,
350
+ },
351
+ ];
352
+ const request = spec.buildRequests(bidRequests, bidderRequest);
114
353
  expect(request[0].data).to.not.have.property('lr_env');
354
+ expect(request[1].data).to.not.have.property('lr_env');
355
+ expect(request[2].data).to.not.have.property('lr_env');
115
356
  });
116
357
 
117
358
  it('should send LiveRampID if available', function () {
118
- bid[0].userId = {idl_env: 'idl_env_sample'};
119
- const request = spec.buildRequests(bid, bidderRequest);
359
+ const bidRequests = [
360
+ {
361
+ params: {placementId: '0'},
362
+ userId: {idl_env: 'idl_env_sample'},
363
+ },
364
+ ];
365
+ const request = spec.buildRequests(bidRequests, bidderRequest);
120
366
  expect(request[0].data.lr_env).to.equal('idl_env_sample');
121
367
  });
122
368
  });