UNPKG

mk9-prebid

Version:

Header Bidding Management Library

136 lines (118 loc) 3.88 kB
import { expect } from 'chai' import { spec } from 'modules/glomexBidAdapter.js' import { newBidder } from 'src/adapters/bidderFactory.js' const REQUEST = { bidder: 'glomex', params: { integrationId: 'abcdefg', playlistId: 'defghjk' }, bidderRequestId: '143346cf0f1732', auctionId: '2e41f65424c87c', adUnitCode: 'adunit-code', bidId: '2d925f27f5079f', sizes: [640, 360] } const BIDDER_REQUEST = { auctionId: '2d921234f5079f', refererInfo: { isAmp: true, numIframes: 0, reachedTop: true, referer: 'https://glomex.com' }, gdprConsent: { gdprApplies: true, consentString: 'CO5asbJO5asbJE-AAAENAACAAAAAAAAAAAYgAAAAAAAA.IAAA' } } const RESPONSE = { bids: [ { id: '2d925f27f5079f', cpm: 3.5, width: 640, height: 360, creativeId: 'creative-1j75x4ln1kk6m1ius', dealId: 'deal-1j75x4ln1kk6m1iut', currency: 'EUR', netRevenue: true, ttl: 300, ad: '<ad />', adomain: ['glomex.com'] } ] } describe('glomexBidAdapter', 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 () { it('should return true when required params found', function () { const request = { 'params': { 'integrationId': 'abcdefg' } } expect(spec.isBidRequestValid(request)).to.equal(true) }) it('should return false when required params are not passed', function () { expect(spec.isBidRequestValid({})).to.equal(false) }) }) describe('buildRequests', function () { const bidRequests = [REQUEST] const request = spec.buildRequests(bidRequests, BIDDER_REQUEST) it('sends bid request to ENDPOINT via POST', function () { expect(request.method).to.equal('POST') }) it('returns a list of valid requests', function () { expect(request.validBidRequests).to.eql([REQUEST]) }) it('sends params.integrationId', function () { expect(request.validBidRequests[0].params.integrationId).to.eql(REQUEST.params.integrationId) }) it('sends params.playlistId', function () { expect(request.validBidRequests[0].params.playlistId).to.eql(REQUEST.params.playlistId) }) it('sends refererInfo', function () { expect(request.data.refererInfo).to.eql(BIDDER_REQUEST.refererInfo) }) it('sends gdprConsent', function () { expect(request.data.gdprConsent).to.eql(BIDDER_REQUEST.gdprConsent) }) it('sends the auctionId', function () { expect(request.data.auctionId).to.eql(BIDDER_REQUEST.auctionId) }) }) describe('interpretResponse', function () { it('handles nobid responses', function () { expect(spec.interpretResponse({body: {}}, {validBidRequests: []}).length).to.equal(0) expect(spec.interpretResponse({body: []}, {validBidRequests: []}).length).to.equal(0) }) it('handles the server response', function () { const result = spec.interpretResponse( { body: RESPONSE }, { validBidRequests: [REQUEST] } ) expect(result[0].requestId).to.equal('2d925f27f5079f') expect(result[0].cpm).to.equal(3.5) expect(result[0].width).to.equal(640) expect(result[0].height).to.equal(360) expect(result[0].creativeId).to.equal('creative-1j75x4ln1kk6m1ius') expect(result[0].dealId).to.equal('deal-1j75x4ln1kk6m1iut') expect(result[0].currency).to.equal('EUR') expect(result[0].netRevenue).to.equal(true) expect(result[0].ttl).to.equal(300) expect(result[0].ad).to.equal('<ad />') expect(result[0].meta.advertiserDomains).to.deep.equal(['glomex.com']) }) }) })