@@ -39,6 +39,16 @@ import {
39
39
getTestProjectConfig ,
40
40
getTestProjectConfigWithFeatures ,
41
41
} from '../../tests/test_data' ;
42
+ import {
43
+ AUDIENCE_EVALUATION_RESULT_COMBINED ,
44
+ EVALUATING_AUDIENCES_COMBINED ,
45
+ USER_FORCED_IN_VARIATION ,
46
+ USER_HAS_NO_FORCED_VARIATION ,
47
+ USER_DOESNT_MEET_CONDITIONS_FOR_TARGETING_RULE ,
48
+ USER_NOT_IN_EXPERIMENT ,
49
+ EXPERIMENT_NOT_RUNNING ,
50
+ RETURNING_STORED_VARIATION
51
+ } from '../../log_messages' ;
42
52
43
53
var testData = getTestProjectConfig ( ) ;
44
54
var testDataWithFeatures = getTestProjectConfigWithFeatures ( ) ;
@@ -63,15 +73,22 @@ describe('lib/core/decision_service', function() {
63
73
64
74
beforeEach ( function ( ) {
65
75
bucketerStub = sinon . stub ( bucketer , 'bucket' ) ;
66
- sinon . stub ( mockLogger , 'log' ) ;
76
+ sinon . stub ( mockLogger , 'info' ) ;
77
+ sinon . stub ( mockLogger , 'debug' ) ;
78
+ sinon . stub ( mockLogger , 'warn' ) ;
79
+ sinon . stub ( mockLogger , 'error' ) ;
80
+
67
81
decisionServiceInstance = createDecisionService ( {
68
82
logger : mockLogger ,
69
83
} ) ;
70
84
} ) ;
71
85
72
86
afterEach ( function ( ) {
73
87
bucketer . bucket . restore ( ) ;
74
- mockLogger . log . restore ( ) ;
88
+ mockLogger . debug . restore ( ) ;
89
+ mockLogger . info . restore ( ) ;
90
+ mockLogger . warn . restore ( ) ;
91
+ mockLogger . error . restore ( ) ;
75
92
} ) ;
76
93
77
94
describe ( '#getVariation' , function ( ) {
@@ -106,15 +123,12 @@ describe('lib/core/decision_service', function() {
106
123
decisionServiceInstance . getVariation ( configObj , experiment , user ) . result
107
124
) ;
108
125
sinon . assert . notCalled ( bucketerStub ) ;
109
- assert . strictEqual ( 2 , mockLogger . log . callCount ) ;
110
- assert . strictEqual (
111
- buildLogMessageFromArgs ( mockLogger . log . args [ 0 ] ) ,
112
- 'DECISION_SERVICE: User user2 is not in the forced variation map.'
113
- ) ;
114
- assert . strictEqual (
115
- buildLogMessageFromArgs ( mockLogger . log . args [ 1 ] ) ,
116
- 'DECISION_SERVICE: User user2 is forced in variation variationWithAudience.'
117
- ) ;
126
+ assert . strictEqual ( 1 , mockLogger . debug . callCount ) ;
127
+ assert . strictEqual ( 1 , mockLogger . info . callCount ) ;
128
+
129
+ assert . deepEqual ( mockLogger . debug . args [ 0 ] , [ USER_HAS_NO_FORCED_VARIATION , 'user2' ] ) ;
130
+
131
+ assert . deepEqual ( mockLogger . info . args [ 0 ] , [ USER_FORCED_IN_VARIATION , 'user2' , 'variationWithAudience' ] ) ;
118
132
} ) ;
119
133
120
134
it ( 'should return null if the user does not meet audience conditions' , function ( ) {
@@ -127,23 +141,14 @@ describe('lib/core/decision_service', function() {
127
141
assert . isNull (
128
142
decisionServiceInstance . getVariation ( configObj , experiment , user , { foo : 'bar' } ) . result
129
143
) ;
130
- assert . strictEqual ( 4 , mockLogger . log . callCount ) ;
131
- assert . strictEqual (
132
- buildLogMessageFromArgs ( mockLogger . log . args [ 0 ] ) ,
133
- 'DECISION_SERVICE: User user3 is not in the forced variation map.'
134
- ) ;
135
- assert . strictEqual (
136
- buildLogMessageFromArgs ( mockLogger . log . args [ 1 ] ) ,
137
- 'DECISION_SERVICE: Evaluating audiences for experiment "testExperimentWithAudiences": ["11154"].'
138
- ) ;
139
- assert . strictEqual (
140
- buildLogMessageFromArgs ( mockLogger . log . args [ 2 ] ) ,
141
- 'DECISION_SERVICE: Audiences for experiment testExperimentWithAudiences collectively evaluated to FALSE.'
142
- ) ;
143
- assert . strictEqual (
144
- buildLogMessageFromArgs ( mockLogger . log . args [ 3 ] ) ,
145
- 'DECISION_SERVICE: User user3 does not meet conditions to be in experiment testExperimentWithAudiences.'
146
- ) ;
144
+
145
+ assert . deepEqual ( mockLogger . debug . args [ 0 ] , [ USER_HAS_NO_FORCED_VARIATION , 'user3' ] ) ;
146
+
147
+ assert . deepEqual ( mockLogger . debug . args [ 1 ] , [ EVALUATING_AUDIENCES_COMBINED , 'experiment' , 'testExperimentWithAudiences' , JSON . stringify ( [ "11154" ] ) ] ) ;
148
+
149
+ assert . deepEqual ( mockLogger . info . args [ 0 ] , [ AUDIENCE_EVALUATION_RESULT_COMBINED , 'experiment' , 'testExperimentWithAudiences' , 'FALSE' ] ) ;
150
+
151
+ assert . deepEqual ( mockLogger . info . args [ 1 ] , [ USER_NOT_IN_EXPERIMENT , 'user3' , 'testExperimentWithAudiences' ] ) ;
147
152
} ) ;
148
153
149
154
it ( 'should return null if the experiment is not running' , function ( ) {
@@ -155,11 +160,9 @@ describe('lib/core/decision_service', function() {
155
160
experiment = configObj . experimentIdMap [ '133337' ] ;
156
161
assert . isNull ( decisionServiceInstance . getVariation ( configObj , experiment , user ) . result ) ;
157
162
sinon . assert . notCalled ( bucketerStub ) ;
158
- assert . strictEqual ( 1 , mockLogger . log . callCount ) ;
159
- assert . strictEqual (
160
- buildLogMessageFromArgs ( mockLogger . log . args [ 0 ] ) ,
161
- 'DECISION_SERVICE: Experiment testExperimentNotRunning is not running.'
162
- ) ;
163
+ assert . strictEqual ( 1 , mockLogger . info . callCount ) ;
164
+
165
+ assert . deepEqual ( mockLogger . info . args [ 0 ] , [ EXPERIMENT_NOT_RUNNING , 'testExperimentNotRunning' ] ) ;
163
166
} ) ;
164
167
165
168
describe ( 'when attributes.$opt_experiment_bucket_map is supplied' , function ( ) {
@@ -247,14 +250,10 @@ describe('lib/core/decision_service', function() {
247
250
) ;
248
251
sinon . assert . calledWith ( userProfileLookupStub , 'decision_service_user' ) ;
249
252
sinon . assert . notCalled ( bucketerStub ) ;
250
- assert . strictEqual (
251
- buildLogMessageFromArgs ( mockLogger . log . args [ 0 ] ) ,
252
- 'DECISION_SERVICE: User decision_service_user is not in the forced variation map.'
253
- ) ;
254
- assert . strictEqual (
255
- buildLogMessageFromArgs ( mockLogger . log . args [ 1 ] ) ,
256
- 'DECISION_SERVICE: Returning previously activated variation "control" of experiment "testExperiment" for user "decision_service_user" from user profile.'
257
- ) ;
253
+
254
+ assert . deepEqual ( mockLogger . debug . args [ 0 ] , [ USER_HAS_NO_FORCED_VARIATION , 'decision_service_user' ] ) ;
255
+
256
+ assert . deepEqual ( mockLogger . info . args [ 0 ] , [ RETURNING_STORED_VARIATION , 'control' , 'testExperiment' , 'decision_service_user' ] ) ;
258
257
} ) ;
259
258
260
259
it ( 'should bucket if there was no prevously bucketed variation' , function ( ) {
0 commit comments