Back fill test for filters

This commit is contained in:
David Bomba 2023-01-19 11:52:07 +11:00
parent fe24cc5eb6
commit 0caa8ea8ce
28 changed files with 188 additions and 80 deletions

View File

@ -32,11 +32,11 @@ class ExpenseFilters extends QueryFilters
} }
return $this->builder->where(function ($query) use ($filter) { return $this->builder->where(function ($query) use ($filter) {
$query->where('expenses.public_notes', 'like', '%'.$filter.'%') $query->where('public_notes', 'like', '%'.$filter.'%')
->orWhere('expenses.custom_value1', 'like', '%'.$filter.'%') ->orWhere('custom_value1', 'like', '%'.$filter.'%')
->orWhere('expenses.custom_value2', 'like', '%'.$filter.'%') ->orWhere('custom_value2', 'like', '%'.$filter.'%')
->orWhere('expenses.custom_value3', 'like', '%'.$filter.'%') ->orWhere('custom_value3', 'like', '%'.$filter.'%')
->orWhere('expenses.custom_value4', 'like', '%'.$filter.'%'); ->orWhere('custom_value4', 'like', '%'.$filter.'%');
}); });
} }

View File

@ -11,11 +11,7 @@
namespace App\Filters; namespace App\Filters;
use App\Models\Project;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
/** /**
* ProjectFilters. * ProjectFilters.
@ -52,7 +48,8 @@ class ProjectFilters extends QueryFilters
{ {
$sort_col = explode('|', $sort); $sort_col = explode('|', $sort);
return $this->builder->orderBy($sort_col[0], $sort_col[1]); if(is_array($sort_col))
return $this->builder->orderBy($sort_col[0], $sort_col[1]);
} }
/** /**

View File

@ -12,7 +12,6 @@
namespace App\Filters; namespace App\Filters;
use App\Models\PurchaseOrder; use App\Models\PurchaseOrder;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
class PurchaseOrderFilters extends QueryFilters class PurchaseOrderFilters extends QueryFilters

View File

@ -11,11 +11,7 @@
namespace App\Filters; namespace App\Filters;
use App\Models\RecurringExpense;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
/** /**
* RecurringExpenseFilters. * RecurringExpenseFilters.
@ -29,19 +25,18 @@ class RecurringExpenseFilters extends QueryFilters
* @return Builder * @return Builder
* @deprecated * @deprecated
*/ */
public function filter(string $filter = '') : Builder public function filter(string $filter = ''): Builder
{ {
if (strlen($filter) == 0) { if (strlen($filter) == 0) {
return $this->builder; return $this->builder;
} }
return $this->builder->where(function ($query) use ($filter) { return $this->builder->where(function ($query) use ($filter) {
$query->where('recurring_expenses.name', 'like', '%'.$filter.'%') $query->where('public_notes', 'like', '%'.$filter.'%')
->orWhere('recurring_expenses.id_number', 'like', '%'.$filter.'%') ->orWhere('custom_value1', 'like', '%'.$filter.'%')
->orWhere('recurring_expenses.custom_value1', 'like', '%'.$filter.'%') ->orWhere('custom_value2', 'like', '%'.$filter.'%')
->orWhere('recurring_expenses.custom_value2', 'like', '%'.$filter.'%') ->orWhere('custom_value3', 'like', '%'.$filter.'%')
->orWhere('recurring_expenses.custom_value3', 'like', '%'.$filter.'%') ->orWhere('custom_value4', 'like', '%'.$filter.'%');
->orWhere('recurring_expenses.custom_value4', 'like', '%'.$filter.'%');
}); });
} }
@ -51,7 +46,7 @@ class RecurringExpenseFilters extends QueryFilters
* @param string sort formatted as column|asc * @param string sort formatted as column|asc
* @return Builder * @return Builder
*/ */
public function sort(string $sort) : Builder public function sort(string $sort): Builder
{ {
$sort_col = explode('|', $sort); $sort_col = explode('|', $sort);

View File

@ -12,7 +12,6 @@
namespace App\Filters; namespace App\Filters;
use App\Models\RecurringInvoice; use App\Models\RecurringInvoice;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
/** /**
@ -77,7 +76,10 @@ class RecurringInvoiceFilters extends QueryFilters
if (in_array('completed', $status_parameters)) if (in_array('completed', $status_parameters))
$recurring_filters[] = RecurringInvoice::STATUS_COMPLETED; $recurring_filters[] = RecurringInvoice::STATUS_COMPLETED;
return $this->builder->whereIn('status_id', $recurring_filters); if(count($recurring_filters) >= 1)
return $this->builder->whereIn('status_id', $recurring_filters);
return $this->builder;
} }

View File

@ -11,7 +11,6 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
/** /**
@ -26,7 +25,7 @@ class RecurringQuoteFilters extends QueryFilters
* @return Builder * @return Builder
* @deprecated * @deprecated
*/ */
public function filter(string $filter = '') : Builder public function filter(string $filter = ''): Builder
{ {
if (strlen($filter) == 0) { if (strlen($filter) == 0) {
return $this->builder; return $this->builder;
@ -46,7 +45,7 @@ class RecurringQuoteFilters extends QueryFilters
* @param string sort formatted as column|asc * @param string sort formatted as column|asc
* @return Builder * @return Builder
*/ */
public function sort(string $sort) : Builder public function sort(string $sort): Builder
{ {
$sort_col = explode('|', $sort); $sort_col = explode('|', $sort);
@ -56,9 +55,9 @@ class RecurringQuoteFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
return $this->builder->company(); return $this->builder->company();
} }

View File

@ -11,11 +11,7 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use App\Models\Webhook;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
/** /**
* SubscriptionFilters. * SubscriptionFilters.
@ -29,7 +25,7 @@ class SubscriptionFilters extends QueryFilters
* @return Builder * @return Builder
* @deprecated * @deprecated
*/ */
public function filter(string $filter = '') : Builder public function filter(string $filter = ''): Builder
{ {
if (strlen($filter) == 0) { if (strlen($filter) == 0) {
return $this->builder; return $this->builder;
@ -46,7 +42,7 @@ class SubscriptionFilters extends QueryFilters
* @param string sort formatted as column|asc * @param string sort formatted as column|asc
* @return Builder * @return Builder
*/ */
public function sort(string $sort) : Builder public function sort(string $sort): Builder
{ {
$sort_col = explode('|', $sort); $sort_col = explode('|', $sort);
@ -56,9 +52,9 @@ class SubscriptionFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
return $this->builder->company(); return $this->builder->company();
} }

View File

@ -11,7 +11,6 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
/** /**
@ -66,9 +65,9 @@ class SystemLogFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
return $this->builder->company(); return $this->builder->company();
} }

View File

@ -11,7 +11,6 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
@ -29,7 +28,7 @@ class TaskFilters extends QueryFilters
* @return Builder * @return Builder
* @deprecated * @deprecated
*/ */
public function filter(string $filter = '') : Builder public function filter(string $filter = ''): Builder
{ {
if (strlen($filter) == 0) { if (strlen($filter) == 0) {
return $this->builder; return $this->builder;
@ -55,7 +54,7 @@ class TaskFilters extends QueryFilters
* @param string client_status The invoice status as seen by the client * @param string client_status The invoice status as seen by the client
* @return Builder * @return Builder
*/ */
public function client_status(string $value = '') :Builder public function client_status(string $value = ''): Builder
{ {
if (strlen($value) == 0) { if (strlen($value) == 0) {
return $this->builder; return $this->builder;
@ -90,7 +89,7 @@ class TaskFilters extends QueryFilters
* @param string sort formatted as column|asc * @param string sort formatted as column|asc
* @return Builder * @return Builder
*/ */
public function sort(string $sort) : Builder public function sort(string $sort): Builder
{ {
$sort_col = explode('|', $sort); $sort_col = explode('|', $sort);
@ -100,9 +99,9 @@ class TaskFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
return $this->builder->company(); return $this->builder->company();
} }

View File

@ -11,7 +11,6 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
/** /**
@ -26,7 +25,7 @@ class TaskStatusFilters extends QueryFilters
* @return Builder * @return Builder
* @deprecated * @deprecated
*/ */
public function filter(string $filter = '') : Builder public function filter(string $filter = ''): Builder
{ {
if (strlen($filter) == 0) { if (strlen($filter) == 0) {
return $this->builder; return $this->builder;
@ -53,9 +52,9 @@ class TaskStatusFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
return $this->builder->company(); return $this->builder->company();
} }

View File

@ -11,7 +11,6 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
/** /**
@ -53,9 +52,9 @@ class TaxRateFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
return $this->builder->company(); return $this->builder->company();
} }

View File

@ -11,10 +11,7 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
/** /**
* TokenFilters. * TokenFilters.
@ -55,9 +52,9 @@ class TokenFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
return $this->builder->company(); return $this->builder->company();
} }

View File

@ -11,7 +11,6 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
/** /**

View File

@ -11,11 +11,7 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use App\Models\Vendor;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
/** /**
* VendorFilters. * VendorFilters.
@ -29,7 +25,7 @@ class VendorFilters extends QueryFilters
* @return Builder * @return Builder
* @deprecated * @deprecated
*/ */
public function filter(string $filter = '') : Builder public function filter(string $filter = ''): Builder
{ {
if (strlen($filter) == 0) { if (strlen($filter) == 0) {
return $this->builder; return $this->builder;
@ -56,7 +52,7 @@ class VendorFilters extends QueryFilters
* @param string sort formatted as column|asc * @param string sort formatted as column|asc
* @return Builder * @return Builder
*/ */
public function sort(string $sort) : Builder public function sort(string $sort): Builder
{ {
$sort_col = explode('|', $sort); $sort_col = explode('|', $sort);
@ -66,12 +62,10 @@ class VendorFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
//return $this->builder->whereCompanyId(auth()->user()->company()->id);
return $this->builder->company(); return $this->builder->company();
} }
} }

View File

@ -11,11 +11,7 @@
namespace App\Filters; namespace App\Filters;
use App\Models\User;
use App\Models\Webhook;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
/** /**
* TokenFilters. * TokenFilters.
@ -29,14 +25,14 @@ class WebhookFilters extends QueryFilters
* @return Builder * @return Builder
* @deprecated * @deprecated
*/ */
public function filter(string $filter = '') : Builder public function filter(string $filter = ''): Builder
{ {
if (strlen($filter) == 0) { if (strlen($filter) == 0) {
return $this->builder; return $this->builder;
} }
return $this->builder->where(function ($query) use ($filter) { return $this->builder->where(function ($query) use ($filter) {
$query->where('webhooks.target_url', 'like', '%'.$filter.'%'); $query->where('target_url', 'like', '%'.$filter.'%');
}); });
} }
@ -46,7 +42,7 @@ class WebhookFilters extends QueryFilters
* @param string sort formatted as column|asc * @param string sort formatted as column|asc
* @return Builder * @return Builder
*/ */
public function sort(string $sort) : Builder public function sort(string $sort): Builder
{ {
$sort_col = explode('|', $sort); $sort_col = explode('|', $sort);
@ -56,9 +52,9 @@ class WebhookFilters extends QueryFilters
/** /**
* Filters the query by the users company ID. * Filters the query by the users company ID.
* *
* @return Illuminate\Database\Query\Builder * @return Builder
*/ */
public function entityFilter() public function entityFilter(): Builder
{ {
return $this->builder->company(); return $this->builder->company();
} }

View File

@ -48,6 +48,19 @@ class CompanyTokenApiTest extends TestCase
); );
} }
public function testCompanyTokenListFilter()
{
$this->withoutMiddleware(PasswordProtection::class);
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
'X-API-PASSWORD' => 'ALongAndBriliantPassword',
])->get('/api/v1/tokens?filter=xx');
$response->assertStatus(200);
}
public function testCompanyTokenList() public function testCompanyTokenList()
{ {
$this->withoutMiddleware(PasswordProtection::class); $this->withoutMiddleware(PasswordProtection::class);

View File

@ -42,6 +42,16 @@ class ProjectApiTest extends TestCase
Model::reguard(); Model::reguard();
} }
public function testProjectGetFilter()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/projects?filter=xx');
$response->assertStatus(200);
}
public function testProjectGet() public function testProjectGet()
{ {
$response = $this->withHeaders([ $response = $this->withHeaders([

View File

@ -50,6 +50,15 @@ class QuoteTest extends TestCase
); );
} }
public function testQuoteListApproved()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/quotes?client_status=approved');
$response->assertStatus(200);
}
public function testQuoteConvertToProject() public function testQuoteConvertToProject()

View File

@ -43,6 +43,16 @@ class RecurringExpenseApiTest extends TestCase
Model::reguard(); Model::reguard();
} }
public function testRecurringExpenseGetFiltered()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/recurring_expenses?filter=xx');
$response->assertStatus(200);
}
public function testRecurringExpenseGet() public function testRecurringExpenseGet()
{ {
$response = $this->withHeaders([ $response = $this->withHeaders([

View File

@ -52,6 +52,17 @@ class RecurringInvoiceTest extends TestCase
$this->makeTestData(); $this->makeTestData();
} }
public function testRecurringGetStatus()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/recurring_invoices?client_status=active')
->assertStatus(200);
}
public function testPostRecurringInvoiceWithPlaceholderVariables() public function testPostRecurringInvoiceWithPlaceholderVariables()
{ {
$line_items = []; $line_items = [];

View File

@ -47,6 +47,17 @@ class RecurringQuoteTest extends TestCase
$this->makeTestData(); $this->makeTestData();
} }
public function testRecurringQuoteListFilter()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/recurring_quotes?filter=xx');
$response->assertStatus(200);
}
public function testRecurringQuoteList() public function testRecurringQuoteList()
{ {
RecurringQuote::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); RecurringQuote::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]);

View File

@ -50,6 +50,17 @@ class SubscriptionApiTest extends TestCase
Model::reguard(); Model::reguard();
} }
public function testSubscriptionFilter()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/subscriptions?filter=xx')
->assertStatus(200);
}
public function testSubscriptionsGet() public function testSubscriptionsGet()
{ {
$product = Product::factory()->create([ $product = Product::factory()->create([

View File

@ -34,6 +34,18 @@ class SystemLogApiTest extends TestCase
$this->makeTestData(); $this->makeTestData();
} }
public function testFilters()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/system_logs?type_id=3')
->assertStatus(200);;
}
public function testSystemLogRoutes() public function testSystemLogRoutes()
{ {
$sl = [ $sl = [

View File

@ -44,6 +44,17 @@ class TaskApiTest extends TestCase
} }
public function testTaskListClientStatus()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/tasks?client_status=invoiced')
->assertStatus(200);
}
public function testTaskLockingGate() public function testTaskLockingGate()
{ {
$data = [ $data = [

View File

@ -41,6 +41,16 @@ class TaskStatusApiTest extends TestCase
Model::reguard(); Model::reguard();
} }
public function testTaskStatusGetFilter()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/task_statuses?filter=xx');
$response->assertStatus(200);
}
public function testTaskStatusPost() public function testTaskStatusPost()
{ {
$data = [ $data = [

View File

@ -42,6 +42,16 @@ class TaxRateApiTest extends TestCase
Model::reguard(); Model::reguard();
} }
public function testTaxRatesGetFilter()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/tax_rates?filter=gst');
$response->assertStatus(200);
}
public function testTaxRatePost() public function testTaxRatePost()
{ {
$rate_name = $this->faker->firstName(); $rate_name = $this->faker->firstName();

View File

@ -42,6 +42,16 @@ class VendorApiTest extends TestCase
Model::reguard(); Model::reguard();
} }
public function testVendorGetFilter()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/vendors?filter=xx');
$response->assertStatus(200);
}
public function testAddVendorToInvoice() public function testAddVendorToInvoice()
{ {
$data = [ $data = [

View File

@ -45,6 +45,16 @@ class WebhookAPITest extends TestCase
$this->withoutExceptionHandling(); $this->withoutExceptionHandling();
} }
public function testWebhookGetFilter()
{
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->get('/api/v1/webhooks?filter=xx');
$response->assertStatus(200);
}
public function testWebhookGetRoute() public function testWebhookGetRoute()
{ {
$response = $this->withHeaders([ $response = $this->withHeaders([