uuid"; break; case Schedule::class: $link = "/api/client/servers/{$model->server->uuid}/schedules/$model->id"; break; case Task::class: $link = "/api/client/servers/{$model->schedule->server->uuid}/schedules/{$model->schedule->id}/tasks/$model->id"; break; case Allocation::class: $link = "/api/client/servers/{$model->server->uuid}/network/allocations/$model->id"; break; case Backup::class: $link = "/api/client/servers/{$model->server->uuid}/backups/$model->uuid"; break; default: throw new \InvalidArgumentException(sprintf('Cannot create link for Model of type %s', class_basename($model))); } return $link . ($append ? '/' . ltrim($append, '/') : ''); } /** * Asserts that the data passed through matches the output of the data from the transformer. This * will remove the "relationships" key when performing the comparison. */ protected function assertJsonTransformedWith(array $data, Model|EloquentModel $model): void { $reflect = new \ReflectionClass($model); $transformer = sprintf('\\App\\Transformers\\Api\\Client\\%sTransformer', $reflect->getShortName()); $transformer = new $transformer(); $this->assertInstanceOf(BaseClientTransformer::class, $transformer); $this->assertSame( $transformer->transform($model), Collection::make($data)->except(['relationships'])->toArray() ); } }