public function testPromotionApply() { $discountAction = new DiscountFixedAmountAction(); $discountAction->initialize(20); $actions = array($discountAction, new FreeShippingAction()); $subjectMock = $this->getMock('\\Balalaika\\TestPromotionSubject', array('addOrderDiscount', 'setFreeShipping')); $subjectMock->expects($this->once())->method('addOrderDiscount'); $subjectMock->expects($this->once())->method('setFreeShipping'); $promotion = new Promotion('Lala'); $promotion->setActions($actions); $this->assertTrue($promotion->isEligible($subjectMock)); $promotion->apply($subjectMock); }