it('Bid request with wrong parameter', () => { const bidderRequest = { bidderCode: 'essens', requestId: 'impression-1', bidderRequestId: 'impression-for-essens-1', bids: [ { bidId: 'placement1-for_essensT1', bidder: 'essens', requestId: 'essens-impression-1', params: { randomParam: 'placement1' }, sizes: [ [100, 110], [200, 210] ], placementCode: 'div-media1-top_banner-1', bidderRequestId: 'impression-for-essens-1', } ] } const essensAdapter = new Adapter() essensAdapter.callBids(bidderRequest) sinon.assert.notCalled(stubLoadScript) })
it('invalid request: missing mandatory parameters', function () { const bidderRequest = { bidderCode: 'essens', requestId: 'impression-1', bidderRequestId: 'impression-for-essens-1', bids: [ { bidId: 'placement1-for_essensT4', bidder: 'essens', requestId: 'essens-impression-1', params: {}, sizes: [ [100, 110], [200, 210] ], placementCode: 'div-media1-top_banner-1', bidderRequestId: 'impression-for-essens-1', } ] } const essensAdapter = new Adapter() essensAdapter.callBids(bidderRequest) sinon.assert.notCalled(stubLoadScript) })
it('bid request with missing parameter', () => { const bidderRequest = { bidderCode: 'essens', requestId: 'impression-1', bidderRequestId: 'impression-for-essens-1' } const essensAdapter = new Adapter() essensAdapter.callBids(bidderRequest) sinon.assert.notCalled(stubLoadScript) })
it('should fill all parameters', function () { const bidderRequest = { bidderCode: 'essens', requestId: 'impression-1', bidderRequestId: 'impression-for-essens-1', bids: [ { bidId: 'placement1-for_essensT3', bidder: 'essens', requestId: 'essens-impression-1', params: { placementId: 'placement1', dealId: '1234', floorPrice: '23.478' }, sizes: [ [100, 110], [200, 210] ], placementCode: 'div-media1-top_banner-1', bidderRequestId: 'impression-for-essens-1', } ] } const essensAdapter = new Adapter() essensAdapter.callBids(bidderRequest) const url = stubLoadScript.getCall(0).args[0] const payload = decodeURIComponent(url.split('&bid=')[1]) const payloadJson = JSON.parse(payload) expect(payloadJson.ua).to.exist.and.to.be.a('string') expect(payloadJson.url).to.exist.and.to.be.a('string') expect(Object.keys(payloadJson.imp).length).to.equal(1) expect(payloadJson.imp[0].impressionId).to.equal('placement1-for_essensT3') expect(payloadJson.imp[0].placementId).to.equal('placement1') expect(Object.keys(payloadJson.imp[0].sizes).length).to.equal(2) expect(payloadJson.imp[0].sizes[0]).to.equal('100x110') expect(payloadJson.imp[0].sizes[1]).to.equal('200x210') expect(payloadJson.imp[0].deal).to.equal('1234') expect(payloadJson.imp[0].floorPrice).to.equal('23.478') })
it('Check invalid response', function () { const bidderRequest = { bidderCode: 'essens', requestId: 'impression-1', bidderRequestId: 'impression-for-essens-1', bids: [ { bidId: 'placement1-for_essens', bidder: 'essens', requestId: 'essens-impression-1', params: { placementId: 'placement1' }, sizes: [ [100, 110], [200, 210] ], placementCode: 'div-media1-top_banner-1T1', bidderRequestId: 'impression-for-essens-1', } ] } const response = { 'id': '1234' } const essensAdapter = new Adapter() essensAdapter.callBids(bidderRequest) $$PREBID_GLOBAL$$.essensResponseHandler(response) const bidPlacementCode1 = stubAddBidResponse.getCall(0).args[0] const bidObject1 = stubAddBidResponse.getCall(0).args[1] expect(bidPlacementCode1).to.equal('div-media1-top_banner-1T1') expect(bidObject1.getStatusCode()).to.equal(2) expect(bidObject1.bidderCode).to.equal('essens') sinon.assert.calledOnce(stubAddBidResponse) })
it('add more than one valid requests', function () { const bidderRequest = { bidderCode: 'essens', requestId: 'impression-1', bidderRequestId: 'impression-for-essens-1', bids: [ { bidId: 'placement1-for_essensT2', bidder: 'essens', requestId: 'essens-impression-1', params: { placementId: 'placement1' }, sizes: [ [100, 110], [200, 210] ], placementCode: 'div-media1-top_banner-1', bidderRequestId: 'impression-for-essens-1', }, { bidId: 'placement2-for_essensT2', bidder: 'essens', requestId: 'essens-impression-1', params: { placementId: 'placement2' }, sizes: [ [300, 310], [400, 410] ], placementCode: 'div-media1-side_banner-1', bidderRequestId: 'impression-for-essens-1', }, { bidId: 'placement3-for_essensT2', bidder: 'essens', requestId: 'essens-impression-1', params: { placementId: 'placement3' }, sizes: [ [500, 510], [600, 610] ], placementCode: 'div-media1-side_banner-2', bidderRequestId: 'impression-for-essens-1', }, ] } const essensAdapter = new Adapter() essensAdapter.callBids(bidderRequest) const url = stubLoadScript.getCall(0).args[0] const payload = decodeURIComponent(url.split('&bid=')[1]) const payloadJson = JSON.parse(payload) expect(payloadJson.ua).to.exist.and.to.be.a('string') expect(payloadJson.url).to.exist.and.to.be.a('string') expect(Object.keys(payloadJson.imp).length).to.equal(3) expect(payloadJson.imp[0].impressionId).to.equal('placement1-for_essensT2') expect(payloadJson.imp[0].placementId).to.equal('placement1') expect(Object.keys(payloadJson.imp[0].sizes).length).to.equal(2) expect(payloadJson.imp[0].sizes[0]).to.equal('100x110') expect(payloadJson.imp[0].sizes[1]).to.equal('200x210') expect(payloadJson.imp[1].impressionId).to.equal('placement2-for_essensT2') expect(payloadJson.imp[1].placementId).to.equal('placement2') expect(Object.keys(payloadJson.imp[1].sizes).length).to.equal(2) expect(payloadJson.imp[1].sizes[0]).to.equal('300x310') expect(payloadJson.imp[1].sizes[1]).to.equal('400x410') expect(payloadJson.imp[2].impressionId).to.equal('placement3-for_essensT2') expect(payloadJson.imp[2].placementId).to.equal('placement3') expect(Object.keys(payloadJson.imp[2].sizes).length).to.equal(2) expect(payloadJson.imp[2].sizes[0]).to.equal('500x510') expect(payloadJson.imp[2].sizes[1]).to.equal('600x610') sinon.assert.calledOnce(stubLoadScript) })
it('Check empty and non empty mixed response', function () { const bidderRequest = { bidderCode: 'essens', requestId: 'impression-1', bidderRequestId: 'impression-for-essens-1', bids: [ { bidId: 'bid-on-placement1-for_essens', bidder: 'essens', requestId: 'essens-impression-1', params: { placementId: 'placement1' }, sizes: [ [100, 110], [200, 210] ], placementCode: 'div-media1-top_banner-1T5', bidderRequestId: 'impression-for-essens-1', }, { bidId: 'bid-on-placement2-for_essens', bidder: 'essens', requestId: 'essens-impression-1', params: { placementId: 'placement2' }, sizes: [ [300, 310], [400, 410] ], placementCode: 'div-media1-side_banner-1T5', bidderRequestId: 'impression-for-essens-1', } ] } const response = { 'id': 'impression-for-essens-1', 'cur': 'USD', 'seatbid': [{ 'bid': [{ 'id': 'responseOnBid1', 'impid': 'bid-on-placement2-for_essens', 'price': 9.01, 'crid': 'creativeId1', 'dealid': 'dealId1', 'h': 500, 'w': 510, 'ext': { 'adUrl': 'creative-link' } }] }] } const essensAdapter = new Adapter() essensAdapter.callBids(bidderRequest) $$PREBID_GLOBAL$$.essensResponseHandler(response) let bidPlacementCode1 let bidPlacementCode2 let bidObject1 let bidObject2 if (stubAddBidResponse.getCall(0).args[0] === 'div-media1-side_banner-1T5') { bidPlacementCode1 = stubAddBidResponse.getCall(0).args[0] bidPlacementCode2 = stubAddBidResponse.getCall(1).args[0] bidObject1 = stubAddBidResponse.getCall(0).args[1] bidObject2 = stubAddBidResponse.getCall(1).args[1] } else { bidPlacementCode1 = stubAddBidResponse.getCall(1).args[0] bidPlacementCode2 = stubAddBidResponse.getCall(0).args[0] bidObject1 = stubAddBidResponse.getCall(1).args[1] bidObject2 = stubAddBidResponse.getCall(0).args[1] } expect(bidPlacementCode1).to.equal('div-media1-side_banner-1T5') expect(bidObject1.getStatusCode()).to.equal(1) expect(bidObject1.bidderCode).to.equal('essens') expect(bidObject1.creative_id).to.equal('creativeId1') expect(bidObject1.cpm).to.equal(9.01) expect(bidObject1.height).to.equal(500) expect(bidObject1.width).to.equal(510) expect(bidObject1.adUrl).to.equal('creative-link') expect(bidObject1.adId).to.equal('bid-on-placement2-for_essens') expect(bidObject1.dealId).to.equal('dealId1') expect(bidPlacementCode2).to.equal('div-media1-top_banner-1T5') expect(bidObject2.getStatusCode()).to.equal(2) expect(bidObject2.bidderCode).to.equal('essens') sinon.assert.calledTwice(stubAddBidResponse) })
it('Check single non empty minimal valid response', function () { const bidderRequest = { bidderCode: 'essens', requestId: 'impression-1', bidderRequestId: 'impression-for-essens-1', bids: [ { bidId: 'bid-on-placement1-for_essens', bidder: 'essens', requestId: 'essens-impression-1', params: { placementId: 'placement1' }, sizes: [ [100, 110], [200, 210] ], placementCode: 'div-media1-top_banner-1T3', bidderRequestId: 'impression-for-essens-1', } ] } const response = { 'id': 'impression-for-essens-1', 'cur': 'USD', 'seatbid': [{ 'bid': [{ 'id': 'responseOnBid1', 'impid': 'bid-on-placement1-for_essens', 'price': 9.01, 'crid': 'creativeId1', 'h': 300, 'w': 310, 'ext': { 'adUrl': 'creative-link' } }] }] } const essensAdapter = new Adapter() essensAdapter.callBids(bidderRequest) $$PREBID_GLOBAL$$.essensResponseHandler(response) const bidPlacementCode1 = stubAddBidResponse.getCall(0).args[0] const bidObject1 = stubAddBidResponse.getCall(0).args[1] expect(bidPlacementCode1).to.equal('div-media1-top_banner-1T3') expect(bidObject1.getStatusCode()).to.equal(1) expect(bidObject1.bidderCode).to.equal('essens') expect(bidObject1.creative_id).to.equal('creativeId1') expect(bidObject1.cpm).to.equal(9.01) expect(bidObject1.height).to.equal(300) expect(bidObject1.width).to.equal(310) expect(bidObject1.adUrl).to.equal('creative-link') expect(bidObject1.adId).to.equal('bid-on-placement1-for_essens') sinon.assert.calledOnce(stubAddBidResponse) })
it('bid request without bid', () => { const essensAdapter = new Adapter() essensAdapter.callBids() sinon.assert.notCalled(stubLoadScript) })