1313 * See the License for the specific language governing permissions and 
1414 * limitations under the License. 
1515 */ 
16- var  audienceEvaluator  =  require ( './' ) ; 
16+ var  AudienceEvaluator  =  require ( './' ) ; 
1717var  chai  =  require ( 'chai' ) ; 
18- var  sprintf  =  require ( '@optimizely/js-sdk-utils' ) . sprintf ; 
1918var  conditionTreeEvaluator  =  require ( '../condition_tree_evaluator' ) ; 
2019var  customAttributeConditionEvaluator  =  require ( '../custom_attribute_condition_evaluator' ) ; 
2120var  sinon  =  require ( 'sinon' ) ; 
2221var  assert  =  chai . assert ; 
23- var  logger  =  require ( '../../plugins/logger' ) ; 
22+ var  logging  =  require ( '@optimizely/js-sdk-logging' ) ; 
23+ var  mockLogger  =  logging . getLogger ( ) ; 
2424var  enums  =  require ( '../../utils/enums' ) ; 
2525var  LOG_LEVEL  =  enums . LOG_LEVEL ; 
2626
@@ -53,11 +53,14 @@ var audiencesById = {
5353} ; 
5454
5555describe ( 'lib/core/audience_evaluator' ,  function ( )  { 
56+   var  audienceEvaluator ; 
57+   beforeEach ( function ( )  { 
58+     audienceEvaluator  =  new  AudienceEvaluator ( ) ; 
59+   } ) ; 
60+ 
5661  describe ( 'APIs' ,  function ( )  { 
5762    describe ( 'evaluate' ,  function ( )  { 
58-       var  mockLogger  =  logger . createLogger ( { logLevel : LOG_LEVEL . INFO } ) ; 
59- 
60-       beforeEach ( function  ( )  { 
63+       beforeEach ( function ( )  { 
6164        sinon . stub ( mockLogger ,  'log' ) ; 
6265      } ) ; 
6366
@@ -66,11 +69,11 @@ describe('lib/core/audience_evaluator', function() {
6669      } ) ; 
6770
6871      it ( 'should return true if there are no audiences' ,  function ( )  { 
69-         assert . isTrue ( audienceEvaluator . evaluate ( [ ] ,  audiencesById ,  { } ,   mockLogger ) ) ; 
72+         assert . isTrue ( audienceEvaluator . evaluate ( [ ] ,  audiencesById ,  { } ) ) ; 
7073      } ) ; 
7174
7275      it ( 'should return false if there are audiences but no attributes' ,  function ( )  { 
73-         assert . isFalse ( audienceEvaluator . evaluate ( [ '0' ] ,  audiencesById ,  { } ,   mockLogger ) ) ; 
76+         assert . isFalse ( audienceEvaluator . evaluate ( [ '0' ] ,  audiencesById ,  { } ) ) ; 
7477      } ) ; 
7578
7679      it ( 'should return true if any of the audience conditions are met' ,  function ( )  { 
@@ -87,9 +90,9 @@ describe('lib/core/audience_evaluator', function() {
8790          'device_model' : 'iphone' , 
8891        } ; 
8992
90-         assert . isTrue ( audienceEvaluator . evaluate ( [ '0' ,  '1' ] ,  audiencesById ,  iphoneUsers ,   mockLogger ) ) ; 
91-         assert . isTrue ( audienceEvaluator . evaluate ( [ '0' ,  '1' ] ,  audiencesById ,  chromeUsers ,   mockLogger ) ) ; 
92-         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 ) ) ; 
9396      } ) ; 
9497
9598      it ( 'should return false if none of the audience conditions are met' ,  function ( )  { 
@@ -106,22 +109,21 @@ describe('lib/core/audience_evaluator', function() {
106109          'device_model' : 'nexus5' , 
107110        } ; 
108111
109-         assert . isFalse ( audienceEvaluator . evaluate ( [ '0' ,  '1' ] ,  audiencesById ,  nexusUsers ,   mockLogger ) ) ; 
110-         assert . isFalse ( audienceEvaluator . evaluate ( [ '0' ,  '1' ] ,  audiencesById ,  safariUsers ,   mockLogger ) ) ; 
111-         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 ) ) ; 
112115      } ) ; 
113116
114117      it ( 'should return true if no attributes are passed and the audience conditions evaluate to true in the absence of attributes' ,  function ( )  { 
115-         assert . isTrue ( audienceEvaluator . evaluate ( [ '2' ] ,  audiencesById ,  null ,   mockLogger ) ) ; 
118+         assert . isTrue ( audienceEvaluator . evaluate ( [ '2' ] ,  audiencesById ,  null ) ) ; 
116119      } ) ; 
117120
118121      describe ( 'complex audience conditions' ,  function ( )  { 
119122        it ( 'should return true if any of the audiences in an "OR" condition pass' ,  function ( )  { 
120123          var  result  =  audienceEvaluator . evaluate ( 
121124            [ 'or' ,  '0' ,  '1' ] , 
122125            audiencesById , 
123-             {  browser_type : 'chrome'  } , 
124-             mockLogger 
126+             {  browser_type : 'chrome'  } 
125127          ) ; 
126128          assert . isTrue ( result ) ; 
127129        } ) ; 
@@ -130,8 +132,7 @@ describe('lib/core/audience_evaluator', function() {
130132          var  result  =  audienceEvaluator . evaluate ( 
131133            [ 'and' ,  '0' ,  '1' ] , 
132134            audiencesById , 
133-             {  browser_type : 'chrome' ,  device_model : 'iphone'  } , 
134-             mockLogger 
135+             {  browser_type : 'chrome' ,  device_model : 'iphone'  } 
135136          ) ; 
136137          assert . isTrue ( result ) ; 
137138        } ) ; 
@@ -140,8 +141,7 @@ describe('lib/core/audience_evaluator', function() {
140141          var  result  =  audienceEvaluator . evaluate ( 
141142            [ 'not' ,  '1' ] , 
142143            audiencesById , 
143-             {  device_model : 'android'  } , 
144-             mockLogger 
144+             {  device_model : 'android'  } 
145145          ) ; 
146146          assert . isTrue ( result ) ; 
147147        } ) ; 
@@ -165,8 +165,7 @@ describe('lib/core/audience_evaluator', function() {
165165          var  result  =  audienceEvaluator . evaluate ( 
166166            [ 'or' ,  '0' ,  '1' ] , 
167167            audiencesById , 
168-             {  browser_type : 'chrome'  } , 
169-             mockLogger 
168+             {  browser_type : 'chrome'  } 
170169          ) ; 
171170          assert . isTrue ( result ) ; 
172171        } ) ; 
@@ -176,8 +175,7 @@ describe('lib/core/audience_evaluator', function() {
176175          var  result  =  audienceEvaluator . evaluate ( 
177176            [ 'or' ,  '0' ,  '1' ] , 
178177            audiencesById , 
179-             {  browser_type : 'safari'  } , 
180-             mockLogger 
178+             {  browser_type : 'safari'  } 
181179          ) ; 
182180          assert . isFalse ( result ) ; 
183181        } ) ; 
@@ -187,8 +185,7 @@ describe('lib/core/audience_evaluator', function() {
187185          var  result  =  audienceEvaluator . evaluate ( 
188186            [ 'or' ,  '0' ,  '1' ] , 
189187            audiencesById , 
190-             {  state : 'California'  } , 
191-             mockLogger 
188+             {  state : 'California'  } 
192189          ) ; 
193190          assert . isFalse ( result ) ; 
194191        } ) ; 
@@ -199,8 +196,9 @@ describe('lib/core/audience_evaluator', function() {
199196          } ) ; 
200197          customAttributeConditionEvaluator . evaluate . returns ( false ) ; 
201198          var  userAttributes  =  {  device_model : 'android'  } ; 
202-           var  result  =  audienceEvaluator . evaluate ( [ 'or' ,  '1' ] ,  audiencesById ,  userAttributes ,   mockLogger ) ; 
199+           var  result  =  audienceEvaluator . evaluate ( [ 'or' ,  '1' ] ,  audiencesById ,  userAttributes ) ; 
203200          sinon . assert . calledOnce ( customAttributeConditionEvaluator . evaluate ) ; 
201+           console . log ( 'args: ' ,  customAttributeConditionEvaluator . evaluate . firstCall . args ) 
204202          sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate ,  iphoneUserAudience . conditions [ 1 ] ,  userAttributes ,  mockLogger ) ; 
205203          assert . isFalse ( result ) ; 
206204        } ) ; 
@@ -224,7 +222,7 @@ describe('lib/core/audience_evaluator', function() {
224222          } ) ; 
225223          customAttributeConditionEvaluator . evaluate . returns ( null ) ; 
226224          var  userAttributes  =  {  device_model : 5.5  } ; 
227-           var  result  =  audienceEvaluator . evaluate ( [ 'or' ,  '1' ] ,  audiencesById ,  userAttributes ,   mockLogger ) ; 
225+           var  result  =  audienceEvaluator . evaluate ( [ 'or' ,  '1' ] ,  audiencesById ,  userAttributes ) ; 
228226          sinon . assert . calledOnce ( customAttributeConditionEvaluator . evaluate ) ; 
229227          sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate ,  iphoneUserAudience . conditions [ 1 ] ,  userAttributes ,  mockLogger ) ; 
230228          assert . isFalse ( result ) ; 
@@ -239,7 +237,7 @@ describe('lib/core/audience_evaluator', function() {
239237          } ) ; 
240238          customAttributeConditionEvaluator . evaluate . returns ( true ) ; 
241239          var  userAttributes  =  {  device_model : 'iphone'  } ; 
242-           var  result  =  audienceEvaluator . evaluate ( [ 'or' ,  '1' ] ,  audiencesById ,  userAttributes ,   mockLogger ) ; 
240+           var  result  =  audienceEvaluator . evaluate ( [ 'or' ,  '1' ] ,  audiencesById ,  userAttributes ) ; 
243241          sinon . assert . calledOnce ( customAttributeConditionEvaluator . evaluate ) ; 
244242          sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate ,  iphoneUserAudience . conditions [ 1 ] ,  userAttributes ,  mockLogger ) ; 
245243          assert . isTrue ( result ) ; 
@@ -254,8 +252,9 @@ describe('lib/core/audience_evaluator', function() {
254252          } ) ; 
255253          customAttributeConditionEvaluator . evaluate . returns ( false ) ; 
256254          var  userAttributes  =  {  device_model : 'android'  } ; 
257-           var  result  =  audienceEvaluator . evaluate ( [ 'or' ,  '1' ] ,  audiencesById ,  userAttributes ,   mockLogger ) ; 
255+           var  result  =  audienceEvaluator . evaluate ( [ 'or' ,  '1' ] ,  audiencesById ,  userAttributes ) ; 
258256          sinon . assert . calledOnce ( customAttributeConditionEvaluator . evaluate ) ; 
257+           console . log ( 'args: ' ,  customAttributeConditionEvaluator . evaluate . firstCall . args ) 
259258          sinon . assert . calledWithExactly ( customAttributeConditionEvaluator . evaluate ,  iphoneUserAudience . conditions [ 1 ] ,  userAttributes ,  mockLogger ) ; 
260259          assert . isFalse ( result ) ; 
261260          assert . strictEqual ( 2 ,  mockLogger . log . callCount ) ; 
0 commit comments