From a8c6cbfd44bd5a0331fc6e68ce3fc42f23b12161 Mon Sep 17 00:00:00 2001 From: Eric Harper Date: Wed, 22 Nov 2017 00:38:20 -0500 Subject: [PATCH] s2s requests now firing BID_REQUESTED event --- src/adaptermanager.js | 5 +++ test/spec/unit/core/adapterManager_spec.js | 51 ++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/adaptermanager.js b/src/adaptermanager.js index ba3c320463e..a009e91cd24 100644 --- a/src/adaptermanager.js +++ b/src/adaptermanager.js @@ -243,6 +243,11 @@ exports.callBids = (adUnits, bidRequests, addBidResponse, doneCb) => { return allBidders.includes(adapter); }).join(',')}`); + // fire BID_REQUESTED event for each s2s bidRequest + serverBidRequests.forEach(bidRequest => { + events.emit(CONSTANTS.EVENTS.BID_REQUESTED, bidRequest); + }); + // make bid requests s2sAdapter.callBids( s2sBidRequest, diff --git a/test/spec/unit/core/adapterManager_spec.js b/test/spec/unit/core/adapterManager_spec.js index 1a8f37518fc..1283fa3a75b 100644 --- a/test/spec/unit/core/adapterManager_spec.js +++ b/test/spec/unit/core/adapterManager_spec.js @@ -7,6 +7,7 @@ import { config } from 'src/config'; import { registerBidder } from 'src/adapters/bidderFactory'; import { setSizeConfig } from 'src/sizeMapping'; var s2sTesting = require('../../../../modules/s2sTesting'); +var events = require('../../../../src/events'); const CONFIG = { enabled: true, @@ -90,6 +91,22 @@ describe('adapterManager tests', () => { sinon.assert.called(utils.logError); }); + + it('should emit BID_REQUESTED event', () => { + // function to count BID_REQUESTED events + let cnt = 0; + let count = () => cnt++; + events.on(CONSTANTS.EVENTS.BID_REQUESTED, count); + AdapterManager.bidderRegistry['appnexus'] = appnexusAdapterMock; + let adUnits = getAdUnits(); + let bidRequests = AdapterManager.makeBidRequests(adUnits, 1111, 2222, 1000); + AdapterManager.callBids(adUnits, bidRequests, () => {}, () => {}); + expect(cnt).to.equal(1); + sinon.assert.calledOnce(appnexusAdapterMock.callBids); + appnexusAdapterMock.callBids.reset(); + delete AdapterManager.bidderRegistry['appnexus']; + events.off(CONSTANTS.EVENTS.BID_REQUESTED, count); + }); }); describe('S2S tests', () => { @@ -253,6 +270,40 @@ describe('adapterManager tests', () => { expect(requestObj.ad_units.length).to.equal(2); sinon.assert.calledOnce(prebidServerAdapterMock.callBids); }); + + describe('BID_REQUESTED event', () => { + // function to count BID_REQUESTED events + let cnt, count = () => cnt++; + + beforeEach(() => { + cnt = 0; + events.on(CONSTANTS.EVENTS.BID_REQUESTED, count); + }); + + afterEach(() => { + events.off(CONSTANTS.EVENTS.BID_REQUESTED, count); + }); + + it('should fire for s2s requests', () => { + let adUnits = getAdUnits(); + let bidRequests = AdapterManager.makeBidRequests(adUnits, 1111, 2222, 1000); + AdapterManager.callBids(adUnits, bidRequests, () => {}, () => {}); + expect(cnt).to.equal(1); + sinon.assert.calledOnce(prebidServerAdapterMock.callBids); + }); + + it('should fire for simultaneous s2s and client requests', () => { + AdapterManager.bidderRegistry['adequant'] = adequantAdapterMock; + let adUnits = getAdUnits(); + let bidRequests = AdapterManager.makeBidRequests(adUnits, 1111, 2222, 1000); + AdapterManager.callBids(adUnits, bidRequests, () => {}, () => {}); + expect(cnt).to.equal(2); + sinon.assert.calledOnce(prebidServerAdapterMock.callBids); + sinon.assert.calledOnce(adequantAdapterMock.callBids); + adequantAdapterMock.callBids.reset(); + delete AdapterManager.bidderRegistry['adequant']; + }); + }); }); // end s2s tests describe('s2sTesting', () => {