/** * @dataProvider bulkSetterProvider */ public function testSetAll(array $data, $success = true) { $keys = array_keys($data); $getters = array(); foreach ($keys as $key) { $getters[$key] = 'get' . implode('', array_map('ucfirst', explode('_', $key))); } $data = (object) $data; // cast to object if ($success !== true) { //not successful, probably expecting exceptions to be thrown: try { $constructor = new Ticket($data); } catch (\Exception $e) { $this->assertEquals($success, get_class($e)); } $ticket = new Ticket(); try { $ticket->setAll($data); } catch (\Exception $e) { $this->assertEquals($success, get_class($e)); } $this->setExpectedException($success); $ticket->setAll($data); return; } $constructor = new Ticket($data); $ticket = new Ticket($data); $this->assertEquals($constructor->toJsonData(), $ticket->toJsonData(), sprintf('expected %s and %s to match, but it would seem they do not', $ticket->toJsonData(), $constructor->toJsonData())); foreach ($data as $key => $value) { $getter = $getters[$key]; $this->assertEquals($value, $ticket->{$getter}(), sprintf('TICKET: Expected %s (via %s->%s) to be "%s", instead say "%s"', $key, get_class($ticket), $getter, $value, $ticket->{$getter}())); $this->assertEquals($value, $constructor->{$getter}(), sprintf('CONSTRUCTOR: Expected %s (via %s->%s) to be "%s", instead say "%s"', $key, get_class($constructor), $getter, $value, $constructor->{$getter}())); } }
/** * Delete a ticket, optionally make a second API call, to verify success * just in case the API response proves to be unreliable * @param TicketM $ticket * @param bool $reload = false * @return TicketM */ public function deleteTicket(TicketM $ticket, $reload = false) { $url = sprintf('/helpdesk/tickets/%d.json', $ticket->getDisplayId()); $response = $ticket->toJsonData(); $response = json_decode($this->restCall($url, self::METHOD_DEL)); if ($reload === true) { return $this->getFullTicket($ticket); } return $ticket->setDeleted(true); }