From 2ba0c96ce8e97ab893b3d50d9583b8aa793b83f1 Mon Sep 17 00:00:00 2001 From: guiann Date: Fri, 19 Mar 2021 17:57:12 +0100 Subject: [PATCH] AdYouLike Bid Adapter: replace shorthand "image" native config (#6401) * replace shrorthand "image" native type * merge publisher native config with image type config * add unit tests on native image config type --- modules/adyoulikeBidAdapter.js | 32 ++++++++- test/spec/modules/adyoulikeBidAdapter_spec.js | 71 +++++++++++++++++++ 2 files changed, 102 insertions(+), 1 deletion(-) diff --git a/modules/adyoulikeBidAdapter.js b/modules/adyoulikeBidAdapter.js index e5777f1e627..e46a9b6bed2 100644 --- a/modules/adyoulikeBidAdapter.js +++ b/modules/adyoulikeBidAdapter.js @@ -8,6 +8,30 @@ const VERSION = '1.0'; const BIDDER_CODE = 'adyoulike'; const DEFAULT_DC = 'hb-api'; +const NATIVE_IMAGE = { + image: { + required: true + }, + title: { + required: true + }, + sponsoredBy: { + required: true + }, + clickUrl: { + required: true + }, + body: { + required: false + }, + icon: { + required: false + }, + cta: { + required: false + } +}; + export const spec = { code: BIDDER_CODE, supportedMediaTypes: [BANNER, NATIVE], @@ -44,7 +68,13 @@ export const spec = { accumulator[bid.bidId].Width = size.width; accumulator[bid.bidId].Height = size.height; accumulator[bid.bidId].AvailableSizes = sizesArray.join(','); - if (bid.mediaTypes && bid.mediaTypes.native) accumulator[bid.bidId].Native = bid.mediaTypes.native; + if (bid.mediaTypes && bid.mediaTypes.native) { + let nativeReq = bid.mediaTypes.native; + if (nativeReq.type === 'image') { + nativeReq = Object.assign({}, NATIVE_IMAGE, nativeReq); + } + accumulator[bid.bidId].Native = nativeReq; + } return accumulator; }, {}), PageRefreshed: getPageRefreshed() diff --git a/test/spec/modules/adyoulikeBidAdapter_spec.js b/test/spec/modules/adyoulikeBidAdapter_spec.js index 4c108ed9f1d..8f60cbbbe3e 100644 --- a/test/spec/modules/adyoulikeBidAdapter_spec.js +++ b/test/spec/modules/adyoulikeBidAdapter_spec.js @@ -95,6 +95,29 @@ describe('Adyoulike Adapter', function () { } ]; + const bidRequestWithNativeImageType = [ + { + 'bidId': 'bid_id_0', + 'bidder': 'adyoulike', + 'placementCode': 'adunit/hb-0', + 'params': { + 'placement': 'placement_0' + }, + 'sizes': '300x250', + 'mediaTypes': + { + 'native': { + 'type': 'image', + 'additional': { + 'will': 'be', + 'sent': ['300x250'] + } + }, + }, + 'transactionId': 'bid_id_0_transaction_id' + } + ]; + const sentBidNative = { 'bid_id_0': { 'PlacementID': 'e622af275681965d3095808561a1e510', @@ -135,6 +158,37 @@ describe('Adyoulike Adapter', function () { } }; + const sentNativeImageType = { + 'additional': { + 'sent': [ + '300x250' + ], + 'will': 'be' + }, + 'body': { + 'required': false + }, + 'clickUrl': { + 'required': true + }, + 'cta': { + 'required': false + }, + 'icon': { + 'required': false + }, + 'image': { + 'required': true + }, + 'sponsoredBy': { + 'required': true + }, + 'title': { + 'required': true + }, + 'type': 'image' + }; + const bidRequestWithDCPlacement = [ { 'bidId': 'bid_id_0', @@ -341,6 +395,23 @@ describe('Adyoulike Adapter', function () { canonicalQuery.restore(); }); + it('Should expand short native image config type', function() { + const request = spec.buildRequests(bidRequestWithNativeImageType, bidderRequest); + const payload = JSON.parse(request.data); + + expect(request.url).to.contain(getEndpoint()); + expect(request.method).to.equal('POST'); + expect(request.url).to.contains('CanonicalUrl=' + encodeURIComponent(canonicalUrl)); + expect(request.url).to.contains('RefererUrl=' + encodeURIComponent(referrerUrl)); + expect(request.url).to.contains('PublisherDomain=http%3A%2F%2Flocalhost%3A9876'); + + expect(payload.Version).to.equal('1.0'); + expect(payload.Bids['bid_id_0'].PlacementID).to.be.equal('placement_0'); + expect(payload.PageRefreshed).to.equal(false); + expect(payload.Bids['bid_id_0'].TransactionID).to.be.equal('bid_id_0_transaction_id'); + expect(payload.Bids['bid_id_0'].Native).deep.equal(sentNativeImageType); + }); + it('should add gdpr/usp consent information to the request', function () { let consentString = 'BOJ8RZsOJ8RZsABAB8AAAAAZ+A=='; let uspConsentData = '1YCC';