Skip to content

Commit

Permalink
AdagioAnalyticsAdapter: use common code
Browse files Browse the repository at this point in the history
  • Loading branch information
osazos committed Jul 11, 2024
1 parent 85f0731 commit 6a6f932
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 118 deletions.
58 changes: 18 additions & 40 deletions modules/adagioAnalyticsAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
* Analytics Adapter for Adagio
*/

import { _ADAGIO, getBestWindowForAdagio } from '../libraries/adagioUtils/adagioUtils.js';
import { deepAccess, logError, logInfo } from '../src/utils.js';
import { BANNER } from '../src/mediaTypes.js';
import { EVENTS } from '../src/constants.js';
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
import adapterManager from '../src/adapterManager.js';
import { EVENTS } from '../src/constants.js';
import { ajax } from '../src/ajax.js';
import { BANNER } from '../src/mediaTypes.js';
import { getWindowTop, getWindowSelf, deepAccess, logInfo, logError } from '../src/utils.js';
import { getGlobal } from '../src/prebidGlobal.js';

const emptyUrl = '';
Expand All @@ -19,6 +20,13 @@ const PREBID_VERSION = '$prebid.version$';
const ENDPOINT = 'https://c.4dex.io/pba.gif';
const CURRENCY_USD = 'USD';
const ADAGIO_CODE = 'adagio';

export const _internal = {
getAdagioNs: function() {
return _ADAGIO;
}
};

const cache = {
auctions: {},
getAuction: function(auctionId, adUnitCode) {
Expand Down Expand Up @@ -48,34 +56,6 @@ const cache = {
};
const enc = window.encodeURIComponent;

/**
/* BEGIN ADAGIO.JS CODE
*/

function canAccessTopWindow() {
try {
if (getWindowTop().location.href) {
return true;
}
} catch (error) {
return false;
}
};

function getCurrentWindow() {
return currentWindow;
};

let currentWindow;

const adagioEnqueue = function adagioEnqueue(action, data) {
getCurrentWindow().ADAGIO.queue.push({ action, data, ts: Date.now() });
};

/**
* END ADAGIO.JS CODE
*/

/**
* UTILS FUNCTIONS
*/
Expand Down Expand Up @@ -194,7 +174,7 @@ function getTargetedAuctionId(bid) {
*/

function handlerAuctionInit(event) {
const w = getCurrentWindow();
const w = getBestWindowForAdagio();

const prebidAuctionId = event.auctionId;
const adUnitCodes = removeDuplicates(event.adUnitCodes, adUnitCode => adUnitCode);
Expand Down Expand Up @@ -408,7 +388,11 @@ let adagioAdapter = Object.assign(adapter({ emptyUrl, analyticsType }), {

try {
if (typeof args !== 'undefined' && events.indexOf(eventType) !== -1) {
adagioEnqueue('pb-analytics-event', { eventName: eventType, args });
_internal.getAdagioNs().queue.push({
action: 'pb-analytics-event',
data: { eventName: eventType, args },
ts: Date.now()
});
}
} catch (error) {
logError('Error on Adagio Analytics Adapter - adagio.js', error);
Expand All @@ -419,13 +403,7 @@ let adagioAdapter = Object.assign(adapter({ emptyUrl, analyticsType }), {
adagioAdapter.originEnableAnalytics = adagioAdapter.enableAnalytics;

adagioAdapter.enableAnalytics = config => {
const w = (canAccessTopWindow()) ? getWindowTop() : getWindowSelf();
currentWindow = w;

w.ADAGIO = w.ADAGIO || {};
w.ADAGIO.queue = w.ADAGIO.queue || [];
w.ADAGIO.versions = w.ADAGIO.versions || {};
w.ADAGIO.versions.adagioAnalyticsAdapter = VERSION;
_internal.getAdagioNs().versions.adagioAnalyticsAdapter = VERSION;

adagioAdapter.originEnableAnalytics(config);
}
Expand Down
85 changes: 7 additions & 78 deletions test/spec/modules/adagioAnalyticsAdapter_spec.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import adagioAnalyticsAdapter from 'modules/adagioAnalyticsAdapter.js';
import { expect } from 'chai';
import * as utils from 'src/utils.js';
import { server } from 'test/mocks/xhr.js';
import * as prebidGlobal from 'src/prebidGlobal.js';
import * as utils from 'src/utils.js';
import adagioAnalyticsAdapter, { _internal } from 'modules/adagioAnalyticsAdapter.js';
import { EVENTS } from 'src/constants.js';
import { expect } from 'chai';
import { server } from 'test/mocks/xhr.js';

let adapterManager = require('src/adapterManager').default;
let events = require('src/events');
Expand All @@ -14,23 +14,18 @@ describe('adagio analytics adapter - adagio.js', () => {

beforeEach(() => {
sandbox = sinon.createSandbox();

sandbox.stub(events, 'getEvents').returns([]);

const w = utils.getWindowTop();

adapterManager.registerAnalyticsAdapter({
code: 'adagio',
adapter: adagioAnalyticsAdapter
});

w.ADAGIO = w.ADAGIO || {};
w.ADAGIO.queue = w.ADAGIO.queue || [];

adagioQueuePushSpy = sandbox.spy(w.ADAGIO.queue, 'push');
adagioQueuePushSpy = sandbox.spy(_internal.getAdagioNs().queue, 'push');
});

afterEach(() => {
_internal.getAdagioNs().queue = [];
sandbox.restore();
});

Expand Down Expand Up @@ -107,73 +102,6 @@ describe('adagio analytics adapter - adagio.js', () => {
Object.entries(testEvents).forEach(([ev, payload]) => sinon.assert.calledWith(adagioQueuePushSpy, eventItem(ev, payload)));
});
});

describe('no track', () => {
beforeEach(() => {
sandbox.stub(utils, 'getWindowTop').throws();

adapterManager.enableAnalytics({
provider: 'adagio'
});
});

afterEach(() => {
adagioAnalyticsAdapter.disableAnalytics();
sandbox.restore();
});

it('builds and sends auction data', () => {
let bidRequest = {
bids: [{
adUnitCode: 'div-1',
params: {
features: {
siteId: '2',
placement: 'pave_top',
pagetype: 'article',
category: 'IAB12,IAB12-2',
device: '2',
}
}
}, {
adUnitCode: 'div-2',
params: {
features: {
siteId: '2',
placement: 'ban_top',
pagetype: 'article',
category: 'IAB12,IAB12-2',
device: '2',
}
},
}],
};
let bidResponse = {
bidderCode: 'adagio',
width: 300,
height: 250,
statusMessage: 'Bid available',
cpm: 6.2189757658226075,
currency: '',
netRevenue: false,
adUnitCode: 'div-1',
timeToRespond: 132,
};

// Step 1: Send bid requested event
events.emit(EVENTS.BID_REQUESTED, bidRequest);

// Step 2: Send bid response event
events.emit(EVENTS.BID_RESPONSE, bidResponse);

// Step 3: Send auction end event
events.emit(EVENTS.AUCTION_END, {});

utils.getWindowTop.restore();

sandbox.assert.callCount(adagioQueuePushSpy, 0);
});
});
});

const AUCTION_ID = '25c6d7f5-699a-4bfc-87c9-996f915341fa';
Expand Down Expand Up @@ -687,6 +615,7 @@ describe('adagio analytics adapter', () => {
});

afterEach(() => {
_internal.getAdagioNs().queue = [];
sandbox.restore();
});

Expand Down

0 comments on commit 6a6f932

Please sign in to comment.