Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LunamediaHB bid adapter #5906

Merged
merged 13 commits into from
Nov 6, 2020
15 changes: 6 additions & 9 deletions modules/lunamediahbBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ function isBidResponseValid(bid) {
case VIDEO:
return Boolean(bid.vastUrl);
case NATIVE:
return Boolean(bid.impressionTrackers);
return Boolean(bid.native && bid.native.impressionTrackers);
default:
return false;
}
Expand All @@ -27,7 +27,7 @@ export const spec = {
supportedMediaTypes: [BANNER, VIDEO, NATIVE],

isBidRequestValid: (bid) => {
return Boolean(bid.bidId && bid.params && bid.mediaTypes && !isNaN(parseInt(bid.params.placementId)));
return Boolean(bid.bidId && bid.params && !isNaN(parseInt(bid.params.placementId)));
},

buildRequests: (validBidRequests = [], bidderRequest) => {
Expand Down Expand Up @@ -67,20 +67,17 @@ export const spec = {
const placement = {
placementId: bid.params.placementId,
bidId: bid.bidId,
traffic: bid.params.traffic || BANNER,
ncolletti marked this conversation as resolved.
Show resolved Hide resolved
schain: bid.schain || {},
};
const mediaType = bid.mediaTypes

if (mediaType && bid.mediaTypes[BANNER] && bid.mediaTypes[BANNER].sizes) {
if (bid.mediaTypes && bid.mediaTypes[BANNER] && bid.mediaTypes[BANNER].sizes) {
placement.sizes = bid.mediaTypes[BANNER].sizes;
placement.traffic = BANNER;
} else if (mediaType && bid.mediaTypes[VIDEO] && bid.mediaTypes[VIDEO].playerSize) {
} else if (bid.mediaTypes && bid.mediaTypes[VIDEO] && bid.mediaTypes[VIDEO].playerSize) {
placement.wPlayer = bid.mediaTypes[VIDEO].playerSize[0];
placement.hPlayer = bid.mediaTypes[VIDEO].playerSize[1];
placement.traffic = VIDEO;
} else if (mediaType && bid.mediaTypes[NATIVE]) {
} else if (bid.mediaTypes && bid.mediaTypes[NATIVE]) {
placement.native = bid.mediaTypes[NATIVE];
placement.traffic = NATIVE;
}
placements.push(placement);
}
Expand Down
28 changes: 17 additions & 11 deletions test/spec/modules/lunamediahbBidAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ describe('LunamediaHBBidAdapter', function () {
}
},
params: {
placementId: 783
placementId: 783,
traffic: BANNER
}
};

Expand Down Expand Up @@ -70,6 +71,7 @@ describe('LunamediaHBBidAdapter', function () {
it('Returns valid data for mediatype video', function () {
const playerSize = [300, 300];
bid.mediaTypes = {};
bid.params.traffic = VIDEO;
bid.mediaTypes[VIDEO] = {
playerSize
};
Expand Down Expand Up @@ -99,6 +101,7 @@ describe('LunamediaHBBidAdapter', function () {
};

bid.mediaTypes = {};
bid.params.traffic = NATIVE;
bid.mediaTypes[NATIVE] = native;
serverRequest = spec.buildRequests([bid], bidderRequest);
let data = serverRequest.data;
Expand Down Expand Up @@ -201,10 +204,12 @@ describe('LunamediaHBBidAdapter', function () {
const native = {
body: [{
mediaType: 'native',
clickUrl: 'test.com',
title: 'Test',
image: 'test.com',
impressionTrackers: ['test.com'],
native: {
clickUrl: 'test.com',
title: 'Test',
image: 'test.com',
impressionTrackers: ['test.com'],
},
ttl: 120,
cpm: 0.4,
requestId: '23fhj33i987f',
Expand All @@ -217,14 +222,15 @@ describe('LunamediaHBBidAdapter', function () {
expect(nativeResponses).to.be.an('array').that.is.not.empty;

let dataItem = nativeResponses[0];
expect(dataItem).to.have.keys('requestId', 'cpm', 'ttl', 'creativeId', 'netRevenue', 'currency', 'mediaType', 'clickUrl', 'impressionTrackers', 'title', 'image');
expect(dataItem).to.have.keys('requestId', 'cpm', 'ttl', 'creativeId', 'netRevenue', 'currency', 'mediaType', 'native');
expect(dataItem.native).to.have.keys('clickUrl', 'impressionTrackers', 'title', 'image')
expect(dataItem.requestId).to.equal('23fhj33i987f');
expect(dataItem.cpm).to.equal(0.4);
expect(dataItem.clickUrl).to.equal('test.com');
expect(dataItem.title).to.equal('Test');
expect(dataItem.image).to.equal('test.com');
expect(dataItem.impressionTrackers).to.be.an('array').that.is.not.empty;
expect(dataItem.impressionTrackers[0]).to.equal('test.com');
expect(dataItem.native.clickUrl).to.equal('test.com');
expect(dataItem.native.title).to.equal('Test');
expect(dataItem.native.image).to.equal('test.com');
expect(dataItem.native.impressionTrackers).to.be.an('array').that.is.not.empty;
expect(dataItem.native.impressionTrackers[0]).to.equal('test.com');
expect(dataItem.ttl).to.equal(120);
expect(dataItem.creativeId).to.equal('2');
expect(dataItem.netRevenue).to.be.true;
Expand Down