mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Live Design Preview Test
This commit is contained in:
parent
870fb637fd
commit
20b7bdfaef
@ -177,6 +177,9 @@ class PreviewController extends BaseController
|
||||
|
||||
public function design(DesignPreviewRequest $request)
|
||||
{
|
||||
if(Ninja::isHosted() && $request->getHost() != 'preview.invoicing.co')
|
||||
return response()->json(['message' => 'This server cannot handle this request.'], 400);
|
||||
|
||||
$company = auth()->user()->company();
|
||||
|
||||
MultiDB::setDb($company->db);
|
||||
@ -294,7 +297,7 @@ class PreviewController extends BaseController
|
||||
->build();
|
||||
|
||||
DB::connection(config('database.default'))->rollBack();
|
||||
nlog($maker->getCompiledHTML());
|
||||
|
||||
if (request()->query('html') == 'true') {
|
||||
nlog($maker->getCompiledHTML());
|
||||
return $maker->getCompiledHTML();
|
||||
@ -341,6 +344,9 @@ nlog($maker->getCompiledHTML());
|
||||
|
||||
public function live(PreviewInvoiceRequest $request)
|
||||
{
|
||||
if(Ninja::isHosted() && $request->getHost() != 'preview.invoicing.co')
|
||||
return response()->json(['message' => 'This server cannot handle this request.'], 400);
|
||||
|
||||
$company = auth()->user()->company();
|
||||
|
||||
MultiDB::setDb($company->db);
|
||||
|
71
app/Http/Requests/Preview/DesignPreviewRequest.php
Normal file
71
app/Http/Requests/Preview/DesignPreviewRequest.php
Normal file
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Requests\Preview;
|
||||
|
||||
use App\Http\Requests\Request;
|
||||
use App\Http\ValidationRules\Project\ValidProjectForClient;
|
||||
use App\Models\Credit;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\PurchaseOrder;
|
||||
use App\Models\Quote;
|
||||
use App\Models\RecurringInvoice;
|
||||
use App\Utils\Traits\CleanLineItems;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class DesignPreviewRequest extends Request
|
||||
{
|
||||
use MakesHash;
|
||||
use CleanLineItems;
|
||||
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('create', Invoice::class) ||
|
||||
auth()->user()->can('create', Quote::class) ||
|
||||
auth()->user()->can('create', RecurringInvoice::class) ||
|
||||
auth()->user()->can('create', Credit::class) ||
|
||||
auth()->user()->can('create', PurchaseOrder::class);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
$rules = [
|
||||
'entity' => 'bail|sometimes|string',
|
||||
'entity_id' => 'bail|sometimes|string',
|
||||
'settings_type' => 'bail|required|in:company,group,client',
|
||||
'settings' => 'sometimes',
|
||||
'group_id' => 'sometimes',
|
||||
'client_id' => 'sometimes',
|
||||
];
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
$input = $this->decodePrimaryKeys($input);
|
||||
|
||||
$input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : [];
|
||||
$input['amount'] = 0;
|
||||
$input['balance'] = 0;
|
||||
$input['number'] = ctrans('texts.live_preview').' #'.rand(0, 1000);
|
||||
|
||||
$this->replace($input);
|
||||
}
|
||||
}
|
@ -46,6 +46,7 @@ class DesignApiTest extends TestCase
|
||||
|
||||
public function testDesignPost()
|
||||
{
|
||||
|
||||
$design = [
|
||||
'body' => 'body',
|
||||
'includes' => 'includes',
|
||||
|
57
tests/Feature/LiveDesignTest.php
Normal file
57
tests/Feature/LiveDesignTest.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||
use Tests\MockAccountData;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @covers App\Http\Controllers\PreviewController
|
||||
*/
|
||||
class LiveDesignTest extends TestCase
|
||||
{
|
||||
use DatabaseTransactions;
|
||||
use MockAccountData;
|
||||
|
||||
protected function setUp() :void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->makeTestData();
|
||||
|
||||
$this->withoutMiddleware(
|
||||
ThrottleRequests::class
|
||||
);
|
||||
}
|
||||
|
||||
public function testDesignRoute200()
|
||||
{
|
||||
$data = [
|
||||
'entity' => 'invoice',
|
||||
'entity_id' => $this->invoice->hashed_id,
|
||||
'settings_type' => 'company',
|
||||
'settings' => (array)$this->company->settings,
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->post('/api/v1/live_design/', $data);
|
||||
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user