public function it_closes_penalty(ObjectManager $manager, Penalty $penalty, EventDispatcherInterface $dispatcher) { $penalty->close()->shouldBeCalled(); $manager->persist($penalty)->shouldBeCalled(); $manager->flush()->shouldBeCalled(); $event = new PenaltyEvent($penalty->getWrappedObject()); $dispatcher->dispatch(PenaltyEvents::PENALTY_CLOSED, $event)->shouldBeCalled(); $this->closePenalty($penalty); }
/** * {@inheritdoc} */ public function closePenalty(Penalty $penalty) { if ($penalty->getStatus() === Penalty::DONE) { throw new PenaltyDoneException(); } $penalty->close(); $this->manager->persist($penalty); $this->manager->flush(); $event = new PenaltyEvent($penalty); $this->dispatcher->dispatch(PenaltyEvents::PENALTY_CLOSED, $event); }
/** * {@inheritdoc} */ public function close() { parent::close(); $this->setIsPaid(true); }