Skip to content
This repository was archived by the owner on Mar 12, 2025. It is now read-only.

Commit 2bc0375

Browse files
committed
guAnalytics sends a separate bidwon event
1 parent c2822b7 commit 2bc0375

File tree

3 files changed

+50
-18
lines changed

3 files changed

+50
-18
lines changed

build/dist/prebid.js

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

modules/guAnalyticsAdapter.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ import {ajax} from 'src/ajax';
77

88
const analyticsType = 'endpoint';
99
const QUEUE_TIMEOUT = 4000;
10+
const SENDALL_ON = {};
11+
12+
// Look there: http://jsben.ch/qhIE6
13+
SENDALL_ON[CONSTANTS.EVENTS.AUCTION_END] = true;
14+
SENDALL_ON[CONSTANTS.EVENTS.BID_WON] = true;
1015

1116
let analyticsAdapter = Object.assign(adapter({analyticsType}),
1217
{
@@ -31,13 +36,16 @@ let analyticsAdapter = Object.assign(adapter({analyticsType}),
3136
case CONSTANTS.EVENTS.AUCTION_END:
3237
handler = trackAuctionEnd;
3338
break;
39+
case CONSTANTS.EVENTS.BID_WON:
40+
handler = trackBidWon;
41+
break;
3442
}
3543
if (handler) {
3644
let events = handler(args);
3745
if (events && analyticsAdapter.context.queue) {
3846
analyticsAdapter.context.queue.push(events);
3947
}
40-
if (eventType === CONSTANTS.EVENTS.AUCTION_END) {
48+
if ( SENDALL_ON[eventType] ) {
4149
sendAll();
4250
}
4351
}
@@ -67,6 +75,17 @@ function sendAll() {
6775
}
6876
}
6977

78+
function trackBidWon(args){
79+
const event = createHbEvent( args.bidderCode, 'bidwon',
80+
args.adUnitCode,
81+
args.auctionId,
82+
undefined, // timeToRespond
83+
undefined, // startTime
84+
args.bidId
85+
);
86+
return [event];
87+
}
88+
7089
function trackAuctionInit(args) {
7190
analyticsAdapter.context.auctionTimeStart = Date.now();
7291
const event = createHbEvent(undefined, 'init', undefined, args.auctionId, undefined, analyticsAdapter.context.auctionTimeStart);

test/spec/modules/guAnalyticsAdapter_spec.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,15 @@ import adaptermanager from 'src/adaptermanager';
44
import * as ajax from 'src/ajax';
55
import CONSTANTS from 'src/constants.json';
66

7+
78
const events = require('../../../src/events');
89

910
describe('Gu analytics adapter', () => {
1011
let sandbox;
12+
let ajaxStub;
1113
let timer;
1214

13-
const REQUEST1 = {
14-
bidderCode: 'b1',
15-
auctionId: '5018eb39-f900-4370-b71e-3bb5b48d324f',
16-
bidderRequestId: '1a6fc81528d0f7',
17-
bids: [{
15+
const BIDONE = {
1816
bidder: 'b1',
1917
params: {},
2018
adUnitCode: 'slot-1',
@@ -23,7 +21,13 @@ describe('Gu analytics adapter', () => {
2321
bidId: '208750227436c1',
2422
bidderRequestId: '1a6fc81528d0f7',
2523
auctionId: '5018eb39-f900-4370-b71e-3bb5b48d324f'
26-
}],
24+
};
25+
26+
const REQUEST1 = {
27+
bidderCode: 'b1',
28+
auctionId: '5018eb39-f900-4370-b71e-3bb5b48d324f',
29+
bidderRequestId: '1a6fc81528d0f7',
30+
bids: [ BIDONE ],
2731
auctionStart: 1509369418387,
2832
timeout: 3000,
2933
start: 1509369418389
@@ -73,6 +77,7 @@ describe('Gu analytics adapter', () => {
7377

7478
before(() => {
7579
sandbox = sinon.sandbox.create();
80+
ajaxStub = sandbox.stub(ajax, 'ajax');
7681
timer = sandbox.useFakeTimers(0);
7782
});
7883

@@ -89,6 +94,7 @@ describe('Gu analytics adapter', () => {
8994
});
9095

9196
afterEach(() => {
97+
ajaxStub.reset();
9298
events.getEvents.restore();
9399
});
94100

@@ -153,12 +159,19 @@ describe('Gu analytics adapter', () => {
153159

154160
it('should handle auction end event', () => {
155161
timer.tick(447);
156-
const ajaxStub = sandbox.stub(ajax, 'ajax');
157162
events.emit(CONSTANTS.EVENTS.AUCTION_END, RESPONSE);
158163
let ev = analyticsAdapter.context.queue.peekAll();
159164
expect(ev).to.have.length(0);
160165
expect(ajaxStub.called).to.be.equal(true);
161166
ev = JSON.parse(ajaxStub.firstCall.args[2]).hb_ev;
162167
expect(ev[4]).to.be.eql({ev: 'end', aid: '5018eb39-f900-4370-b71e-3bb5b48d324f', ttr: 447});
163168
});
169+
170+
it('should handle bid won event', () => {
171+
events.emit(CONSTANTS.EVENTS.BID_WON, BIDONE);
172+
let ev = analyticsAdapter.context.queue.peekAll();
173+
expect(ev).to.have.length(0); // The queue has been flushed.
174+
ev = JSON.parse(ajaxStub.firstCall.args[2]).hb_ev;
175+
expect(ev[0]).to.be.eql({ev: 'bidwon', aid: '5018eb39-f900-4370-b71e-3bb5b48d324f', bid: BIDONE.bidId , sid: BIDONE.adUnitCode });
176+
});
164177
});

0 commit comments

Comments
 (0)