diff --git a/modules/acuityadsBidAdapter.js b/modules/acuityadsBidAdapter.js index b94234c2c26..2ddd0eb81de 100644 --- a/modules/acuityadsBidAdapter.js +++ b/modules/acuityadsBidAdapter.js @@ -1,19 +1,35 @@ import { registerBidder } from '../src/adapters/bidderFactory.js'; import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js'; -import { isBidRequestValid, buildRequests, interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js'; +import { + isBidRequestValid, + buildRequestsBase, + interpretResponse, + getUserSyncs, + buildPlacementProcessingFunction +} from '../libraries/teqblazeUtils/bidderUtils.js'; const BIDDER_CODE = 'acuityads'; const GVLID = 231; const AD_URL = 'https://prebid.admanmedia.com/pbjs'; const SYNC_URL = 'https://cs.admanmedia.com'; +const addCustomFieldsToPlacement = (bid, bidderRequest, placement) => { + placement.publisherId = bid.params.publisherId || ''; +}; + +const placementProcessingFunction = buildPlacementProcessingFunction({ addCustomFieldsToPlacement }); + +const buildRequests = (validBidRequests = [], bidderRequest = {}) => { + return buildRequestsBase({ adUrl: AD_URL, validBidRequests, bidderRequest, placementProcessingFunction }); +}; + export const spec = { code: BIDDER_CODE, gvlid: GVLID, supportedMediaTypes: [BANNER, VIDEO, NATIVE], isBidRequestValid: isBidRequestValid(), - buildRequests: buildRequests(AD_URL), + buildRequests, interpretResponse, getUserSyncs: getUserSyncs(SYNC_URL) }; diff --git a/modules/acuityadsBidAdapter.md b/modules/acuityadsBidAdapter.md index 7f001cd9376..2aa355a3054 100644 --- a/modules/acuityadsBidAdapter.md +++ b/modules/acuityadsBidAdapter.md @@ -27,7 +27,8 @@ AcuityAds bid adapter supports Banner, Video (instream and outstream) and Native bidder: 'acuityads', params: { placementId: 'testBanner', - } + endpointId: 'testBanner', + publisherId: 'testBanner', } ] }, @@ -46,6 +47,8 @@ AcuityAds bid adapter supports Banner, Video (instream and outstream) and Native bidder: 'acuityads', params: { placementId: 'testVideo', + endpointId: 'testVideo', + publisherId: 'testVideo', } } ] @@ -71,9 +74,11 @@ AcuityAds bid adapter supports Banner, Video (instream and outstream) and Native bidder: 'acuityads', params: { placementId: 'testNative', + endpointId: 'testNative', + publisherId: 'testNative', } } ] } ]; -``` \ No newline at end of file +``` diff --git a/test/spec/modules/acuityadsBidAdapter_spec.js b/test/spec/modules/acuityadsBidAdapter_spec.js index 40de7db69c3..587bf01dd38 100644 --- a/test/spec/modules/acuityadsBidAdapter_spec.js +++ b/test/spec/modules/acuityadsBidAdapter_spec.js @@ -175,6 +175,56 @@ describe('AcuityAdsBidAdapter', function () { expect(placement.bidfloor).to.exist.and.to.equal(0); expect(placement.type).to.exist.and.to.equal('publisher'); expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids); + expect(placement.publisherId).to.exist.and.to.be.a('string'); + + if (placement.adFormat === BANNER) { + expect(placement.sizes).to.be.an('array'); + } + switch (placement.adFormat) { + case BANNER: + expect(placement.sizes).to.be.an('array'); + break; + case VIDEO: + expect(placement.playerSize).to.be.an('array'); + expect(placement.minduration).to.be.an('number'); + expect(placement.maxduration).to.be.an('number'); + break; + case NATIVE: + expect(placement.native).to.be.an('object'); + break; + } + } + }); + + it('Returns valid endpoints', function () { + const bids = [ + { + bidId: getUniqueIdentifierStr(), + bidder: bidder, + mediaTypes: { + [BANNER]: { + sizes: [[300, 250]] + } + }, + params: { + endpointId: 'testBanner', + }, + userIdAsEids + } + ]; + + let serverRequest = spec.buildRequests(bids, bidderRequest); + + const { placements } = serverRequest.data; + for (let i = 0, len = placements.length; i < len; i++) { + const placement = placements[i]; + expect(placement.endpointId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']); + expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]); + expect(placement.bidId).to.be.a('string'); + expect(placement.schain).to.be.an('object'); + expect(placement.bidfloor).to.exist.and.to.equal(0); + expect(placement.type).to.exist.and.to.equal('network'); + expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids); if (placement.adFormat === BANNER) { expect(placement.sizes).to.be.an('array');