function it_updates_a_ticket(Ticket $ticket, TicketRepository $repository, $doctrine, $dispatcher) { $ticket->getId()->shouldBeCalled()->willReturn(true); $ticket->setStatus('open')->shouldNotBeCalled(); $doctrine->getRepository('CSHelpDeskBundle:Ticket')->shouldBeCalled()->willReturn($repository); $dispatcher->dispatch('ticket.pre_update', new TicketEvent($ticket->getWrappedObject()))->shouldBeCalled(); $dispatcher->dispatch('ticket.post_update', new TicketEvent($ticket->getWrappedObject()))->shouldBeCalled(); $repository->save($ticket)->shouldBeCalled(); $this->save($ticket)->shouldReturn(true); }
/** * @param Ticket $ticket * * @return bool */ public function save(Ticket $ticket) { /** @var TicketRepository $repository */ $repository = $this->doctrine->getRepository('CSHelpDeskBundle:Ticket'); $eventType = 'update'; if (!$ticket->getId()) { $ticket->setStatus('open'); $eventType = 'create'; } $this->dispatcher->dispatch(constant(sprintf('CS\\HelpDeskBundle\\Event\\TicketEvent::PRE_%s', strtoupper($eventType))), new TicketEvent($ticket)); $repository->save($ticket); $this->dispatcher->dispatch(constant(sprintf('CS\\HelpDeskBundle\\Event\\TicketEvent::POST_%s', strtoupper($eventType))), new TicketEvent($ticket)); return true; }