@@ -161,22 +161,26 @@ public function testFilterRule()
161161 ];
162162 $ filterActions = new \Zimbra \Mail \Struct \FilterActions ($ actions );
163163
164+ $ child = new \Zimbra \Mail \Struct \NestedRule ($ filterTests );
164165 $ filterRule = new \Zimbra \Mail \Struct \FilterRule (
165- $ name , true , $ filterTests , $ filterActions
166+ $ name , true , $ filterTests , $ filterActions, $ child
166167 );
167168 $ this ->assertSame ($ name , $ filterRule ->getName ());
168169 $ this ->assertTrue ($ filterRule ->getActive ());
169170 $ this ->assertSame ($ filterTests , $ filterRule ->getFilterTests ());
170171 $ this ->assertSame ($ filterActions , $ filterRule ->getFilterActions ());
172+ $ this ->assertSame ($ child , $ filterRule ->getChildRule ());
171173
172174 $ filterRule ->setName ($ name )
173175 ->setActive (true )
174176 ->setFilterTests ($ filterTests )
175- ->setFilterActions ($ filterActions );
177+ ->setFilterActions ($ filterActions )
178+ ->setChildRule ($ child );
176179 $ this ->assertSame ($ name , $ filterRule ->getName ());
177180 $ this ->assertTrue ($ filterRule ->getActive ());
178181 $ this ->assertSame ($ filterTests , $ filterRule ->getFilterTests ());
179182 $ this ->assertSame ($ filterActions , $ filterRule ->getFilterActions ());
183+ $ this ->assertSame ($ child , $ filterRule ->getChildRule ());
180184
181185 $ xml = '<?xml version="1.0"?> ' . "\n"
182186 .'<filterRule name=" ' . $ name . '" active="true"> '
@@ -223,6 +227,36 @@ public function testFilterRule()
223227 .'</actionNotify> '
224228 .'<actionStop index=" ' . $ index . '" /> '
225229 .'</filterActions> '
230+ .'<nestedRule> '
231+ .'<filterTests condition=" ' . FilterCondition::ALL_OF () . '"> '
232+ .'<addressBookTest index=" ' . $ index . '" negative="true" header=" ' . $ header . '" /> '
233+ .'<addressTest index=" ' . $ index . '" negative="true" header=" ' . $ header . '" part=" ' . $ part . '" stringComparison=" ' . $ comparison . '" value=" ' . $ value . '" caseSensitive="true" /> '
234+ .'<attachmentTest index=" ' . $ index . '" negative="true" /> '
235+ .'<bodyTest index=" ' . $ index . '" negative="true" value=" ' . $ value . '" caseSensitive="true" /> '
236+ .'<bulkTest index=" ' . $ index . '" negative="true" /> '
237+ .'<contactRankingTest index=" ' . $ index . '" negative="true" header=" ' . $ header . '" /> '
238+ .'<conversationTest index=" ' . $ index . '" negative="true" where=" ' . $ where . '" /> '
239+ .'<currentDayOfWeekTest index=" ' . $ index . '" negative="true" value=" ' . $ value . '" /> '
240+ .'<currentTimeTest index=" ' . $ index . '" negative="true" dateComparison=" ' . $ comparison . '" time=" ' . $ time . '" /> '
241+ .'<dateTest index=" ' . $ index . '" negative="true" dateComparison=" ' . $ comparison . '" d=" ' . $ date . '" /> '
242+ .'<facebookTest index=" ' . $ index . '" negative="true" /> '
243+ .'<flaggedTest index=" ' . $ index . '" negative="true" flagName=" ' . $ flag . '" /> '
244+ .'<headerExistsTest index=" ' . $ index . '" negative="true" header=" ' . $ header . '" /> '
245+ .'<headerTest index=" ' . $ index . '" negative="true" header=" ' . $ header . '" stringComparison=" ' . $ comparison . '" value=" ' . $ value . '" caseSensitive="true" /> '
246+ .'<importanceTest index=" ' . $ index . '" negative="true" imp=" ' . Importance::HIGH () . '" /> '
247+ .'<inviteTest index=" ' . $ index . '" negative="true"> '
248+ .'<method> ' . $ method . '</method> '
249+ .'</inviteTest> '
250+ .'<linkedinTest index=" ' . $ index . '" negative="true" /> '
251+ .'<listTest index=" ' . $ index . '" negative="true" /> '
252+ .'<meTest index=" ' . $ index . '" negative="true" header=" ' . $ header . '" /> '
253+ .'<mimeHeaderTest index=" ' . $ index . '" negative="true" header=" ' . $ header . '" stringComparison=" ' . $ comparison . '" value=" ' . $ value . '" caseSensitive="true" /> '
254+ .'<sizeTest index=" ' . $ index . '" negative="true" numberComparison=" ' . $ comparison . '" s=" ' . $ size . '" /> '
255+ .'<socialcastTest index=" ' . $ index . '" negative="true" /> '
256+ .'<trueTest index=" ' . $ index . '" negative="true" /> '
257+ .'<twitterTest index=" ' . $ index . '" negative="true" /> '
258+ .'</filterTests> '
259+ .'</nestedRule> '
226260 .'</filterRule> ' ;
227261 $ this ->assertXmlStringEqualsXmlString ($ xml , (string ) $ filterRule );
228262
@@ -400,6 +434,139 @@ public function testFilterRule()
400434 'index ' => $ index ,
401435 ),
402436 ),
437+ 'nestedRule ' => array (
438+ 'filterTests ' => array (
439+ 'condition ' => FilterCondition::ALL_OF ()->value (),
440+ 'addressBookTest ' => array (
441+ 'index ' => $ index ,
442+ 'negative ' => true ,
443+ 'header ' => $ header ,
444+ ),
445+ 'addressTest ' => array (
446+ 'index ' => $ index ,
447+ 'negative ' => true ,
448+ 'header ' => $ header ,
449+ 'part ' => $ part ,
450+ 'stringComparison ' => $ comparison ,
451+ 'value ' => $ value ,
452+ 'caseSensitive ' => true ,
453+ ),
454+ 'attachmentTest ' => array (
455+ 'index ' => $ index ,
456+ 'negative ' => true ,
457+ ),
458+ 'bodyTest ' => array (
459+ 'index ' => $ index ,
460+ 'negative ' => true ,
461+ 'value ' => $ value ,
462+ 'caseSensitive ' => true ,
463+ ),
464+ 'bulkTest ' => array (
465+ 'index ' => $ index ,
466+ 'negative ' => true ,
467+ ),
468+ 'contactRankingTest ' => array (
469+ 'index ' => $ index ,
470+ 'negative ' => true ,
471+ 'header ' => $ header ,
472+ ),
473+ 'conversationTest ' => array (
474+ 'index ' => $ index ,
475+ 'negative ' => true ,
476+ 'where ' => $ where ,
477+ ),
478+ 'currentDayOfWeekTest ' => array (
479+ 'index ' => $ index ,
480+ 'negative ' => true ,
481+ 'value ' => $ value ,
482+ ),
483+ 'currentTimeTest ' => array (
484+ 'index ' => $ index ,
485+ 'negative ' => true ,
486+ 'dateComparison ' => $ comparison ,
487+ 'time ' => $ time ,
488+ ),
489+ 'dateTest ' => array (
490+ 'index ' => $ index ,
491+ 'negative ' => true ,
492+ 'dateComparison ' => $ comparison ,
493+ 'd ' => $ date ,
494+ ),
495+ 'facebookTest ' => array (
496+ 'index ' => $ index ,
497+ 'negative ' => true ,
498+ ),
499+ 'flaggedTest ' => array (
500+ 'index ' => $ index ,
501+ 'negative ' => true ,
502+ 'flagName ' => $ flag ,
503+ ),
504+ 'headerExistsTest ' => array (
505+ 'index ' => $ index ,
506+ 'negative ' => true ,
507+ 'header ' => $ header ,
508+ ),
509+ 'headerTest ' => array (
510+ 'index ' => $ index ,
511+ 'negative ' => true ,
512+ 'header ' => $ header ,
513+ 'stringComparison ' => $ comparison ,
514+ 'value ' => $ value ,
515+ 'caseSensitive ' => true ,
516+ ),
517+ 'importanceTest ' => array (
518+ 'index ' => $ index ,
519+ 'negative ' => true ,
520+ 'imp ' => Importance::HIGH ()->value (),
521+ ),
522+ 'inviteTest ' => array (
523+ 'index ' => $ index ,
524+ 'negative ' => true ,
525+ 'method ' => array (
526+ $ method ,
527+ ),
528+ ),
529+ 'linkedinTest ' => array (
530+ 'index ' => $ index ,
531+ 'negative ' => true ,
532+ ),
533+ 'listTest ' => array (
534+ 'index ' => $ index ,
535+ 'negative ' => true ,
536+ ),
537+ 'meTest ' => array (
538+ 'index ' => $ index ,
539+ 'negative ' => true ,
540+ 'header ' => $ header ,
541+ ),
542+ 'mimeHeaderTest ' => array (
543+ 'index ' => $ index ,
544+ 'negative ' => true ,
545+ 'header ' => $ header ,
546+ 'stringComparison ' => $ comparison ,
547+ 'value ' => $ value ,
548+ 'caseSensitive ' => true ,
549+ ),
550+ 'sizeTest ' => array (
551+ 'index ' => $ index ,
552+ 'negative ' => true ,
553+ 'numberComparison ' => $ comparison ,
554+ 's ' => $ size ,
555+ ),
556+ 'socialcastTest ' => array (
557+ 'index ' => $ index ,
558+ 'negative ' => true ,
559+ ),
560+ 'trueTest ' => array (
561+ 'index ' => $ index ,
562+ 'negative ' => true ,
563+ ),
564+ 'twitterTest ' => array (
565+ 'index ' => $ index ,
566+ 'negative ' => true ,
567+ ),
568+ ),
569+ ),
403570 ),
404571 );
405572 $ this ->assertEquals ($ array , $ filterRule ->toArray ());
0 commit comments