protected function createTicket($iterator, $reporter, $assignee) { /** @var \Diamante\DeskBundle\Entity\Branch $branch */ $branch = $this->branchRepository->findOneBy(array('name' => 'branchName' . $iterator)); $ticket = new Ticket(UniqueId::generate(), new TicketSequenceNumber(null), 'ticketSubject' . $iterator, 'ticketDescription' . $iterator, $branch, $reporter, $assignee, new Source(Source::PHONE), new Priority(Priority::PRIORITY_MEDIUM), new Status(Status::OPEN)); return $ticket; }
public function load(ObjectManager $manager) { $assignee = $this->userRepository->findOneBy(array('id' => 1)); $reporter = new User($assignee->getId(), User::TYPE_ORO); for ($i = 1; $i <= 10; $i++) { $branch = $this->branchRepository->findOneBy(array('name' => 'branchName' . $i)); $ticket = new Ticket(UniqueId::generate(), new TicketSequenceNumber(null), 'ticketSubject' . $i, 'ticketDescription' . $i, $branch, $reporter, $assignee, new Source(Source::PHONE), new Priority(Priority::PRIORITY_MEDIUM), new Status(Status::OPEN)); $manager->persist($ticket); } $manager->flush(); }
/** * @test */ public function thatTicketUpdatesWithNoAttachments() { $reporterId = 2; $assigneeId = 3; $reporter = $this->createReporter($reporterId); $assignee = $this->createAssignee(); $this->userService->expects($this->atLeastOnce())->method('getByUser')->with(new User($assigneeId, User::TYPE_ORO))->will($this->returnValue($assignee)); $newStatus = Status::IN_PROGRESS; $branch = $this->createBranch(); $ticket = new Ticket(UniqueId::generate(), new TicketSequenceNumber(12), self::SUBJECT, self::DESCRIPTION, $branch, $reporter, $assignee, new Source(Source::PHONE), new Priority(Priority::PRIORITY_LOW), new Status(Status::NEW_ONE)); $this->ticketRepository->expects($this->once())->method('get')->with($this->equalTo(self::DUMMY_TICKET_ID))->will($this->returnValue($ticket)); $this->authorizationService->expects($this->once())->method('isActionPermitted')->with($this->equalTo('EDIT'), $this->equalTo($ticket))->will($this->returnValue(true)); $command = new UpdateTicketCommand(); $command->id = self::DUMMY_TICKET_ID; $command->subject = self::SUBJECT; $command->description = self::DESCRIPTION; $command->reporter = (string) $reporter; $command->assignee = $assigneeId; $command->priority = Priority::PRIORITY_LOW; $command->source = Source::PHONE; $command->status = $newStatus; $this->ticketService->updateTicket($command); $this->assertEquals($ticket->getStatus()->getValue(), $newStatus); }
public function testNotifyWithEmptyAuthor() { $ticketUniqueId = UniqueId::generate(); $reporter = new UserAdapter(1, UserAdapter::TYPE_DIAMANTE); $assignee = new User(); $assignee->setId(2); $assignee->setEmail('*****@*****.**'); $author = null; $branch = new Branch('KEY', 'Name', 'Description'); $ticket = new Ticket($ticketUniqueId, new TicketSequenceNumber(1), 'Subject', 'Description', $branch, $reporter, $assignee, new Source(Source::WEB), new Priority(Priority::PRIORITY_MEDIUM), new Status(Status::NEW_ONE)); $notification = new TicketNotification((string) $ticketUniqueId, $author, 'Header', 'Subject', new \ArrayIterator(array('key' => 'value')), array('file.ext')); $message = new \Swift_Message(); $this->watchersService->expects($this->once())->method('getWatchers')->will($this->returnValue([new WatcherList($ticket, 'diamante_1')])); $this->diamanteUserRepository->expects($this->exactly(2))->method('get')->with(1)->will($this->returnValue($this->diamanteUser)); $this->configManager->expects($this->once())->method('get')->will($this->returnValue('*****@*****.**')); $this->nameFormatter->expects($this->once())->method('format')->with($this->diamanteUser)->will($this->returnValue('First Last')); $this->mailer->expects($this->once())->method('createMessage')->will($this->returnValue($message)); $this->ticketRepository->expects($this->once())->method('getByUniqueId')->with($ticketUniqueId)->will($this->returnValue($ticket)); $this->templateResolver->expects($this->any())->method('resolve')->will($this->returnValueMap(array(array($notification, TemplateResolver::TYPE_TXT, 'txt.template.html'), array($notification, TemplateResolver::TYPE_HTML, 'html.template.html')))); $optionsConstraint = $this->logicalAnd($this->arrayHasKey('changes'), $this->arrayHasKey('attachments'), $this->arrayHasKey('user'), $this->arrayHasKey('header'), $this->contains($notification->getChangeList()), $this->contains($notification->getAttachments()), $this->contains('First Last'), $this->contains($notification->getHeaderText())); $this->twig->expects($this->at(0))->method('render')->with('txt.template.html', $optionsConstraint)->will($this->returnValue('Rendered TXT template')); $this->twig->expects($this->at(1))->method('render')->with('html.template.html', $optionsConstraint)->will($this->returnValue('Rendered HTML template')); $this->mailer->expects($this->once())->method('send')->with($this->logicalAnd($this->isInstanceOf('\\Swift_Message'), $this->callback(function (\Swift_Message $other) use($notification) { $to = $other->getTo(); return false !== strpos($other->getSubject(), $notification->getSubject()) && false !== strpos($other->getSubject(), 'KEY-1') && false !== strpos($other->getBody(), 'Rendered TXT template') && array_key_exists('*****@*****.**', $to) && $other->getHeaders()->has('References') && false !== strpos($other->getHeaders()->get('References'), '*****@*****.**') && false !== strpos($other->getHeaders()->get('References'), '*****@*****.**'); }))); $this->messageReferenceRepository->expects($this->once())->method('findAllByTicket')->with($ticket)->will($this->returnValue(array(new MessageReference('*****@*****.**', $ticket), new MessageReference('*****@*****.**', $ticket)))); $this->messageReferenceRepository->expects($this->once())->method('store')->with($this->logicalAnd($this->isInstanceOf('\\Diamante\\DeskBundle\\Model\\Ticket\\EmailProcessing\\MessageReference'))); $notifier = new EmailNotifier($this->container, $this->twig, $this->mailer, $this->templateResolver, $this->ticketRepository, $this->messageReferenceRepository, $this->userService, $this->nameFormatter, $this->diamanteUserRepository, $this->configManager, $this->oroUserManager, $this->watchersService, $this->senderHost); $notifier->notify($notification); }
/** * @return void */ private function initializeDefaultValues() { if (is_null($this->uniqueId)) { $this->uniqueId = UniqueId::generate(); } if (is_null($this->sequenceNumber)) { $this->sequenceNumber = new TicketSequenceNumber(null); } if (is_null($this->priority)) { $this->priority = new Priority(Priority::PRIORITY_MEDIUM); } if (is_null($this->source)) { $this->source = new Source(Source::PHONE); } if (is_null($this->status)) { $this->status = new Status(Status::NEW_ONE); } if (is_null($this->tags)) { $this->tags = new ArrayCollection(); } }