mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
tests for documents
This commit is contained in:
parent
1042bbec7b
commit
4c08187bf1
@ -61,6 +61,11 @@ class Project extends BaseModel
|
||||
return $this->belongsTo(Client::class)->withTrashed();
|
||||
}
|
||||
|
||||
public function documents()
|
||||
{
|
||||
return $this->morphMany(Document::class, 'documentable');
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
// */
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace App\Transformers;
|
||||
|
||||
use App\Models\Document;
|
||||
use App\Models\Expense;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
@ -23,15 +24,23 @@ class ExpenseTransformer extends EntityTransformer
|
||||
use MakesHash;
|
||||
use SoftDeletes;
|
||||
protected $defaultIncludes = [
|
||||
'documents',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $availableIncludes = [
|
||||
|
||||
'documents',
|
||||
];
|
||||
|
||||
public function includeDocuments(Expense $expense)
|
||||
{
|
||||
$transformer = new DocumentTransformer($this->serializer);
|
||||
|
||||
return $this->includeCollection($expense->documents, $transformer, Document::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Expense $expense
|
||||
*
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace App\Transformers;
|
||||
|
||||
use App\Models\Document;
|
||||
use App\Models\Project;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
|
||||
@ -22,14 +23,23 @@ class ProjectTransformer extends EntityTransformer
|
||||
use MakesHash;
|
||||
|
||||
protected $defaultIncludes = [
|
||||
'documents',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $availableIncludes = [
|
||||
'documents'
|
||||
];
|
||||
|
||||
public function includeDocuments(Project $project)
|
||||
{
|
||||
$transformer = new DocumentTransformer($this->serializer);
|
||||
|
||||
return $this->includeCollection($project->documents, $transformer, Document::class);
|
||||
}
|
||||
|
||||
public function transform(Project $project)
|
||||
{
|
||||
return [
|
||||
|
@ -12,6 +12,7 @@
|
||||
namespace App\Transformers;
|
||||
|
||||
use App\Models\Activity;
|
||||
use App\Models\Document;
|
||||
use App\Models\Vendor;
|
||||
use App\Models\VendorContact;
|
||||
use App\Models\VendorGatewayToken;
|
||||
@ -29,6 +30,7 @@ class VendorTransformer extends EntityTransformer
|
||||
|
||||
protected $defaultIncludes = [
|
||||
'contacts',
|
||||
'documents'
|
||||
];
|
||||
|
||||
/**
|
||||
@ -36,6 +38,7 @@ class VendorTransformer extends EntityTransformer
|
||||
*/
|
||||
protected $availableIncludes = [
|
||||
'activities',
|
||||
'documents',
|
||||
];
|
||||
|
||||
/**
|
||||
@ -62,6 +65,13 @@ class VendorTransformer extends EntityTransformer
|
||||
return $this->includeCollection($vendor->contacts, $transformer, VendorContact::class);
|
||||
}
|
||||
|
||||
public function includeDocuments(Vendor $vendor)
|
||||
{
|
||||
$transformer = new DocumentTransformer($this->serializer);
|
||||
|
||||
return $this->includeCollection($vendor->documents, $transformer, Document::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Vendor $vendor
|
||||
*
|
||||
|
143
tests/Feature/DocumentsApiTest.php
Normal file
143
tests/Feature/DocumentsApiTest.php
Normal file
@ -0,0 +1,143 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://opensource.org/licenses/AAL
|
||||
*/
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\DataMapper\DefaultSettings;
|
||||
use App\Models\Account;
|
||||
use App\Models\Client;
|
||||
use App\Models\ClientContact;
|
||||
use App\Models\Company;
|
||||
use App\Models\User;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Faker\Factory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use Tests\MockAccountData;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @covers App\Http\Controllers\DocumentController
|
||||
*/
|
||||
class DocumentsApiTest extends TestCase
|
||||
{
|
||||
use MakesHash;
|
||||
use DatabaseTransactions;
|
||||
use MockAccountData;
|
||||
|
||||
public function setUp() :void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->makeTestData();
|
||||
|
||||
Session::start();
|
||||
|
||||
$this->faker = \Faker\Factory::create();
|
||||
|
||||
Model::reguard();
|
||||
}
|
||||
|
||||
public function testClientDocuments()
|
||||
{
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->get('/api/v1/clients');
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertArrayHasKey('documents', $arr['data'][0]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testInvoiceDocuments()
|
||||
{
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->get('/api/v1/invoices');
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertArrayHasKey('documents', $arr['data'][0]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testProjectsDocuments()
|
||||
{
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->get('/api/v1/projects');
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertArrayHasKey('documents', $arr['data'][0]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testExpenseDocuments()
|
||||
{
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->get('/api/v1/expenses');
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertArrayHasKey('documents', $arr['data'][0]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testVendorDocuments()
|
||||
{
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->get('/api/v1/vendors');
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertArrayHasKey('documents', $arr['data'][0]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testProductDocuments()
|
||||
{
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->get('/api/v1/products');
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertArrayHasKey('documents', $arr['data'][0]);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -35,6 +35,7 @@ use App\Models\Expense;
|
||||
use App\Models\GroupSetting;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\InvoiceInvitation;
|
||||
use App\Models\Product;
|
||||
use App\Models\Project;
|
||||
use App\Models\Quote;
|
||||
use App\Models\QuoteInvitation;
|
||||
@ -159,6 +160,11 @@ trait MockAccountData
|
||||
|
||||
$company_token->save();
|
||||
|
||||
Product::factory()->create([
|
||||
'user_id' => $this->user->id,
|
||||
'company_id' => $this->company->id,
|
||||
]);
|
||||
|
||||
$this->client = Client::factory()->create([
|
||||
'user_id' => $this->user->id,
|
||||
'company_id' => $this->company->id,
|
||||
|
Loading…
x
Reference in New Issue
Block a user