mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
Merge branch 'master'
This commit is contained in:
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Crater\Console;
|
namespace Crater\Console;
|
||||||
|
|
||||||
|
use Crater\Models\CompanySetting;
|
||||||
use Crater\Models\RecurringInvoice;
|
use Crater\Models\RecurringInvoice;
|
||||||
use Illuminate\Console\Scheduling\Schedule;
|
use Illuminate\Console\Scheduling\Schedule;
|
||||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||||
@ -37,9 +38,11 @@ class Kernel extends ConsoleKernel
|
|||||||
|
|
||||||
$recurringInvoices = RecurringInvoice::where('status', 'ACTIVE')->get();
|
$recurringInvoices = RecurringInvoice::where('status', 'ACTIVE')->get();
|
||||||
foreach ($recurringInvoices as $recurringInvoice) {
|
foreach ($recurringInvoices as $recurringInvoice) {
|
||||||
|
$timeZone = CompanySetting::getSetting('time_zone', $recurringInvoice->company_id);
|
||||||
|
|
||||||
$schedule->call(function () use ($recurringInvoice) {
|
$schedule->call(function () use ($recurringInvoice) {
|
||||||
$recurringInvoice->generateInvoice();
|
$recurringInvoice->generateInvoice();
|
||||||
})->cron($recurringInvoice->frequency);
|
})->cron($recurringInvoice->frequency)->timezone($timeZone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@
|
|||||||
namespace Crater\Http\Middleware;
|
namespace Crater\Http\Middleware;
|
||||||
|
|
||||||
use Closure;
|
use Closure;
|
||||||
use Crater\Models\CompanySetting;
|
|
||||||
use Crater\Models\FileDisk;
|
use Crater\Models\FileDisk;
|
||||||
|
|
||||||
class ConfigMiddleware
|
class ConfigMiddleware
|
||||||
@ -18,15 +17,6 @@ class ConfigMiddleware
|
|||||||
public function handle($request, Closure $next)
|
public function handle($request, Closure $next)
|
||||||
{
|
{
|
||||||
if (\Storage::disk('local')->has('database_created')) {
|
if (\Storage::disk('local')->has('database_created')) {
|
||||||
$setting = CompanySetting::getSetting('time_zone', $request->header('company'));
|
|
||||||
|
|
||||||
$timezone = config('app.timezone');
|
|
||||||
|
|
||||||
if ($setting && $setting != null && $setting != $timezone) {
|
|
||||||
config(['app.timezone' => $setting]);
|
|
||||||
date_default_timezone_set($setting);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($request->has('file_disk_id')) {
|
if ($request->has('file_disk_id')) {
|
||||||
$file_disk = FileDisk::find($request->file_disk_id);
|
$file_disk = FileDisk::find($request->file_disk_id);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1,96 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Models\Company;
|
|
||||||
use Crater\Models\User;
|
|
||||||
use Illuminate\Support\Facades\Artisan;
|
|
||||||
use Laravel\Sanctum\Sanctum;
|
|
||||||
use function Pest\Laravel\getJson;
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
|
|
||||||
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
|
|
||||||
|
|
||||||
$user = User::find(1);
|
|
||||||
$this->withHeaders([
|
|
||||||
'company' => $user->companies()->first()->id,
|
|
||||||
]);
|
|
||||||
Sanctum::actingAs(
|
|
||||||
$user,
|
|
||||||
['*']
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('get customer sales report', function () {
|
|
||||||
$filters = [
|
|
||||||
'page' => 1,
|
|
||||||
'limit' => 15,
|
|
||||||
'from_date' => '2020-07-18',
|
|
||||||
'to_date' => '2020-07-20',
|
|
||||||
];
|
|
||||||
$queryString = http_build_query($filters, '', '&');
|
|
||||||
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
|
|
||||||
|
|
||||||
$response = getJson('reports/sales/customers/'.$queryString);
|
|
||||||
|
|
||||||
$response->assertOk();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('get item sales report', function () {
|
|
||||||
$filters = [
|
|
||||||
'page' => 1,
|
|
||||||
'limit' => 15,
|
|
||||||
'from_date' => '2020-07-18',
|
|
||||||
'to_date' => '2020-07-20',
|
|
||||||
];
|
|
||||||
$queryString = http_build_query($filters, '', '&');
|
|
||||||
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
|
|
||||||
|
|
||||||
$response = getJson('reports/sales/items/'.$queryString);
|
|
||||||
|
|
||||||
$response->assertOk();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('get expenses report', function () {
|
|
||||||
$filters = [
|
|
||||||
'page' => 1,
|
|
||||||
'limit' => 15,
|
|
||||||
'from_date' => '2020-07-18',
|
|
||||||
'to_date' => '2020-07-20',
|
|
||||||
];
|
|
||||||
$queryString = http_build_query($filters, '', '&');
|
|
||||||
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
|
|
||||||
|
|
||||||
$response = getJson('reports/expenses/'.$queryString);
|
|
||||||
|
|
||||||
$response->assertOk();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('get tax summary', function () {
|
|
||||||
$filters = [
|
|
||||||
'page' => 1,
|
|
||||||
'limit' => 15,
|
|
||||||
'from_date' => '2020-07-18',
|
|
||||||
'to_date' => '2020-07-20',
|
|
||||||
];
|
|
||||||
$queryString = http_build_query($filters, '', '&');
|
|
||||||
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
|
|
||||||
|
|
||||||
$response = getJson('reports/tax-summary/'.$queryString);
|
|
||||||
|
|
||||||
$response->assertOk();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('get profit loss', function () {
|
|
||||||
$filters = [
|
|
||||||
'page' => 1,
|
|
||||||
'limit' => 15,
|
|
||||||
'from_date' => '2020-07-18',
|
|
||||||
'to_date' => '2020-07-20',
|
|
||||||
];
|
|
||||||
$queryString = http_build_query($filters, '', '&');
|
|
||||||
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
|
|
||||||
|
|
||||||
$response = getJson('reports/profit-loss/'.$queryString);
|
|
||||||
|
|
||||||
$response->assertOk();
|
|
||||||
});
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\BulkExchangeRateRequest;
|
|
||||||
|
|
||||||
test('bulk exchange rate request validation rules', function () {
|
|
||||||
$request = new BulkExchangeRateRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'currencies' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'currencies.*.id' => [
|
|
||||||
'required',
|
|
||||||
'numeric'
|
|
||||||
],
|
|
||||||
'currencies.*.exchange_rate' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('bulk exchange rate request authorize', function () {
|
|
||||||
$request = new BulkExchangeRateRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,55 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\CompaniesRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('companies request validation rules', function () {
|
|
||||||
$request = new CompaniesRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('companies'),
|
|
||||||
'string'
|
|
||||||
],
|
|
||||||
'currency' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'address.name' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'address.address_street_1' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'address.address_street_2' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'address.city' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'address.state' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'address.country_id' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'address.zip' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'address.phone' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'address.fax' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('companies request authorize', function () {
|
|
||||||
$request = new CompaniesRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\CompanyRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('company request validation rules', function () {
|
|
||||||
$request = new CompanyRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('companies')->ignore($request->header('company'), 'id'),
|
|
||||||
],
|
|
||||||
'slug' => [
|
|
||||||
'nullable'
|
|
||||||
],
|
|
||||||
'address.country_id' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('company request authorize', function () {
|
|
||||||
$request = new CompanyRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\CustomFieldRequest;
|
|
||||||
|
|
||||||
test('custom field request validation rules', function () {
|
|
||||||
$request = new CustomFieldRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => 'required',
|
|
||||||
'label' => 'required',
|
|
||||||
'model_type' => 'required',
|
|
||||||
'type' => 'required',
|
|
||||||
'is_required' => 'required|boolean',
|
|
||||||
'options' => 'array',
|
|
||||||
'placeholder' => 'string|nullable',
|
|
||||||
'order' => 'required',
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('custom field request authorize', function () {
|
|
||||||
$request = new CustomFieldRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\Customer\CustomerLoginRequest;
|
|
||||||
|
|
||||||
test('customer login request validation rules', function () {
|
|
||||||
$request = new CustomerLoginRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'email' => [
|
|
||||||
'required',
|
|
||||||
'string'
|
|
||||||
],
|
|
||||||
'password' => [
|
|
||||||
'required',
|
|
||||||
'string'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('customer login request authorize', function () {
|
|
||||||
$request = new CustomerLoginRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,92 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\Customer\CustomerProfileRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('customer profile request validation rules', function () {
|
|
||||||
$request = new CustomerProfileRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'password' => [
|
|
||||||
'nullable',
|
|
||||||
'min:8',
|
|
||||||
],
|
|
||||||
'email' => [
|
|
||||||
'nullable',
|
|
||||||
'email',
|
|
||||||
Rule::unique('customers')->where('company_id', $request->header('company'))->ignore(Auth::id(), 'id')
|
|
||||||
],
|
|
||||||
'billing.name' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.address_street_1' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.address_street_2' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.city' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.state' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.country_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.zip' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.phone' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.fax' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.name' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.address_street_1' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.address_street_2' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.city' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.state' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.country_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.zip' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.phone' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.fax' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'customer_avatar' => [
|
|
||||||
'nullable',
|
|
||||||
'file',
|
|
||||||
'mimes:gif,jpg,png',
|
|
||||||
'max:20000'
|
|
||||||
]
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('customer profile request authorize', function () {
|
|
||||||
$request = new CustomerProfileRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,106 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\CustomerRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('customer request validation rules', function () {
|
|
||||||
$request = new CustomerRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'email' => [
|
|
||||||
'email',
|
|
||||||
'nullable',
|
|
||||||
Rule::unique('customers')->where('company_id', $request->header('company'))
|
|
||||||
],
|
|
||||||
'password' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'phone' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'company_name' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'contact_name' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'website' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'prefix' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'enable_portal' => [
|
|
||||||
'boolean',
|
|
||||||
],
|
|
||||||
'currency_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.name' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.address_street_1' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.address_street_2' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.city' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.state' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.country_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.zip' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.phone' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'billing.fax' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.name' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.address_street_1' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.address_street_2' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.city' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.state' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.country_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.zip' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.phone' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'shipping.fax' => [
|
|
||||||
'nullable',
|
|
||||||
]
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('customer request authorize', function () {
|
|
||||||
$request = new CustomerRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,74 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\EstimatesRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('estimate request validation rules', function () {
|
|
||||||
$request = new EstimatesRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'estimate_date' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'expiry_date' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'customer_id' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'estimate_number' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('estimates')->where('company_id', $request->header('company'))
|
|
||||||
],
|
|
||||||
'exchange_rate' => [
|
|
||||||
'nullable'
|
|
||||||
],
|
|
||||||
'discount' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'discount_val' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'sub_total' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'total' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'tax' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'template_name' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'items' => [
|
|
||||||
'required',
|
|
||||||
'array',
|
|
||||||
],
|
|
||||||
'items.*.description' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'items.*' => [
|
|
||||||
'required',
|
|
||||||
'max:255',
|
|
||||||
],
|
|
||||||
'items.*.name' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'items.*.quantity' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'items.*.price' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('estimate request authorize', function () {
|
|
||||||
$request = new EstimatesRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\ExchangeRateLogRequest;
|
|
||||||
|
|
||||||
test('exchange rate log request validation rules', function () {
|
|
||||||
$request = new ExchangeRateLogRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'exchange_rate' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'currency_id' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('exchange rate log request authorize', function () {
|
|
||||||
$request = new ExchangeRateLogRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\ExchangeRateProviderRequest;
|
|
||||||
|
|
||||||
test('exchange rate provider request validation rules', function () {
|
|
||||||
$request = new ExchangeRateProviderRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'driver' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'key' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'currencies' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'currencies.*' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'driver_config' => [
|
|
||||||
'nullable'
|
|
||||||
],
|
|
||||||
'active' => [
|
|
||||||
'nullable',
|
|
||||||
'boolean'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('exchange rate provider request authorize', function () {
|
|
||||||
$request = new ExchangeRateProviderRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\ExpenseCategoryRequest;
|
|
||||||
|
|
||||||
test('expense category request validation rules', function () {
|
|
||||||
$request = new ExpenseCategoryRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'description' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('expense category request authorize', function () {
|
|
||||||
$request = new ExpenseCategoryRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\ExpenseRequest;
|
|
||||||
|
|
||||||
test('expense request validation rules', function () {
|
|
||||||
$request = new ExpenseRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'expense_date' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'expense_category_id' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'exchange_rate' => [
|
|
||||||
'nullable'
|
|
||||||
],
|
|
||||||
'payment_method_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'amount' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'customer_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'notes' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'currency_id' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'attachment_receipt' => [
|
|
||||||
'nullable',
|
|
||||||
'file',
|
|
||||||
'mimes:jpg,png,pdf,doc,docx,xls,xlsx,ppt,pptx',
|
|
||||||
'max:20000'
|
|
||||||
]
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('expense request authorize', function () {
|
|
||||||
$request = new ExpenseRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\GetSettingsRequest;
|
|
||||||
|
|
||||||
test('get settings request rules', function () {
|
|
||||||
$request = new GetSettingsRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'settings' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'settings.*' => [
|
|
||||||
'required',
|
|
||||||
'string',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
test('get settings request authorize', function () {
|
|
||||||
$request = new GetSettingsRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,74 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\InvoicesRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('invoice request validation rules', function () {
|
|
||||||
$request = new InvoicesRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'invoice_date' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'due_date' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'customer_id' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'invoice_number' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('invoices')->where('company_id', $request->header('company'))
|
|
||||||
],
|
|
||||||
'exchange_rate' => [
|
|
||||||
'nullable'
|
|
||||||
],
|
|
||||||
'discount' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'discount_val' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'sub_total' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'total' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'tax' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'template_name' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'items' => [
|
|
||||||
'required',
|
|
||||||
'array',
|
|
||||||
],
|
|
||||||
'items.*' => [
|
|
||||||
'required',
|
|
||||||
'max:255',
|
|
||||||
],
|
|
||||||
'items.*.description' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'items.*.name' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'items.*.quantity' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'items.*.price' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('invoices request authorize', function () {
|
|
||||||
$request = new InvoicesRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\ItemsRequest;
|
|
||||||
|
|
||||||
test('items request validation rules', function () {
|
|
||||||
$request = new ItemsRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'price' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'unit_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'description' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('item request authorize', function () {
|
|
||||||
$request = new ItemsRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\LoginRequest;
|
|
||||||
|
|
||||||
test('login request validation rules', function () {
|
|
||||||
$request = new LoginRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'username' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'password' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'device_name' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('login request authorize', function () {
|
|
||||||
$request = new LoginRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\NotesRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('note request validation rules', function () {
|
|
||||||
$request = new NotesRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'type' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('notes')
|
|
||||||
->where('company_id', $request->header('company'))
|
|
||||||
->where('type', $request->type)
|
|
||||||
],
|
|
||||||
'notes' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('note request authorize', function () {
|
|
||||||
$request = new NotesRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\PaymentMethodRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('payment method request validation rules', function () {
|
|
||||||
$request = new PaymentMethodRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('payment_methods')
|
|
||||||
->where('company_id', $request->header('company')),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('payment method request authorize', function () {
|
|
||||||
$request = new PaymentMethodRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\PaymentRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('payment request validation rules', function () {
|
|
||||||
$request = new PaymentRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'payment_date' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'customer_id' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'exchange_rate' => [
|
|
||||||
'nullable'
|
|
||||||
],
|
|
||||||
'amount' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'payment_number' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('payments')->where('company_id', $request->header('company'))
|
|
||||||
],
|
|
||||||
'invoice_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'payment_method_id' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'notes' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('payment request authorize', function () {
|
|
||||||
$request = new PaymentRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\ProfileRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('profile request validation rules', function () {
|
|
||||||
$request = new ProfileRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'password' => [
|
|
||||||
'nullable',
|
|
||||||
'min:8',
|
|
||||||
],
|
|
||||||
'email' => [
|
|
||||||
'required',
|
|
||||||
'email',
|
|
||||||
Rule::unique('users')->ignore(Auth::id(), 'id'),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('profile request authorize', function () {
|
|
||||||
$request = new ProfileRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,68 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\RecurringInvoiceRequest;
|
|
||||||
|
|
||||||
test('recurring invoice request validation rules', function () {
|
|
||||||
$request = new RecurringInvoiceRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'starts_at' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'send_automatically' => [
|
|
||||||
'required',
|
|
||||||
'boolean'
|
|
||||||
],
|
|
||||||
'customer_id' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'discount' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'discount_val' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'sub_total' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'total' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'tax' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'status' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'exchange_rate' => [
|
|
||||||
'nullable'
|
|
||||||
],
|
|
||||||
'frequency' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'limit_by' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'limit_count' => [
|
|
||||||
'required_if:limit_by,COUNT',
|
|
||||||
],
|
|
||||||
'limit_date' => [
|
|
||||||
'required_if:limit_by,DATE',
|
|
||||||
],
|
|
||||||
'items' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'items.*' => [
|
|
||||||
'required'
|
|
||||||
]
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('recurring invoice request authorize', function () {
|
|
||||||
$request = new RecurringInvoiceRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\RoleRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('role request validation rules', function () {
|
|
||||||
$request = new RoleRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
'string',
|
|
||||||
Rule::unique('roles')->where('scope', $request->header('company'))
|
|
||||||
],
|
|
||||||
'abilities' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
'abilities.*' => [
|
|
||||||
'required'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('role request authorize', function () {
|
|
||||||
$request = new RoleRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\TaxTypeRequest;
|
|
||||||
use Crater\Models\TaxType;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('tax type request validation rules', function () {
|
|
||||||
$request = new TaxTypeRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('tax_types')
|
|
||||||
->where('type', TaxType::TYPE_GENERAL)
|
|
||||||
->where('company_id', $request->header('company'))
|
|
||||||
],
|
|
||||||
'percent' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'description' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'compound_tax' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'collective_tax' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
test('tax type request authorize', function () {
|
|
||||||
$request = new TaxTypeRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\UnitRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('unit request validation rules', function () {
|
|
||||||
$request = new UnitRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
Rule::unique('units')
|
|
||||||
->where('company_id', $request->header('company')),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('unit request authorize', function () {
|
|
||||||
$request = new UnitRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\UpdateSettingsRequest;
|
|
||||||
|
|
||||||
test('update settings request rules', function () {
|
|
||||||
$request = new UpdateSettingsRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'settings' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
test('update settings request authorize', function () {
|
|
||||||
$request = new UpdateSettingsRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Crater\Http\Requests\UserRequest;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
test('user request validation rules', function () {
|
|
||||||
$request = new UserRequest();
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
[
|
|
||||||
'name' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'email' => [
|
|
||||||
'required',
|
|
||||||
'email',
|
|
||||||
Rule::unique('users'),
|
|
||||||
],
|
|
||||||
'phone' => [
|
|
||||||
'nullable',
|
|
||||||
],
|
|
||||||
'password' => [
|
|
||||||
'required',
|
|
||||||
'min:8',
|
|
||||||
],
|
|
||||||
'companies' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'companies.*.id' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
'companies.*.role' => [
|
|
||||||
'required',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
$request->rules()
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('user request authorize', function () {
|
|
||||||
$request = new UserRequest();
|
|
||||||
|
|
||||||
$this->assertTrue($request->authorize());
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user