mk9-prebid
Version:
Header Bidding Management Library
178 lines (162 loc) • 5.22 kB
JavaScript
import {expect} from 'chai';
import {spec} from 'modules/temedyaBidAdapter.js';
import * as utils from 'src/utils.js';
const ENDPOINT_URL = 'https://adm.vidyome.com/';
export const _getUrlVars = function(url) {
var hash;
var myJson = {};
var hashes = url.slice(url.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
myJson[hash[0]] = hash[1];
}
return myJson;
}
describe('temedya adapter', function() {
let bidRequests;
let nativeBidRequests;
beforeEach(function() {
bidRequests = [
{
bidder: 'temedya',
params: {
widgetId: 753497,
count: 1
},
mediaTypes: {
banner: {
sizes: [[300, 250]]
}
}
}
]
nativeBidRequests = [
{
bidder: 'temedya',
params: {
widgetId: 753497,
count: 1
},
nativeParams: {
title: {
required: true
},
image: {
required: true
}
}
}
]
})
describe('isBidRequestValid', function () {
it('valid bid case', function () {
let validBid = {
bidder: 'temedya',
params: {
widgetId: 753497,
count: 1
}
}
let isValid = spec.isBidRequestValid(validBid);
expect(isValid).to.equal(true);
});
it('invalid bid case: widgetId and countId is not passed', function() {
let validBid = {
bidder: 'temedya',
params: {
}
}
let isValid = spec.isBidRequestValid(validBid);
expect(isValid).to.equal(false);
})
})
describe('buildRequests', function () {
it('sends bid request to ENDPOINT via GET', function () {
const request = spec.buildRequests(bidRequests)[0];
expect(request.url).to.include(ENDPOINT_URL);
expect(request.method).to.equal('GET');
});
it('buildRequests function should not modify original bidRequests object', function () {
let originalBidRequests = utils.deepClone(bidRequests);
let request = spec.buildRequests(bidRequests);
expect(bidRequests).to.deep.equal(originalBidRequests);
});
it('buildRequests function should not modify original nativeBidRequests object', function () {
let originalBidRequests = utils.deepClone(nativeBidRequests);
let request = spec.buildRequests(nativeBidRequests);
expect(nativeBidRequests).to.deep.equal(originalBidRequests);
});
it('Request params check', function() {
let request = spec.buildRequests(bidRequests)[0];
const data = _getUrlVars(request.url)
data.type = 'native';
data.wid = bidRequests[0].params.widgetId;
data.count = bidRequests[0].params.count;
})
})
describe('interpretResponse', function () {
let response = {
ads: [
{
'id': 30,
'name': 'Pro Trader Desktop Ocak',
'assets': {
'sponsor': 'Yatırım Bülteni',
'cpm': '0.30188070875464',
'name': 'SLC2-DESKTOP',
'files': [
'https://dsp-vidyome.cdn.vidyome.com/dsp/assets/84066_SLC2_640X480_82KB.jpg'
],
'id': 9,
'title': '6 ayda zengin oldu! Günde 2 saat çalışarak bilgisayar başında zengin oldu.',
'body': 'Sizde yapabilirsiniz!',
'landing_url': 'https://bit.ly/3l6RhKG',
'click_url': 'https://adclick.adm.vidyome.com/collect?campaignId=30&creativeId=9&widId=122129&v=1609960813742&uri=https%3A%2F%2Fbit.ly%2F3l6RhKG%3Futm_source%3DVidyome%26utm_medium%3Dnative%26utm_campaign%3D30%26utm_term%3D9%26utm_content%3D122129'
},
'conversion_urls': [
],
'impression_urls': [
]
}
],
base: {
'isSmartphone': false,
'isTablet': false,
'isDesktop': true,
'isConnectedTv': false,
'country': 'tr',
'wid': 753497,
'type': 'native',
'locale': 'tr',
'widget': {
'click': 'https://stats.vidyome.com/s/widgets/collect?widgetId=122129&eventType=click',
'impression': 'https://impression.adm.vidyome.com/collect/v1?widgetId=122129'
}
},
};
it('should get correct bid response', function () {
let expectedResponse = [
{
'requestId': '1d236f7890b',
'cpm': 0.0920,
'width': 300,
'height': 250,
'netRevenue': false,
'mediaType': 'native',
'currency': 'TRY',
'creativeId': '<!-- CREATIVE ID -->',
'ttl': 700,
'ad': '<!-- ADS TAG -->'
}
];
let request = spec.buildRequests(bidRequests)[0];
let result = spec.interpretResponse({body: response}, request);
expect(Object.keys(result[0])).to.have.members(Object.keys(expectedResponse[0]));
expect(result[0].cpm).to.not.equal(null);
expect(result[0].creativeId).to.not.equal(null);
expect(result[0].ad).to.not.equal(null);
expect(result[0].currency).to.equal('TRY');
expect(result[0].netRevenue).to.equal(false);
});
})
})