mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-05 18:52:44 +01:00
Invoice List Tests
This commit is contained in:
parent
82d573d759
commit
2de838cb62
@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Builder;
|
||||
/**
|
||||
* ProductFilters
|
||||
*/
|
||||
class Invoiceilters extends QueryFilters
|
||||
class InvoiceFilters extends QueryFilters
|
||||
{
|
||||
|
||||
|
||||
|
@ -3,12 +3,14 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Factory\InvoiceFactory;
|
||||
use App\Filters\InvoiceFilters;
|
||||
use App\Http\Requests\Invoice\CreateInvoiceRequest;
|
||||
use App\Http\Requests\Invoice\EditInvoiceRequest;
|
||||
use App\Http\Requests\Invoice\ShowInvoiceRequest;
|
||||
use App\Http\Requests\Invoice\StoreInvoiceRequest;
|
||||
use App\Http\Requests\Invoice\UpdateInvoiceRequest;
|
||||
use App\Models\Invoice;
|
||||
use App\Repositories\InvoiceRepository;
|
||||
use App\Transformers\InvoiceTransformer;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Http\Request;
|
||||
@ -37,7 +39,7 @@ class InvoiceController extends BaseController
|
||||
* ClientController constructor.
|
||||
* @param ClientRepository $clientRepo
|
||||
*/
|
||||
public function __construct(InvoiceRespository $invoice_repo)
|
||||
public function __construct(InvoiceRepository $invoice_repo)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
@ -48,7 +50,7 @@ class InvoiceController extends BaseController
|
||||
/**
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
||||
*/
|
||||
public function index()
|
||||
public function index(InvoiceFilters $filters)
|
||||
{
|
||||
|
||||
$invoices = Invoice::filter($filters);
|
||||
@ -103,7 +105,7 @@ class InvoiceController extends BaseController
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit(EditInvoiceRequest, Invoice $invoice)
|
||||
public function edit(EditInvoiceRequest $request, Invoice $invoice)
|
||||
{
|
||||
|
||||
return $this->itemResponse($invoice);
|
||||
@ -138,6 +140,6 @@ class InvoiceController extends BaseController
|
||||
$invoice->delete();
|
||||
|
||||
return response()->json([], 200);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace App\Transformers;
|
||||
use App\Models\Client;
|
||||
|
||||
use App\Models\Invoice;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
|
||||
/**
|
||||
* @SWG\Definition(definition="Invoice", required={"invoice_number"}, @SWG\Xml(name="Invoice"))
|
||||
@ -67,20 +68,14 @@ class InvoiceTransformer extends EntityTransformer
|
||||
// 'documents',
|
||||
];
|
||||
|
||||
public function __construct($client = null)
|
||||
{
|
||||
parent::__construct($serializer);
|
||||
|
||||
$this->client = $client;
|
||||
}
|
||||
|
||||
/*
|
||||
public function includeInvoiceItems(Invoice $invoice)
|
||||
{
|
||||
$transformer = new InvoiceItemTransformer($this->serializer);
|
||||
|
||||
return $this->includeCollection($invoice->invoice_items, $transformer, ENTITY_INVOICE_ITEM);
|
||||
}
|
||||
/*
|
||||
|
||||
public function includeInvitations(Invoice $invoice)
|
||||
{
|
||||
$transformer = new InvitationTransformer($this->account, $this->serializer);
|
||||
@ -126,7 +121,7 @@ class InvoiceTransformer extends EntityTransformer
|
||||
'id' => $this->encodePrimaryKey($invoice->id),
|
||||
'amount' => (float) $invoice->amount,
|
||||
'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),
|
||||
'updated_at' => $invoice->updated_at,
|
||||
'archived_at' => $invoice->deleted_at,
|
||||
@ -164,10 +159,7 @@ class InvoiceTransformer extends EntityTransformer
|
||||
'quote_invoice_id' => (int) ($invoice->quote_invoice_id ?: 0),
|
||||
'custom_text_value1' => $invoice->custom_text_value1 ?: '',
|
||||
'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,
|
||||
'filename' => $invoice->getFileName(),
|
||||
'options' => $invoice->options ?: '',
|
||||
'backup' => $invoice->backup ?: '',
|
||||
];
|
||||
}
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Models\Account;
|
||||
use App\Models\Client;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
@ -16,7 +18,7 @@ class InvoiceTest extends TestCase
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
|
||||
|
||||
parent::setUp();
|
||||
|
||||
Session::start();
|
||||
@ -25,6 +27,70 @@ class InvoiceTest extends TestCase
|
||||
|
||||
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…
Reference in New Issue
Block a user