/**
  * @param AbstractModel $model
  */
 protected function internalSave(AbstractModel $model)
 {
     $pKey = $this->getPrimaryKey();
     if (isset($model->id)) {
         $this->tableGateway->update($model->toArray(), [$pKey => $model->{$pKey}]);
     } else {
         $this->tableGateway->insert($model->toArray());
         $id = $this->tableGateway->getLastInsertValue();
         $model->{$pKey} = $id;
     }
 }
 private function getUrl($method)
 {
     $parts = explode('\\', get_class($this->testedObject));
     $classname = lcfirst(end($parts));
     // Convert camel case to dash
     $classname = strtolower(preg_replace('/([A-Z])/', '-$1', $classname));
     $id = $this->testedObject->getId();
     switch ($method) {
         case 'getList':
         case Request::METHOD_POST:
             $route = "/api/{$classname}";
             break;
         case Request::METHOD_GET:
         case Request::METHOD_PATCH:
         case Request::METHOD_PUT:
         case Request::METHOD_DELETE:
             $route = "/api/{$classname}/{$id}";
             break;
         default:
             throw new \Exception("Unsupported route '{$method}' for {$classname}");
     }
     return $route;
 }