Skip to content

Commit 2e0ac86

Browse files
committed
unit tests
1 parent af7dd1c commit 2e0ac86

File tree

3 files changed

+617
-7
lines changed

3 files changed

+617
-7
lines changed

modules/enrichmentLiftMeasurement/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { registerActivityControl } from "../../src/activities/rules.js";
77
import { config } from "../../src/config.js";
88
import { GDPR_GVLIDS, VENDORLESS_GVLID } from "../../src/consentHandler.js";
99
import { getStorageManager } from "../../src/storageManager.js";
10-
import { deepEqual, logError, logInfo } from "../../src/utils.js";
10+
import { deepEqual } from "../../src/utils.js";
1111

1212
const MODULE_NAME = 'enrichmentLiftMeasurement';
1313
const MODULE_TYPE = MODULE_TYPE_ANALYTICS;

modules/rules/index.ts

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import { timedAuctionHook } from "../../src/utils/perfMetrics.ts";
1515
const MODULE_NAME = 'shapingRulesModule';
1616
const STORAGE_KEY = 'rules_module_config';
1717

18+
let unregisterFunctions: Array<() => void> = [];
19+
1820
let rulesConfig: ModuleConfig = {
1921
endpoint: {
2022
method: 'GET',
@@ -101,7 +103,7 @@ export function evaluateConfig(context, rulesJson) {
101103
}
102104
}
103105

104-
function assignModelGroups(rulesets: RuleSet[]) {
106+
export function assignModelGroups(rulesets: RuleSet[]) {
105107
for (const ruleset of rulesets) {
106108
const { modelGroups } = ruleset;
107109
if (!modelGroups?.length) continue;
@@ -149,7 +151,7 @@ function evaluateRules(rules, schema, stage, analyticsKey) {
149151
}
150152
}
151153

152-
function evaluateSchema(func, args, context) {
154+
export function evaluateSchema(func, args, context) {
153155
switch (func) {
154156
case 'percent':
155157
return () => Math.random() * 100 < args[0];
@@ -231,9 +233,18 @@ function evaluateFunction(func, args, schema, conditions, stage, analyticsKey) {
231233
switch (func) {
232234
case 'excludeBidders':
233235
return () => {
234-
const activity = stage === 'processed-auction-request' ? ACTIVITY_FETCH_BIDS : ACTIVITY_ADD_BID_RESPONSE;
236+
let activity;
237+
switch (stage) {
238+
case 'processed-auction-request':
239+
activity = ACTIVITY_FETCH_BIDS;
240+
break;
241+
case 'processed-auction':
242+
default:
243+
activity = ACTIVITY_ADD_BID_RESPONSE;
244+
break;
245+
}
235246
args.forEach(({bidders, analyticsValue, seatnonbid}) => {
236-
registerActivityControl(activity, MODULE_NAME, (params) => {
247+
const unregister = registerActivityControl(activity, MODULE_NAME, (params) => {
237248
let conditionMet = true;
238249
for (const [index, schemaEntry] of schema.entries()) {
239250
const func = evaluateSchema(schemaEntry.function, schemaEntry.args || [], params);
@@ -249,10 +260,11 @@ function evaluateFunction(func, args, schema, conditions, stage, analyticsKey) {
249260
setLabels({ [analyticsKey]: analyticsValue });
250261
}
251262
return { allow: finalCondition, reason: `Bidder ${params.bidder} excluded by rules module` };
252-
})
263+
});
264+
unregisterFunctions.push(unregister);
253265
});
254266
}
255-
case 'logATag':
267+
case 'logAtag':
256268
return () => {
257269
// @todo: is that enough?
258270
setLabels({ [analyticsKey]: args.analyticsValue });
@@ -326,4 +338,18 @@ function init(rules: ModuleConfig) {
326338
getHook('requestBids').before(requestBidsHook, 50);
327339
}
328340

341+
export function reset() {
342+
unregisterFunctions.forEach(unregister => {
343+
if (unregister && typeof unregister === 'function') {
344+
unregister();
345+
}
346+
});
347+
unregisterFunctions = [];
348+
try {
349+
getHook('requestBids').getHooks({hook: requestBidsHook}).remove();
350+
} catch (e) {
351+
}
352+
setLabels({});
353+
}
354+
329355
config.getConfig('rules', config => init(config.rules));

0 commit comments

Comments
 (0)