prebid.js 5.20.0 → 6.3.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 (168) hide show
  1. package/.babelrc.js +1 -10
  2. package/README.md +4 -2
  3. package/browsers.json +13 -37
  4. package/gulpfile.js +1 -8
  5. package/integrationExamples/gpt/weboramaRtdProvider_example.html +23 -14
  6. package/karma.conf.maker.js +1 -1
  7. package/modules/33acrossBidAdapter.js +189 -102
  8. package/modules/adagioBidAdapter.js +1 -1
  9. package/modules/addefendBidAdapter.js +1 -0
  10. package/modules/adheseBidAdapter.js +7 -2
  11. package/modules/adkernelBidAdapter.js +1 -0
  12. package/modules/adlivetechBidAdapter.md +61 -0
  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 +10 -4
  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 +7 -2
  22. package/modules/appnexusBidAdapter.js +23 -3
  23. package/modules/beachfrontBidAdapter.js +14 -17
  24. package/modules/beopBidAdapter.js +5 -3
  25. package/modules/codefuelBidAdapter.js +1 -3
  26. package/modules/codefuelBidAdapter.md +3 -3
  27. package/modules/colossussspBidAdapter.js +7 -0
  28. package/modules/craftBidAdapter.js +5 -3
  29. package/modules/criteoBidAdapter.js +1 -1
  30. package/modules/cwireBidAdapter.js +3 -0
  31. package/modules/datablocksBidAdapter.js +3 -3
  32. package/modules/dchain.js +149 -0
  33. package/modules/dchain.md +45 -0
  34. package/modules/deepintentBidAdapter.js +1 -1
  35. package/modules/dspxBidAdapter.js +1 -1
  36. package/modules/emx_digitalBidAdapter.js +9 -1
  37. package/modules/engageyaBidAdapter.js +68 -54
  38. package/modules/freewheel-sspBidAdapter.js +6 -0
  39. package/modules/futureads.md +48 -0
  40. package/modules/glimpseBidAdapter.js +44 -16
  41. package/modules/goldbachBidAdapter.js +1176 -0
  42. package/modules/goldbachBidAdapter.md +151 -0
  43. package/modules/gptPreAuction.js +11 -5
  44. package/modules/gridBidAdapter.js +1 -1
  45. package/modules/gumgumBidAdapter.js +7 -3
  46. package/modules/id5IdSystem.md +6 -6
  47. package/modules/imRtdProvider.js +31 -0
  48. package/modules/intersectionRtdProvider.js +114 -0
  49. package/modules/invibesBidAdapter.js +15 -9
  50. package/modules/ipromBidAdapter.js +79 -0
  51. package/modules/ixBidAdapter.js +166 -21
  52. package/modules/kinessoIdSystem.js +1 -1
  53. package/modules/limelightDigitalBidAdapter.js +2 -1
  54. package/modules/lotamePanoramaIdSystem.js +80 -8
  55. package/modules/luponmediaBidAdapter.js +570 -0
  56. package/modules/mediasquareBidAdapter.js +1 -9
  57. package/modules/merkleIdSystem.js +5 -0
  58. package/modules/missenaBidAdapter.js +89 -0
  59. package/modules/nativoBidAdapter.js +27 -1
  60. package/modules/nextMillenniumBidAdapter.js +29 -1
  61. package/modules/oguryBidAdapter.js +2 -1
  62. package/modules/openxBidAdapter.js +6 -1
  63. package/modules/prebidServerBidAdapter/index.js +19 -15
  64. package/modules/pubmaticBidAdapter.js +5 -3
  65. package/modules/relaidoBidAdapter.js +86 -65
  66. package/modules/richaudienceBidAdapter.js +2 -3
  67. package/modules/rtdModule/index.js +48 -18
  68. package/modules/rubiconBidAdapter.js +10 -8
  69. package/modules/saambaaBidAdapter.js +420 -0
  70. package/modules/saambaaBidAdapter.md +65 -68
  71. package/modules/seedtagBidAdapter.js +6 -0
  72. package/modules/sharedIdSystem.js +27 -1
  73. package/modules/smaatoBidAdapter.js +9 -1
  74. package/modules/smartxBidAdapter.js +17 -1
  75. package/modules/sspBCBidAdapter.js +34 -3
  76. package/modules/tappxBidAdapter.js +3 -1
  77. package/modules/targetVideoBidAdapter.js +187 -0
  78. package/modules/targetVideoBidAdapter.md +34 -0
  79. package/modules/trustxBidAdapter.js +10 -1
  80. package/modules/undertoneBidAdapter.js +8 -1
  81. package/modules/userId/index.js +27 -2
  82. package/modules/ventes.md +71 -0
  83. package/modules/ventesBidAdapter.js +104 -64
  84. package/modules/ventesBidAdapter.md +0 -1
  85. package/modules/vidoomyBidAdapter.js +65 -108
  86. package/modules/visxBidAdapter.js +20 -3
  87. package/modules/visxBidAdapter.md +4 -6
  88. package/modules/weboramaRtdProvider.js +288 -73
  89. package/modules/weboramaRtdProvider.md +27 -10
  90. package/modules/yahoosspBidAdapter.js +5 -1
  91. package/modules/yahoosspBidAdapter.md +1 -1
  92. package/modules/yieldlabBidAdapter.js +41 -10
  93. package/modules/yieldlabBidAdapter.md +91 -48
  94. package/modules/yieldoneBidAdapter.js +115 -11
  95. package/modules/zetaSspBidAdapter.md +33 -1
  96. package/modules/zeta_global_sspBidAdapter.js +22 -1
  97. package/package.json +6 -1
  98. package/plugins/pbjsGlobals.js +28 -1
  99. package/src/adapterManager.js +14 -8
  100. package/src/auction.js +3 -2
  101. package/src/prebid.js +1 -2
  102. package/src/targeting.js +24 -3
  103. package/src/utils.js +41 -7
  104. package/test/spec/integration/faker/googletag.js +6 -0
  105. package/test/spec/modules/33acrossBidAdapter_spec.js +300 -78
  106. package/test/spec/modules/adheseBidAdapter_spec.js +27 -1
  107. package/test/spec/modules/adnuntiusBidAdapter_spec.js +35 -0
  108. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +3 -1
  109. package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
  110. package/test/spec/modules/adxcgBidAdapter_spec.js +820 -571
  111. package/test/spec/modules/adyoulikeBidAdapter_spec.js +26 -0
  112. package/test/spec/modules/appnexusBidAdapter_spec.js +63 -1
  113. package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
  114. package/test/spec/modules/codefuelBidAdapter_spec.js +1 -1
  115. package/test/spec/modules/colossussspBidAdapter_spec.js +9 -0
  116. package/test/spec/modules/cwireBidAdapter_spec.js +10 -8
  117. package/test/spec/modules/datablocksBidAdapter_spec.js +3 -3
  118. package/test/spec/modules/dchain_spec.js +329 -0
  119. package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
  120. package/test/spec/modules/engageyaBidAdapter_spec.js +231 -95
  121. package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
  122. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
  123. package/test/spec/modules/glimpseBidAdapter_spec.js +33 -0
  124. package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
  125. package/test/spec/modules/gptPreAuction_spec.js +58 -4
  126. package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
  127. package/test/spec/modules/imRtdProvider_spec.js +25 -0
  128. package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
  129. package/test/spec/modules/invibesBidAdapter_spec.js +29 -4
  130. package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
  131. package/test/spec/modules/ixBidAdapter_spec.js +285 -2
  132. package/test/spec/modules/konduitWrapper_spec.js +0 -1
  133. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +10 -7
  134. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +227 -0
  135. package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
  136. package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -4
  137. package/test/spec/modules/merkleIdSystem_spec.js +18 -0
  138. package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
  139. package/test/spec/modules/nativoBidAdapter_spec.js +35 -18
  140. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +18 -0
  141. package/test/spec/modules/oguryBidAdapter_spec.js +13 -11
  142. package/test/spec/modules/openxBidAdapter_spec.js +5 -0
  143. package/test/spec/modules/prebidServerBidAdapter_spec.js +62 -2
  144. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  145. package/test/spec/modules/realTimeDataModule_spec.js +135 -49
  146. package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
  147. package/test/spec/modules/richaudienceBidAdapter_spec.js +2 -2
  148. package/test/spec/modules/rubiconBidAdapter_spec.js +17 -0
  149. package/test/spec/modules/seedtagBidAdapter_spec.js +3 -0
  150. package/test/spec/modules/sharedIdSystem_spec.js +52 -6
  151. package/test/spec/modules/smaatoBidAdapter_spec.js +61 -0
  152. package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
  153. package/test/spec/modules/sspBCBidAdapter_spec.js +33 -3
  154. package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
  155. package/test/spec/modules/targetVideoBidAdapter_spec.js +96 -0
  156. package/test/spec/modules/trustxBidAdapter_spec.js +42 -0
  157. package/test/spec/modules/userId_spec.js +51 -0
  158. package/test/spec/modules/vidoomyBidAdapter_spec.js +32 -13
  159. package/test/spec/modules/visxBidAdapter_spec.js +121 -5
  160. package/test/spec/modules/weboramaRtdProvider_spec.js +408 -214
  161. package/test/spec/modules/yahoosspBidAdapter_spec.js +28 -1
  162. package/test/spec/modules/yieldlabBidAdapter_spec.js +81 -0
  163. package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
  164. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +33 -1
  165. package/test/spec/unit/core/adapterManager_spec.js +24 -6
  166. package/test/spec/unit/core/targeting_spec.js +116 -0
  167. package/test/spec/utils_spec.js +38 -0
  168. package/wdio.conf.js +1 -1
@@ -1,5 +1,6 @@
1
1
  import {expect} from 'chai';
2
2
  import {spec} from 'modules/adheseBidAdapter.js';
3
+ import {config} from 'src/config.js';
3
4
 
4
5
  const BID_ID = 456;
5
6
  const TTL = 360;
@@ -131,12 +132,21 @@ describe('AdheseAdapter', function () {
131
132
  expect(JSON.parse(req.data)).to.not.have.key('eids');
132
133
  });
133
134
 
134
- it('should request vast content as url', function () {
135
+ it('should request vast content as url by default', function () {
135
136
  let req = spec.buildRequests([ minimalBid() ], bidderRequest);
136
137
 
137
138
  expect(JSON.parse(req.data).vastContentAsUrl).to.equal(true);
138
139
  });
139
140
 
141
+ it('should request vast content as markup when configured', function () {
142
+ sinon.stub(config, 'getConfig').withArgs('adhese').returns({ vastContentAsUrl: false });
143
+
144
+ let req = spec.buildRequests([ minimalBid() ], bidderRequest);
145
+
146
+ expect(JSON.parse(req.data).vastContentAsUrl).to.equal(false);
147
+ config.getConfig.restore();
148
+ });
149
+
140
150
  it('should include bids', function () {
141
151
  let bid = minimalBid();
142
152
  let req = spec.buildRequests([ bid ], bidderRequest);
@@ -155,6 +165,22 @@ describe('AdheseAdapter', function () {
155
165
 
156
166
  expect(req.url).to.equal('https://ads-demo.adhese.com/json');
157
167
  });
168
+
169
+ it('should include params specified in the config', function () {
170
+ sinon.stub(config, 'getConfig').withArgs('adhese').returns({ globalTargets: { 'tl': [ 'all' ] } });
171
+ let req = spec.buildRequests([ minimalBid() ], bidderRequest);
172
+
173
+ expect(JSON.parse(req.data).parameters).to.deep.include({ 'tl': [ 'all' ] });
174
+ config.getConfig.restore();
175
+ });
176
+
177
+ it('should give priority to bid params over config params', function () {
178
+ sinon.stub(config, 'getConfig').withArgs('adhese').returns({ globalTargets: { 'xt': ['CONFIG_CONSENT_STRING'] } });
179
+ let req = spec.buildRequests([ minimalBid() ], bidderRequest);
180
+
181
+ expect(JSON.parse(req.data).parameters).to.deep.include({ 'xt': [ 'CONSENT_STRING' ] });
182
+ config.getConfig.restore();
183
+ });
158
184
  });
159
185
 
160
186
  describe('interpretResponse', () => {
@@ -19,6 +19,7 @@ describe('adnuntiusBidAdapter', function () {
19
19
  });
20
20
  const tzo = new Date().getTimezoneOffset();
21
21
  const ENDPOINT_URL = `${URL}${tzo}&format=json&userId=${usi}`;
22
+ const ENDPOINT_URL_NOCOOKIE = `${URL}${tzo}&format=json&userId=${usi}&noCookies=true`;
22
23
  const ENDPOINT_URL_SEGMENTS = `${URL}${tzo}&format=json&segments=segment1,segment2,segment3&userId=${usi}`;
23
24
  const ENDPOINT_URL_CONSENT = `${URL}${tzo}&format=json&consentString=consentString&userId=${usi}`;
24
25
  const adapter = newBidder(spec);
@@ -251,6 +252,24 @@ describe('adnuntiusBidAdapter', function () {
251
252
  expect(request[0]).to.have.property('url')
252
253
  expect(request[0].url).to.equal(ENDPOINT_URL_SEGMENTS);
253
254
  });
255
+
256
+ it('should user user ID if present in ortb2.user.id field', function () {
257
+ config.setBidderConfig({
258
+ bidders: ['adnuntius', 'other'],
259
+ config: {
260
+ ortb2: {
261
+ user: {
262
+ id: usi
263
+ }
264
+ }
265
+ }
266
+ });
267
+
268
+ const request = config.runWithBidder('adnuntius', () => spec.buildRequests(bidRequests));
269
+ expect(request.length).to.equal(1);
270
+ expect(request[0]).to.have.property('url')
271
+ expect(request[0].url).to.equal(ENDPOINT_URL);
272
+ });
254
273
  });
255
274
 
256
275
  describe('user privacy', function () {
@@ -269,6 +288,22 @@ describe('adnuntiusBidAdapter', function () {
269
288
  });
270
289
  });
271
290
 
291
+ describe('use cookie', function () {
292
+ it('should send noCookie in url if set to false.', function () {
293
+ config.setBidderConfig({
294
+ bidders: ['adnuntius'],
295
+ config: {
296
+ useCookie: false
297
+ }
298
+ });
299
+
300
+ const request = config.runWithBidder('adnuntius', () => spec.buildRequests(bidRequests));
301
+ expect(request.length).to.equal(1);
302
+ expect(request[0]).to.have.property('url')
303
+ expect(request[0].url).to.equal(ENDPOINT_URL_NOCOOKIE);
304
+ });
305
+ });
306
+
272
307
  describe('interpretResponse', function () {
273
308
  it('should return valid response when passed valid server response', function () {
274
309
  const interpretedResponse = spec.interpretResponse(serverResponse, singleBidRequest);
@@ -1,5 +1,6 @@
1
1
  import adomikAnalytics from 'modules/adomikAnalyticsAdapter.js';
2
2
  import {expect} from 'chai';
3
+
3
4
  let events = require('src/events');
4
5
  let adapterManager = require('src/adapterManager').default;
5
6
  let constants = require('src/constants.json');
@@ -8,6 +9,7 @@ describe('Adomik Prebid Analytic', function () {
8
9
  let sendEventStub;
9
10
  let sendWonEventStub;
10
11
  let clock;
12
+
11
13
  before(function () {
12
14
  clock = sinon.useFakeTimers();
13
15
  });
@@ -91,7 +93,7 @@ describe('Adomik Prebid Analytic', function () {
91
93
  type: 'request',
92
94
  event: {
93
95
  bidder: 'BIDDERTEST',
94
- placementCode: 'placementtest',
96
+ placementCode: '0000',
95
97
  }
96
98
  });
97
99
 
@@ -0,0 +1,213 @@
1
+ import {expect} from 'chai';
2
+ import {spec, BIDDER_CODE, ADPLUS_ENDPOINT, } from 'modules/adplusBidAdapter.js';
3
+ import {newBidder} from 'src/adapters/bidderFactory.js';
4
+
5
+ describe('AplusBidAdapter', function () {
6
+ const adapter = newBidder(spec);
7
+
8
+ describe('inherited functions', function () {
9
+ it('exists and is a function', function () {
10
+ expect(adapter.callBids).to.be.exist.and.to.be.a('function');
11
+ });
12
+ });
13
+
14
+ describe('isBidRequestValid', function () {
15
+ it('should return true when required params found', function () {
16
+ let validRequest = {
17
+ mediaTypes: {
18
+ banner: {
19
+ sizes: [[300, 250]]
20
+ }
21
+ },
22
+ params: {
23
+ inventoryId: '30',
24
+ adUnitId: '1',
25
+ }
26
+ };
27
+ expect(spec.isBidRequestValid(validRequest)).to.equal(true);
28
+ });
29
+
30
+ it('should return false when required params are not passed', function () {
31
+ let validRequest = {
32
+ mediaTypes: {
33
+ banner: {
34
+ sizes: [[300, 250]]
35
+ }
36
+ },
37
+ params: {
38
+ inventoryId: '30',
39
+ }
40
+ };
41
+ expect(spec.isBidRequestValid(validRequest)).to.equal(false);
42
+ });
43
+
44
+ it('should return false when required param types are wrong', function () {
45
+ let validRequest = {
46
+ mediaTypes: {
47
+ banner: {
48
+ sizes: [[300, 250]]
49
+ }
50
+ },
51
+ params: {
52
+ inventoryId: 30,
53
+ adUnitId: '1',
54
+ }
55
+ };
56
+ expect(spec.isBidRequestValid(validRequest)).to.equal(false);
57
+ });
58
+
59
+ it('should return false when size is not exists', function () {
60
+ let validRequest = {
61
+ params: {
62
+ inventoryId: 30,
63
+ adUnitId: '1',
64
+ }
65
+ };
66
+ expect(spec.isBidRequestValid(validRequest)).to.equal(false);
67
+ });
68
+
69
+ it('should return false when size is wrong', function () {
70
+ let validRequest = {
71
+ mediaTypes: {
72
+ banner: {
73
+ sizes: [[300]]
74
+ }
75
+ },
76
+ params: {
77
+ inventoryId: 30,
78
+ adUnitId: '1',
79
+ }
80
+ };
81
+ expect(spec.isBidRequestValid(validRequest)).to.equal(false);
82
+ });
83
+ });
84
+
85
+ describe('buildRequests', function () {
86
+ let validRequest = [
87
+ {
88
+ bidder: BIDDER_CODE,
89
+ mediaTypes: {
90
+ banner: {
91
+ sizes: [[300, 250]]
92
+ }
93
+ },
94
+ params: {
95
+ inventoryId: '-1',
96
+ adUnitId: '-3',
97
+ },
98
+ bidId: '2bdcb0b203c17d'
99
+ },
100
+ ];
101
+
102
+ let bidderRequest = {
103
+ refererInfo: {
104
+ referer: 'https://test.domain'
105
+ }
106
+ };
107
+
108
+ it('bidRequest HTTP method', function () {
109
+ const request = spec.buildRequests(validRequest, bidderRequest);
110
+ expect(request[0].method).to.equal('GET');
111
+ });
112
+
113
+ it('bidRequest url', function () {
114
+ const request = spec.buildRequests(validRequest, bidderRequest);
115
+ expect(request[0].url).to.equal(ADPLUS_ENDPOINT);
116
+ });
117
+
118
+ it('tests bidRequest data is clean and has the right values', function () {
119
+ const request = spec.buildRequests(validRequest, bidderRequest);
120
+
121
+ expect(request[0].data.bidId).to.equal('2bdcb0b203c17d');
122
+ expect(request[0].data.inventoryId).to.equal('-1');
123
+ expect(request[0].data.adUnitId).to.equal('-3');
124
+ expect(request[0].data.adUnitWidth).to.equal(300);
125
+ expect(request[0].data.adUnitHeight).to.equal(250);
126
+ expect(request[0].data.sdkVersion).to.equal('1');
127
+ expect(typeof request[0].data.session).to.equal('string');
128
+ expect(request[0].data.session).length(36);
129
+ expect(request[0].data.interstitial).to.equal(0);
130
+ expect(request[0].data).to.not.have.deep.property('extraData');
131
+ expect(request[0].data).to.not.have.deep.property('yearOfBirth');
132
+ expect(request[0].data).to.not.have.deep.property('gender');
133
+ expect(request[0].data).to.not.have.deep.property('categories');
134
+ expect(request[0].data).to.not.have.deep.property('latitude');
135
+ expect(request[0].data).to.not.have.deep.property('longitude');
136
+ });
137
+ });
138
+
139
+ describe('interpretResponse', function () {
140
+ const requestData = {
141
+ language: window.navigator.language,
142
+ screenWidth: 1440,
143
+ screenHeight: 900,
144
+ sdkVersion: '1',
145
+ inventoryId: '-1',
146
+ adUnitId: '-3',
147
+ adUnitWidth: 300,
148
+ adUnitHeight: 250,
149
+ domain: 'tassandigi.com',
150
+ pageUrl: 'https%3A%2F%2Ftassandigi.com%2Fserafettin%2Fads.html',
151
+ interstitial: 0,
152
+ session: '1c02db03-5289-932a-93af-7b4022611fec',
153
+ token: '1c02db03-5289-937a-93df-7b4022611fec',
154
+ secure: 1,
155
+ bidId: '2bdcb0b203c17d',
156
+ };
157
+ const bidRequest = {
158
+ 'method': 'GET',
159
+ 'url': ADPLUS_ENDPOINT,
160
+ 'data': requestData,
161
+ };
162
+
163
+ const bidResponse = {
164
+ body: [
165
+ {
166
+ 'ad': '<div>ad</div>',
167
+ 'advertiserDomains': [
168
+ 'advertiser.com'
169
+ ],
170
+ 'categoryIDs': [
171
+ 'IAB-111'
172
+ ],
173
+ 'cpm': 3.57,
174
+ 'creativeID': '1',
175
+ 'currency': 'TRY',
176
+ 'dealID': '1',
177
+ 'height': 300,
178
+ 'mediaType': 'banner',
179
+ 'netRevenue': true,
180
+ 'requestID': '2bdcb0b203c17d',
181
+ 'ttl': 300,
182
+ 'width': 250
183
+ }
184
+ ],
185
+ headers: {}
186
+ };
187
+
188
+ const emptyBidResponse = {
189
+ body: null,
190
+ };
191
+
192
+ it('returns an empty array when the result body is not valid', function () {
193
+ const result = spec.interpretResponse(emptyBidResponse, bidRequest);
194
+ expect(result).to.deep.equal([]);
195
+ });
196
+
197
+ it('result is correct', function () {
198
+ const result = spec.interpretResponse(bidResponse, bidRequest);
199
+ expect(result[0].requestId).to.equal('2bdcb0b203c17d');
200
+ expect(result[0].cpm).to.equal(3.57);
201
+ expect(result[0].width).to.equal(250);
202
+ expect(result[0].height).to.equal(300);
203
+ expect(result[0].creativeId).to.equal('1');
204
+ expect(result[0].currency).to.equal('TRY');
205
+ expect(result[0].dealId).to.equal('1');
206
+ expect(result[0].mediaType).to.equal('banner');
207
+ expect(result[0].netRevenue).to.equal(true);
208
+ expect(result[0].ttl).to.equal(300);
209
+ expect(result[0].meta.advertiserDomains).to.deep.equal(['advertiser.com']);
210
+ expect(result[0].meta.secondaryCatIds).to.deep.equal(['IAB-111']);
211
+ });
212
+ });
213
+ });