diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php index d6f8a8a8fd2d..e5098f1876d0 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -328,9 +328,12 @@ class ClientController extends BaseController ->first(); if (!$m_client) { - return response()->json(['message' => "Client not found"]); + return response()->json(['message' => "Client not found"], 400); } + if($m_client->id == $client->id) + return response()->json(['message' => "Attempting to merge the same client is not possible."], 400); + $merged_client = $client->service()->merge($m_client)->save(); return $this->itemResponse($merged_client); diff --git a/app/Transformers/ProjectTransformer.php b/app/Transformers/ProjectTransformer.php index 69e728a854bd..0b5ff04eb490 100644 --- a/app/Transformers/ProjectTransformer.php +++ b/app/Transformers/ProjectTransformer.php @@ -77,9 +77,6 @@ class ProjectTransformer extends EntityTransformer { $transformer = new InvoiceTransformer($this->serializer); - if(!$project->invoices) - return null; - return $this->includeCollection($project->invoices, $transformer, Invoice::class); } @@ -87,10 +84,6 @@ class ProjectTransformer extends EntityTransformer { $transformer = new ExpenseTransformer($this->serializer); - if(!$project->expenses) { - return null; - } - return $this->includeCollection($project->expenses, $transformer, Expense::class); } @@ -98,14 +91,9 @@ class ProjectTransformer extends EntityTransformer { $transformer = new QuoteTransformer($this->serializer); - if(!$project->quotes) { - return null; - } - return $this->includeCollection($project->quotes, $transformer, Quote::class); } - public function transform(Project $project) { return [ diff --git a/tests/Feature/ProjectApiTest.php b/tests/Feature/ProjectApiTest.php index 2dd3c183fe20..11e38a57cc20 100644 --- a/tests/Feature/ProjectApiTest.php +++ b/tests/Feature/ProjectApiTest.php @@ -47,6 +47,24 @@ class ProjectApiTest extends TestCase Model::reguard(); } + public function testProjectIncludesZeroCount() + { + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->putJson("/api/v1/projects/{$this->project->hashed_id}?include=expenses,invoices,quotes"); + + $response->assertStatus(200); + + $arr = $response->json(); + + $this->assertEquals(0, count($arr['data']['invoices'])); + $this->assertEquals(0, count($arr['data']['expenses'])); + $this->assertEquals(0, count($arr['data']['quotes'])); + + } + public function testProjectIncludes() { $i = Invoice::factory()->create([