예제 #1
0
 /** @test */
 public function performActionAfterRule()
 {
     $context = new Context();
     $condition = $this->getMockForAbstractClass('Superruzafa\\Rules\\Expression', array('evaluate'));
     $condition->expects($this->once())->method('evaluate')->with($context)->will($this->returnValue(false));
     $subruleAction = $this->getMockForAbstractClass('Superruzafa\\Rules\\Action', array('perform'));
     $subruleAction->expects($this->never())->method('perform');
     $subrule = new Rule();
     $subrule->setAction($subruleAction);
     $action = $this->getMockForAbstractClass('Superruzafa\\Rules\\Action', array('perform'));
     $action->expects($this->once())->method('perform')->with($context)->will($this->returnCallback(function (Context $context) {
         \PHPUnit_Framework_Assert::assertFalse($context->offsetExists('after-subrules'));
     }));
     $rule = new Rule();
     $rule->setCondition($condition)->setAction($action, Rule::AFTER_RULE)->appendRule($subrule)->execute($context);
 }