mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-23 20:00:33 -04:00
Invoice List Tests
This commit is contained in:
parent
82d573d759
commit
2de838cb62
@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Builder;
|
|||||||
/**
|
/**
|
||||||
* ProductFilters
|
* ProductFilters
|
||||||
*/
|
*/
|
||||||
class Invoiceilters extends QueryFilters
|
class InvoiceFilters extends QueryFilters
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,12 +3,14 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Factory\InvoiceFactory;
|
use App\Factory\InvoiceFactory;
|
||||||
|
use App\Filters\InvoiceFilters;
|
||||||
use App\Http\Requests\Invoice\CreateInvoiceRequest;
|
use App\Http\Requests\Invoice\CreateInvoiceRequest;
|
||||||
use App\Http\Requests\Invoice\EditInvoiceRequest;
|
use App\Http\Requests\Invoice\EditInvoiceRequest;
|
||||||
use App\Http\Requests\Invoice\ShowInvoiceRequest;
|
use App\Http\Requests\Invoice\ShowInvoiceRequest;
|
||||||
use App\Http\Requests\Invoice\StoreInvoiceRequest;
|
use App\Http\Requests\Invoice\StoreInvoiceRequest;
|
||||||
use App\Http\Requests\Invoice\UpdateInvoiceRequest;
|
use App\Http\Requests\Invoice\UpdateInvoiceRequest;
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
|
use App\Repositories\InvoiceRepository;
|
||||||
use App\Transformers\InvoiceTransformer;
|
use App\Transformers\InvoiceTransformer;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@ -37,7 +39,7 @@ class InvoiceController extends BaseController
|
|||||||
* ClientController constructor.
|
* ClientController constructor.
|
||||||
* @param ClientRepository $clientRepo
|
* @param ClientRepository $clientRepo
|
||||||
*/
|
*/
|
||||||
public function __construct(InvoiceRespository $invoice_repo)
|
public function __construct(InvoiceRepository $invoice_repo)
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
@ -48,7 +50,7 @@ class InvoiceController extends BaseController
|
|||||||
/**
|
/**
|
||||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(InvoiceFilters $filters)
|
||||||
{
|
{
|
||||||
|
|
||||||
$invoices = Invoice::filter($filters);
|
$invoices = Invoice::filter($filters);
|
||||||
@ -103,7 +105,7 @@ class InvoiceController extends BaseController
|
|||||||
* @param int $id
|
* @param int $id
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function edit(EditInvoiceRequest, Invoice $invoice)
|
public function edit(EditInvoiceRequest $request, Invoice $invoice)
|
||||||
{
|
{
|
||||||
|
|
||||||
return $this->itemResponse($invoice);
|
return $this->itemResponse($invoice);
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Transformers;
|
namespace App\Transformers;
|
||||||
use App\Models\Client;
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @SWG\Definition(definition="Invoice", required={"invoice_number"}, @SWG\Xml(name="Invoice"))
|
* @SWG\Definition(definition="Invoice", required={"invoice_number"}, @SWG\Xml(name="Invoice"))
|
||||||
@ -67,20 +68,14 @@ class InvoiceTransformer extends EntityTransformer
|
|||||||
// 'documents',
|
// 'documents',
|
||||||
];
|
];
|
||||||
|
|
||||||
public function __construct($client = null)
|
/*
|
||||||
{
|
|
||||||
parent::__construct($serializer);
|
|
||||||
|
|
||||||
$this->client = $client;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function includeInvoiceItems(Invoice $invoice)
|
public function includeInvoiceItems(Invoice $invoice)
|
||||||
{
|
{
|
||||||
$transformer = new InvoiceItemTransformer($this->serializer);
|
$transformer = new InvoiceItemTransformer($this->serializer);
|
||||||
|
|
||||||
return $this->includeCollection($invoice->invoice_items, $transformer, ENTITY_INVOICE_ITEM);
|
return $this->includeCollection($invoice->invoice_items, $transformer, ENTITY_INVOICE_ITEM);
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
public function includeInvitations(Invoice $invoice)
|
public function includeInvitations(Invoice $invoice)
|
||||||
{
|
{
|
||||||
$transformer = new InvitationTransformer($this->account, $this->serializer);
|
$transformer = new InvitationTransformer($this->account, $this->serializer);
|
||||||
@ -126,7 +121,7 @@ class InvoiceTransformer extends EntityTransformer
|
|||||||
'id' => $this->encodePrimaryKey($invoice->id),
|
'id' => $this->encodePrimaryKey($invoice->id),
|
||||||
'amount' => (float) $invoice->amount,
|
'amount' => (float) $invoice->amount,
|
||||||
'balance' => (float) $invoice->balance,
|
'balance' => (float) $invoice->balance,
|
||||||
'client_id' => (int) ($this->client ? $this->client->public_id : $invoice->client->public_id),
|
'client_id' => (int) $invoice->client_id,
|
||||||
'invoice_status_id' => (int) ($invoice->invoice_status_id ?: 1),
|
'invoice_status_id' => (int) ($invoice->invoice_status_id ?: 1),
|
||||||
'updated_at' => $invoice->updated_at,
|
'updated_at' => $invoice->updated_at,
|
||||||
'archived_at' => $invoice->deleted_at,
|
'archived_at' => $invoice->deleted_at,
|
||||||
@ -164,10 +159,7 @@ class InvoiceTransformer extends EntityTransformer
|
|||||||
'quote_invoice_id' => (int) ($invoice->quote_invoice_id ?: 0),
|
'quote_invoice_id' => (int) ($invoice->quote_invoice_id ?: 0),
|
||||||
'custom_text_value1' => $invoice->custom_text_value1 ?: '',
|
'custom_text_value1' => $invoice->custom_text_value1 ?: '',
|
||||||
'custom_text_value2' => $invoice->custom_text_value2 ?: '',
|
'custom_text_value2' => $invoice->custom_text_value2 ?: '',
|
||||||
'is_quote' => (bool) $invoice->isType(INVOICE_TYPE_QUOTE), // Temp to support mobile app
|
|
||||||
'is_public' => (bool) $invoice->is_public,
|
'is_public' => (bool) $invoice->is_public,
|
||||||
'filename' => $invoice->getFileName(),
|
|
||||||
'options' => $invoice->options ?: '',
|
|
||||||
'backup' => $invoice->backup ?: '',
|
'backup' => $invoice->backup ?: '',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
namespace Tests\Feature;
|
namespace Tests\Feature;
|
||||||
|
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Models\Client;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
@ -25,6 +27,70 @@ class InvoiceTest extends TestCase
|
|||||||
|
|
||||||
Model::reguard();
|
Model::reguard();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInvoiceList()
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'first_name' => $this->faker->firstName,
|
||||||
|
'last_name' => $this->faker->lastName,
|
||||||
|
'email' => $this->faker->unique()->safeEmail,
|
||||||
|
'password' => 'ALongAndBrilliantPassword123',
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'privacy_policy' => 1,
|
||||||
|
'terms_of_service' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
])->post('/api/v1/signup', $data);
|
||||||
|
|
||||||
|
$acc = $response->json();
|
||||||
|
|
||||||
|
$account = Account::find($acc['id']);
|
||||||
|
|
||||||
|
$company_token = $account->default_company->tokens()->first();
|
||||||
|
$token = $company_token->token;
|
||||||
|
$company = $company_token->company;
|
||||||
|
|
||||||
|
$user = $company_token->user;
|
||||||
|
|
||||||
|
$this->assertNotNull($company_token);
|
||||||
|
$this->assertNotNull($token);
|
||||||
|
$this->assertNotNull($user);
|
||||||
|
$this->assertNotNull($company);
|
||||||
|
$this->assertNotNull($user->tokens->first()->company);
|
||||||
|
|
||||||
|
factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){
|
||||||
|
|
||||||
|
factory(\App\Models\ClientContact::class,1)->create([
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'client_id' => $c->id,
|
||||||
|
'company_id' => $company->id,
|
||||||
|
'is_primary' => 1
|
||||||
|
]);
|
||||||
|
|
||||||
|
factory(\App\Models\ClientContact::class,1)->create([
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'client_id' => $c->id,
|
||||||
|
'company_id' => $company->id
|
||||||
|
]);
|
||||||
|
|
||||||
|
});
|
||||||
|
$client = Client::all()->first();
|
||||||
|
|
||||||
|
factory(\App\Models\Invoice::class, 5)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]);
|
||||||
|
|
||||||
|
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $token,
|
||||||
|
])->get('/api/v1/invoices');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user