From ab82f8366f4a9dacba97163b0de0a14fc86503a0 Mon Sep 17 00:00:00 2001 From: Matt Kendall Date: Wed, 6 Jan 2016 11:22:37 -0500 Subject: [PATCH] Add unit tests for bidmanager.getKeyValueTargetingPairs --- gulpfile.js | 4 +- src/bidmanager.js | 6 +- test/automatedRunnner.html | 11 ++- test/test.js | 156 +++++++++++++++++++++++++++++++++++++ 4 files changed, 170 insertions(+), 7 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 1ce30bcb945..141cac6d585 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -104,7 +104,7 @@ gulp.task('codeQuality', ['jshint', 'jscs'], function() {}); gulp.task('default', ['build'], function() {}); -gulp.task('serve', ['build-dev', 'watch'], function () { +gulp.task('serve', ['build-dev', 'watch', 'browser-sync'], function () { var port = 9999; require('http').createServer(ecstatic({ root: __dirname @@ -112,7 +112,7 @@ gulp.task('serve', ['build-dev', 'watch'], function () { console.log('Server started at http://localhost:' + port + '/'); }); -gulp.task('build-dev', ['jscs', 'clean-dist', 'browserify', 'browser-sync', 'unit-tests'], function () { +gulp.task('build-dev', ['jscs', 'clean-dist', 'browserify', 'unit-tests'], function () { gulp.src(['src/prebid.js']) .pipe(gulpBrowserify({ debug: false diff --git a/src/bidmanager.js b/src/bidmanager.js index 27e12b9c4ab..f52062d08e4 100644 --- a/src/bidmanager.js +++ b/src/bidmanager.js @@ -168,7 +168,7 @@ exports.addBidResponse = function(adUnitCode, bid) { //if there is any key value pairs to map do here var keyValues = {}; if (bid.bidderCode && bid.cpm !== 0) { - keyValues = getKeyValueTargetingPairs(bid.bidderCode, bid); + keyValues = this.getKeyValueTargetingPairs(bid.bidderCode, bid); bid.adserverTargeting = keyValues; } @@ -213,7 +213,7 @@ exports.createEmptyBidResponseObj = function() { }; }; -function getKeyValueTargetingPairs(bidderCode, custBidObj) { +exports.getKeyValueTargetingPairs = function(bidderCode, custBidObj) { //retrive key value settings var keyValues = {}; var bidder_settings = pbjs.bidderSettings || {}; @@ -260,7 +260,7 @@ function getKeyValueTargetingPairs(bidderCode, custBidObj) { } return keyValues; -} +}; function setKeys(keyValues, bidderSettings, custBidObj) { var targeting = bidderSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING]; diff --git a/test/automatedRunnner.html b/test/automatedRunnner.html index 51bdae3a3cf..2f82a9a36da 100644 --- a/test/automatedRunnner.html +++ b/test/automatedRunnner.html @@ -3,20 +3,27 @@ - TextChanger tests + Unit Tests for Prebid.js
+ + + + - + + \ No newline at end of file diff --git a/test/test.js b/test/test.js index 7b70fee0157..2806a7dc6e2 100644 --- a/test/test.js +++ b/test/test.js @@ -4,6 +4,7 @@ var assert = require("assert"); //TODO refactor to use the spec files var utils = require('../src/utils'); +var bidmanager = require('../src/bidmanager'); describe('replaceTokenInString', function(){ @@ -22,4 +23,159 @@ var utils = require('../src/utils'); assert.equal(output, "hello %FOO%"); }); + }); + + + describe('bidmanager.js', function(){ + + + + describe('getKeyValueTargetingPairs', function(){ + var bid = {}; + var bidPriceCpm = 5.578; + var bidPbLg = 5.50; + var bidPbMg = 5.50; + var bidPbHg = 5.57; + var adUnitCode = '12345'; + var bidderCode = 'appnexus'; + var size = '300x250'; + var adId = '1adId'; + + before(function() { + console.log(pbjs); + bid.cpm = bidPriceCpm; + bid.pbLg = bidPbLg; + bid.pbMg = bidPbMg; + bid.pbHg = bidPbHg; + bid.height = 300; + bid.width = 250; + bid.adUnitCode = adUnitCode; + bid.getSize = function(){ + return this.height + 'x' + this.width; + }; + bid.bidderCode = bidderCode; + bid.adId = adId; + + }); + + + it('No bidder level configuration defined - default', function() { + var expected = {"hb_bidder": bidderCode, "hb_adid": adId,"hb_pb": bidPbMg,"hb_size": size}; + var response = bidmanager.getKeyValueTargetingPairs(bidderCode, bid); + assert.deepEqual(response, expected); + + }); + + it('Custom configuration for all bidders', function() { + pbjs.bidderSettings = + { + standard: { + adserverTargeting: [{ + key: "hb_bidder", + val: function(bidResponse) { + return bidResponse.bidderCode; + } + }, { + key: "hb_adid", + val: function(bidResponse) { + return bidResponse.adId; + } + }, { + key: "hb_pb", + val: function(bidResponse) { + //change default here + return bidResponse.pbHg; + } + }, { + key: "hb_size", + val: function(bidResponse) { + return bidResponse.size; + + } + }] + + } + }; + + var expected = {"hb_bidder": bidderCode, "hb_adid": adId,"hb_pb": bidPbHg,"hb_size": size}; + var response = bidmanager.getKeyValueTargetingPairs(bidderCode, bid); + assert.deepEqual(response, expected); + + }); + + it('Custom configuration for one bidder', function() { + pbjs.bidderSettings = + { + appnexus: { + adserverTargeting: [{ + key: "hb_bidder", + val: function(bidResponse) { + return bidResponse.bidderCode; + } + }, { + key: "hb_adid", + val: function(bidResponse) { + return bidResponse.adId; + } + }, { + key: "hb_pb", + val: function(bidResponse) { + //change default here + return bidResponse.pbHg; + } + }, { + key: "hb_size", + val: function(bidResponse) { + return bidResponse.size; + + } + }] + + } + }; + + var expected = {"hb_bidder": bidderCode, "hb_adid": adId,"hb_pb": bidPbHg,"hb_size": size}; + var response = bidmanager.getKeyValueTargetingPairs(bidderCode, bid); + assert.deepEqual(response, expected); + + }); + + it('Custom configuration for one bidder - not matched', function() { + pbjs.bidderSettings = + { + nonExistentBidder: { + adserverTargeting: [{ + key: "hb_bidder", + val: function(bidResponse) { + return bidResponse.bidderCode; + } + }, { + key: "hb_adid", + val: function(bidResponse) { + return bidResponse.adId; + } + }, { + key: "hb_pb", + val: function(bidResponse) { + //change default here + return bidResponse.pbHg; + } + }, { + key: "hb_size", + val: function(bidResponse) { + return bidResponse.size; + + } + }] + + } + }; + + var expected = {"hb_bidder": bidderCode, "hb_adid": adId,"hb_pb": bidPbMg,"hb_size": size}; + var response = bidmanager.getKeyValueTargetingPairs(bidderCode, bid); + assert.deepEqual(response, expected); + + }); + + }); }); \ No newline at end of file