15
15
*/
16
16
var AudienceEvaluator = require ( './' ) ;
17
17
var chai = require ( 'chai' ) ;
18
- var sprintf = require ( 'sprintf-js' ) . sprintf ;
19
18
var conditionTreeEvaluator = require ( '../condition_tree_evaluator' ) ;
20
19
var customAttributeConditionEvaluator = require ( '../custom_attribute_condition_evaluator' ) ;
21
20
var sinon = require ( 'sinon' ) ;
@@ -54,14 +53,13 @@ var audiencesById = {
54
53
55
54
describe ( 'lib/core/audience_evaluator' , function ( ) {
56
55
var audienceEvaluator ;
56
+ var mockLogger = logger . createLogger ( { logLevel : LOG_LEVEL . INFO } ) ;
57
57
beforeEach ( function ( ) {
58
- audienceEvaluator = new AudienceEvaluator ( ) ;
58
+ audienceEvaluator = new AudienceEvaluator ( mockLogger ) ;
59
59
} ) ;
60
60
61
61
describe ( 'APIs' , function ( ) {
62
62
describe ( 'evaluate' , function ( ) {
63
- var mockLogger = logger . createLogger ( { logLevel : LOG_LEVEL . INFO } ) ;
64
-
65
63
beforeEach ( function ( ) {
66
64
sinon . stub ( mockLogger , 'log' ) ;
67
65
} ) ;
@@ -71,11 +69,11 @@ describe('lib/core/audience_evaluator', function() {
71
69
} ) ;
72
70
73
71
it ( 'should return true if there are no audiences' , function ( ) {
74
- assert . isTrue ( audienceEvaluator . evaluate ( [ ] , audiencesById , { } , mockLogger ) ) ;
72
+ assert . isTrue ( audienceEvaluator . evaluate ( [ ] , audiencesById , { } ) ) ;
75
73
} ) ;
76
74
77
75
it ( 'should return false if there are audiences but no attributes' , function ( ) {
78
- assert . isFalse ( audienceEvaluator . evaluate ( [ '0' ] , audiencesById , { } , mockLogger ) ) ;
76
+ assert . isFalse ( audienceEvaluator . evaluate ( [ '0' ] , audiencesById , { } ) ) ;
79
77
} ) ;
80
78
81
79
it ( 'should return true if any of the audience conditions are met' , function ( ) {
@@ -92,9 +90,9 @@ describe('lib/core/audience_evaluator', function() {
92
90
'device_model' : 'iphone' ,
93
91
} ;
94
92
95
- assert . isTrue ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , iphoneUsers , mockLogger ) ) ;
96
- assert . isTrue ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , chromeUsers , mockLogger ) ) ;
97
- assert . isTrue ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , iphoneChromeUsers , mockLogger ) ) ;
93
+ assert . isTrue ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , iphoneUsers ) ) ;
94
+ assert . isTrue ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , chromeUsers ) ) ;
95
+ assert . isTrue ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , iphoneChromeUsers ) ) ;
98
96
} ) ;
99
97
100
98
it ( 'should return false if none of the audience conditions are met' , function ( ) {
@@ -111,13 +109,13 @@ describe('lib/core/audience_evaluator', function() {
111
109
'device_model' : 'nexus5' ,
112
110
} ;
113
111
114
- assert . isFalse ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , nexusUsers , mockLogger ) ) ;
115
- assert . isFalse ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , safariUsers , mockLogger ) ) ;
116
- assert . isFalse ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , nexusSafariUsers , mockLogger ) ) ;
112
+ assert . isFalse ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , nexusUsers ) ) ;
113
+ assert . isFalse ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , safariUsers ) ) ;
114
+ assert . isFalse ( audienceEvaluator . evaluate ( [ '0' , '1' ] , audiencesById , nexusSafariUsers ) ) ;
117
115
} ) ;
118
116
119
117
it ( 'should return true if no attributes are passed and the audience conditions evaluate to true in the absence of attributes' , function ( ) {
120
- assert . isTrue ( audienceEvaluator . evaluate ( [ '2' ] , audiencesById , null , mockLogger ) ) ;
118
+ assert . isTrue ( audienceEvaluator . evaluate ( [ '2' ] , audiencesById , null ) ) ;
121
119
} ) ;
122
120
123
121
describe ( 'complex audience conditions' , function ( ) {
@@ -204,9 +202,9 @@ describe('lib/core/audience_evaluator', function() {
204
202
} ) ;
205
203
customAttributeConditionEvaluator . evaluate . returns ( false ) ;
206
204
var userAttributes = { device_model : 'android' } ;
207
- var result = audienceEvaluator . evaluate ( [ 'or' , '1' ] , audiencesById , userAttributes , mockLogger ) ;
205
+ var result = audienceEvaluator . evaluate ( [ 'or' , '1' ] , audiencesById , userAttributes ) ;
208
206
sinon . assert . calledOnce ( customAttributeConditionEvaluator . evaluate ) ;
209
- sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate , iphoneUserAudience . conditions [ 1 ] , userAttributes , mockLogger ) ;
207
+ sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate , iphoneUserAudience . conditions [ 1 ] , userAttributes ) ;
210
208
assert . isFalse ( result ) ;
211
209
} ) ;
212
210
} ) ;
@@ -229,9 +227,9 @@ describe('lib/core/audience_evaluator', function() {
229
227
} ) ;
230
228
customAttributeConditionEvaluator . evaluate . returns ( null ) ;
231
229
var userAttributes = { device_model : 5.5 } ;
232
- var result = audienceEvaluator . evaluate ( [ 'or' , '1' ] , audiencesById , userAttributes , mockLogger ) ;
230
+ var result = audienceEvaluator . evaluate ( [ 'or' , '1' ] , audiencesById , userAttributes ) ;
233
231
sinon . assert . calledOnce ( customAttributeConditionEvaluator . evaluate ) ;
234
- sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate , iphoneUserAudience . conditions [ 1 ] , userAttributes , mockLogger ) ;
232
+ sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate , iphoneUserAudience . conditions [ 1 ] , userAttributes ) ;
235
233
assert . isFalse ( result ) ;
236
234
assert . strictEqual ( 2 , mockLogger . log . callCount ) ;
237
235
assert . strictEqual ( mockLogger . log . args [ 0 ] [ 1 ] , 'AUDIENCE_EVALUATOR: Starting to evaluate audience "1" with conditions: ["and",{"name":"device_model","value":"iphone","type":"custom_attribute"}].' ) ;
@@ -244,9 +242,9 @@ describe('lib/core/audience_evaluator', function() {
244
242
} ) ;
245
243
customAttributeConditionEvaluator . evaluate . returns ( true ) ;
246
244
var userAttributes = { device_model : 'iphone' } ;
247
- var result = audienceEvaluator . evaluate ( [ 'or' , '1' ] , audiencesById , userAttributes , mockLogger ) ;
245
+ var result = audienceEvaluator . evaluate ( [ 'or' , '1' ] , audiencesById , userAttributes ) ;
248
246
sinon . assert . calledOnce ( customAttributeConditionEvaluator . evaluate ) ;
249
- sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate , iphoneUserAudience . conditions [ 1 ] , userAttributes , mockLogger ) ;
247
+ sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate , iphoneUserAudience . conditions [ 1 ] , userAttributes ) ;
250
248
assert . isTrue ( result ) ;
251
249
assert . strictEqual ( 2 , mockLogger . log . callCount ) ;
252
250
assert . strictEqual ( mockLogger . log . args [ 0 ] [ 1 ] , 'AUDIENCE_EVALUATOR: Starting to evaluate audience "1" with conditions: ["and",{"name":"device_model","value":"iphone","type":"custom_attribute"}].' ) ;
@@ -259,9 +257,9 @@ describe('lib/core/audience_evaluator', function() {
259
257
} ) ;
260
258
customAttributeConditionEvaluator . evaluate . returns ( false ) ;
261
259
var userAttributes = { device_model : 'android' } ;
262
- var result = audienceEvaluator . evaluate ( [ 'or' , '1' ] , audiencesById , userAttributes , mockLogger ) ;
260
+ var result = audienceEvaluator . evaluate ( [ 'or' , '1' ] , audiencesById , userAttributes ) ;
263
261
sinon . assert . calledOnce ( customAttributeConditionEvaluator . evaluate ) ;
264
- sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate , iphoneUserAudience . conditions [ 1 ] , userAttributes , mockLogger ) ;
262
+ sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate , iphoneUserAudience . conditions [ 1 ] , userAttributes ) ;
265
263
assert . isFalse ( result ) ;
266
264
assert . strictEqual ( 2 , mockLogger . log . callCount ) ;
267
265
assert . strictEqual ( mockLogger . log . args [ 0 ] [ 1 ] , 'AUDIENCE_EVALUATOR: Starting to evaluate audience "1" with conditions: ["and",{"name":"device_model","value":"iphone","type":"custom_attribute"}].' ) ;
0 commit comments