@@ -12,7 +12,7 @@ describe('Rule', () => {
1212 } ) 
1313
1414 describe ( 'constructor()' ,  ( )  =>  { 
15-  it ( 'can be initialized with priority, conditions, and event ' ,  ( )  =>  { 
15+  it ( 'can be initialized with priority, conditions, event,  and name ' ,  ( )  =>  { 
1616 let  condition  =  { 
1717 all : [  Object . assign ( { } ,  conditionBase )  ] 
1818 } 
@@ -23,12 +23,14 @@ describe('Rule', () => {
2323 conditions : condition , 
2424 event : { 
2525 type : 'awesome' 
26-  } 
26+  } , 
27+  name : 'testName' 
2728 } 
2829 let  rule  =  new  Rule ( opts ) 
2930 expect ( rule . priority ) . to . eql ( opts . priority ) 
3031 expect ( rule . conditions ) . to . eql ( opts . conditions ) 
3132 expect ( rule . event ) . to . eql ( opts . event ) 
33+  expect ( rule . name ) . to . eql ( opts . name ) 
3234 } ) 
3335
3436 it ( 'it can be initialized with a json string' ,  ( )  =>  { 
@@ -42,13 +44,15 @@ describe('Rule', () => {
4244 conditions : condition , 
4345 event : { 
4446 type : 'awesome' 
45-  } 
47+  } , 
48+  name : 'testName' 
4649 } 
4750 let  json  =  JSON . stringify ( opts ) 
4851 let  rule  =  new  Rule ( json ) 
4952 expect ( rule . priority ) . to . eql ( opts . priority ) 
5053 expect ( rule . conditions ) . to . eql ( opts . conditions ) 
5154 expect ( rule . event ) . to . eql ( opts . event ) 
55+  expect ( rule . name ) . to . eql ( opts . name ) 
5256 } ) 
5357 } ) 
5458
@@ -115,6 +119,25 @@ describe('Rule', () => {
115119 } ) 
116120 } ) 
117121
122+  describe ( 'setName' ,  ( )  =>  { 
123+  it ( 'defaults to undefined' ,  ( )  =>  { 
124+  expect ( rule . name ) . to . equal ( undefined ) 
125+  } ) 
126+ 
127+  it ( 'allows the name to be set' ,  ( )  =>  { 
128+  rule . setName ( 'Test Name' ) 
129+  expect ( rule . name ) . to . equal ( 'Test Name' ) 
130+  } ) 
131+ 
132+  it ( 'errors if name is an empty string' ,  ( )  =>  { 
133+  expect ( rule . setName . bind ( null ,  '' ) ) . to . throw ( / R u l e   " n a m e "   m u s t   b e   e i t h e r   u n d e f i n e d   o r   a   n o n - e m p t y   s t r i n g / ) 
134+  } ) 
135+ 
136+  it ( 'errors if name is not a string' ,  ( )  =>  { 
137+  expect ( rule . setName . bind ( null ,  3 ) ) . to . throw ( / R u l e   " n a m e "   m u s t   b e   e i t h e r   u n d e f i n e d   o r   a   n o n - e m p t y   s t r i n g / ) 
138+  } ) 
139+  } ) 
140+ 
118141 describe ( 'priotizeConditions()' ,  ( )  =>  { 
119142 let  conditions  =  [ { 
120143 fact : 'age' , 
@@ -185,30 +208,34 @@ describe('Rule', () => {
185208 path : '.id' 
186209 } ] 
187210 } 
211+  let  name  =  'testName' 
188212 let  rule 
189213 beforeEach ( ( )  =>  { 
190214 rule  =  new  Rule ( ) 
191215 rule . setConditions ( conditions ) 
192216 rule . setPriority ( priority ) 
193217 rule . setEvent ( event ) 
218+  rule . setName ( name ) 
194219 } ) 
195220
196221 it ( 'serializes itself' ,  ( )  =>  { 
197222 let  json  =  rule . toJSON ( false ) 
198-  expect ( Object . keys ( json ) . length ) . to . equal ( 3 ) 
223+  expect ( Object . keys ( json ) . length ) . to . equal ( 4 ) 
199224 expect ( json . conditions ) . to . eql ( conditions ) 
200225 expect ( json . priority ) . to . eql ( priority ) 
201226 expect ( json . event ) . to . eql ( event ) 
227+  expect ( json . name ) . to . eql ( name ) 
202228 } ) 
203229
204230 it ( 'serializes itself as json' ,  ( )  =>  { 
205231 let  jsonString  =  rule . toJSON ( ) 
206232 expect ( jsonString ) . to . be . a ( 'string' ) 
207233 let  json  =  JSON . parse ( jsonString ) 
208-  expect ( Object . keys ( json ) . length ) . to . equal ( 3 ) 
234+  expect ( Object . keys ( json ) . length ) . to . equal ( 4 ) 
209235 expect ( json . conditions ) . to . eql ( conditions ) 
210236 expect ( json . priority ) . to . eql ( priority ) 
211237 expect ( json . event ) . to . eql ( event ) 
238+  expect ( json . name ) . to . eql ( name ) 
212239 } ) 
213240
214241 it ( 'rehydrates itself using a JSON string' ,  ( )  =>  { 
@@ -218,6 +245,7 @@ describe('Rule', () => {
218245 expect ( hydratedRule . conditions ) . to . eql ( rule . conditions ) 
219246 expect ( hydratedRule . priority ) . to . eql ( rule . priority ) 
220247 expect ( hydratedRule . event ) . to . eql ( rule . event ) 
248+  expect ( hydratedRule . name ) . to . eql ( rule . name ) 
221249 } ) 
222250
223251 it ( 'rehydrates itself using an object from JSON.parse()' ,  ( )  =>  { 
@@ -228,6 +256,8 @@ describe('Rule', () => {
228256 expect ( hydratedRule . conditions ) . to . eql ( rule . conditions ) 
229257 expect ( hydratedRule . priority ) . to . eql ( rule . priority ) 
230258 expect ( hydratedRule . event ) . to . eql ( rule . event ) 
259+  expect ( hydratedRule . name ) . to . eql ( rule . name ) 
231260 } ) 
232261 } ) 
233262} ) 
263+ 
0 commit comments