mk9-prebid
Version:
Header Bidding Management Library
187 lines (166 loc) • 5.33 kB
JavaScript
import { expect } from 'chai';
import { spec } from 'modules/gmosspBidAdapter.js';
import { newBidder } from 'src/adapters/bidderFactory.js';
import {getStorageManager} from 'src/storageManager';
import * as utils from 'src/utils.js';
const ENDPOINT = 'https://sp.gmossp-sp.jp/hb/prebid/query.ad';
describe('GmosspAdapter', function () {
const adapter = newBidder(spec);
describe('inherited functions', function () {
it('exists and is a function', function () {
expect(adapter.callBids).to.exist.and.to.be.a('function');
});
});
describe('isBidRequestValid', function () {
let bid = {
bidder: 'gmossp',
params: {
sid: '123456'
}
};
it('should return true when required params found', function () {
expect(spec.isBidRequestValid(bid)).to.equal(true);
});
it('should return false when required params are not passed', function () {
let bid = Object.assign({}, bid);
delete bid.params;
bid.params = {};
expect(spec.isBidRequestValid(bid)).to.equal(false);
});
});
describe('buildRequests', function () {
const storage = getStorageManager();
const bidRequests = [
{
bidder: 'gmossp',
params: {
sid: '123456'
},
adUnitCode: 'adunit-code',
sizes: [
[300, 250],
[320, 50],
[320, 100],
],
bidId: '2b84475b5b636e',
bidderRequestId: '1f4001782ac16c',
auctionId: 'aba03555-4802-4c45-9f15-05ffa8594cff',
transactionId: '791e9d84-af92-4903-94da-24c7426d9d0c'
}
];
it('sends bid request to ENDPOINT via GET', function () {
const bidderRequest = {
refererInfo: {
referer: 'https://hoge.com'
}
};
storage.setCookie('_im_uid.1000283', 'h.0a4749e7ffe09fa6');
const requests = spec.buildRequests(bidRequests, bidderRequest);
expect(requests[0].url).to.equal(ENDPOINT);
expect(requests[0].method).to.equal('GET');
expect(requests[0].data).to.equal('tid=791e9d84-af92-4903-94da-24c7426d9d0c&bid=2b84475b5b636e&ver=$prebid.version$&sid=123456&im_uid=h.0a4749e7ffe09fa6&url=https%3A%2F%2Fhoge.com&cur=JPY&dnt=0&');
});
it('should use fallback if refererInfo.referer in bid request is empty and _im_uid.1000283 cookie is empty', function () {
const bidderRequest = {
refererInfo: {
referer: ''
}
};
storage.setCookie('_im_uid.1000283', '');
const requests = spec.buildRequests(bidRequests, bidderRequest);
const result = 'tid=791e9d84-af92-4903-94da-24c7426d9d0c&bid=2b84475b5b636e&ver=$prebid.version$&sid=123456&url=' + encodeURIComponent(window.top.location.href) + '&cur=JPY&dnt=0&';
expect(requests[0].data).to.equal(result);
});
});
describe('interpretResponse', function () {
const bidderRequests = [
{
bidder: 'gmossp',
params: {
sid: '123456'
},
adUnitCode: 'adunit-code',
sizes: [
[300, 250],
[320, 50],
[320, 100],
],
bidId: '2b84475b5b636e',
bidderRequestId: '1f4001782ac16c',
auctionId: 'aba03555-4802-4c45-9f15-05ffa8594cff',
transactionId: '791e9d84-af92-4903-94da-24c7426d9d0c'
}
];
it('should get correct banner bid response', function() {
const response = {
bid: '2b84475b5b636e',
price: 20,
w: 300,
h: 250,
adomains: [
'test.com'
],
ad: '<div class="gmossp"></div>',
creativeId: '985ec572b32be309.76973017',
cur: 'JPY',
dealId: '',
imps: [
'https://sp.gmossp-sp.jp/hb/prebid/imp.ad'
],
syncs: [
'https://sync.dsp.reemo-ad.jp'
],
ttl: 300
};
const expectedResponse = [
{
requestId: '2b84475b5b636e',
cpm: 20,
currency: 'JPY',
width: 300,
height: 250,
meta: {
advertiserDomains: [
'test.com'
]
},
ad: '<div class="gmossp"></div>',
creativeId: '985ec572b32be309.76973017',
netRevenue: true,
ttl: 300
}
];
const result = spec.interpretResponse({ body: response }, bidderRequests);
expect(result).to.have.lengthOf(1);
response.imps.forEach(impTracker => {
const tracker = utils.createTrackPixelHtml(impTracker);
expectedResponse[0].ad += tracker;
});
expect(result).to.deep.have.same.members(expectedResponse);
});
it('handles nobid responses', function () {
const response = '';
const result = spec.interpretResponse({ body: response }, bidderRequests);
expect(result.length).to.equal(0);
});
});
describe('getUserSyncs', function () {
const bidResponse = {
body: {
ad: {},
syncs: [
'https://hoge.com'
]
}
};
it('should return returns pixel syncs', function () {
const syncs = spec.getUserSyncs({ pixelEnabled: true, iframeEnabled: true }, [bidResponse]);
expect(syncs).to.deep.equal([
{
type: 'image',
url: 'https://hoge.com'
}
])
})
});
});