diff --git a/app/Filters/ExpenseFilters.php b/app/Filters/ExpenseFilters.php index cc04fb6bd..5eb7b8c43 100644 --- a/app/Filters/ExpenseFilters.php +++ b/app/Filters/ExpenseFilters.php @@ -32,11 +32,11 @@ class ExpenseFilters extends QueryFilters } return $this->builder->where(function ($query) use ($filter) { - $query->where('expenses.public_notes', 'like', '%'.$filter.'%') - ->orWhere('expenses.custom_value1', 'like', '%'.$filter.'%') - ->orWhere('expenses.custom_value2', 'like', '%'.$filter.'%') - ->orWhere('expenses.custom_value3', 'like', '%'.$filter.'%') - ->orWhere('expenses.custom_value4', 'like', '%'.$filter.'%'); + $query->where('public_notes', 'like', '%'.$filter.'%') + ->orWhere('custom_value1', 'like', '%'.$filter.'%') + ->orWhere('custom_value2', 'like', '%'.$filter.'%') + ->orWhere('custom_value3', 'like', '%'.$filter.'%') + ->orWhere('custom_value4', 'like', '%'.$filter.'%'); }); } diff --git a/app/Filters/ProjectFilters.php b/app/Filters/ProjectFilters.php index e489488b0..030a7be21 100644 --- a/app/Filters/ProjectFilters.php +++ b/app/Filters/ProjectFilters.php @@ -11,11 +11,7 @@ namespace App\Filters; -use App\Models\Project; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Gate; /** * ProjectFilters. @@ -52,7 +48,8 @@ class ProjectFilters extends QueryFilters { $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]); } /** diff --git a/app/Filters/PurchaseOrderFilters.php b/app/Filters/PurchaseOrderFilters.php index adb019ded..5c21080da 100644 --- a/app/Filters/PurchaseOrderFilters.php +++ b/app/Filters/PurchaseOrderFilters.php @@ -12,7 +12,6 @@ namespace App\Filters; use App\Models\PurchaseOrder; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; class PurchaseOrderFilters extends QueryFilters diff --git a/app/Filters/RecurringExpenseFilters.php b/app/Filters/RecurringExpenseFilters.php index bf82faccc..f7a087272 100644 --- a/app/Filters/RecurringExpenseFilters.php +++ b/app/Filters/RecurringExpenseFilters.php @@ -11,11 +11,7 @@ namespace App\Filters; -use App\Models\RecurringExpense; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Gate; /** * RecurringExpenseFilters. @@ -29,19 +25,18 @@ class RecurringExpenseFilters extends QueryFilters * @return Builder * @deprecated */ - public function filter(string $filter = '') : Builder + public function filter(string $filter = ''): Builder { if (strlen($filter) == 0) { return $this->builder; } - return $this->builder->where(function ($query) use ($filter) { - $query->where('recurring_expenses.name', 'like', '%'.$filter.'%') - ->orWhere('recurring_expenses.id_number', 'like', '%'.$filter.'%') - ->orWhere('recurring_expenses.custom_value1', 'like', '%'.$filter.'%') - ->orWhere('recurring_expenses.custom_value2', 'like', '%'.$filter.'%') - ->orWhere('recurring_expenses.custom_value3', 'like', '%'.$filter.'%') - ->orWhere('recurring_expenses.custom_value4', 'like', '%'.$filter.'%'); + return $this->builder->where(function ($query) use ($filter) { + $query->where('public_notes', 'like', '%'.$filter.'%') + ->orWhere('custom_value1', 'like', '%'.$filter.'%') + ->orWhere('custom_value2', 'like', '%'.$filter.'%') + ->orWhere('custom_value3', 'like', '%'.$filter.'%') + ->orWhere('custom_value4', 'like', '%'.$filter.'%'); }); } @@ -51,7 +46,7 @@ class RecurringExpenseFilters extends QueryFilters * @param string sort formatted as column|asc * @return Builder */ - public function sort(string $sort) : Builder + public function sort(string $sort): Builder { $sort_col = explode('|', $sort); diff --git a/app/Filters/RecurringInvoiceFilters.php b/app/Filters/RecurringInvoiceFilters.php index dfd0ee60e..88a0f4ee3 100644 --- a/app/Filters/RecurringInvoiceFilters.php +++ b/app/Filters/RecurringInvoiceFilters.php @@ -12,7 +12,6 @@ namespace App\Filters; use App\Models\RecurringInvoice; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; /** @@ -77,7 +76,10 @@ class RecurringInvoiceFilters extends QueryFilters if (in_array('completed', $status_parameters)) $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; } diff --git a/app/Filters/RecurringQuoteFilters.php b/app/Filters/RecurringQuoteFilters.php index 3a1879e9e..1229ee4c5 100644 --- a/app/Filters/RecurringQuoteFilters.php +++ b/app/Filters/RecurringQuoteFilters.php @@ -11,7 +11,6 @@ namespace App\Filters; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; /** @@ -26,7 +25,7 @@ class RecurringQuoteFilters extends QueryFilters * @return Builder * @deprecated */ - public function filter(string $filter = '') : Builder + public function filter(string $filter = ''): Builder { if (strlen($filter) == 0) { return $this->builder; @@ -46,7 +45,7 @@ class RecurringQuoteFilters extends QueryFilters * @param string sort formatted as column|asc * @return Builder */ - public function sort(string $sort) : Builder + public function sort(string $sort): Builder { $sort_col = explode('|', $sort); @@ -56,9 +55,9 @@ class RecurringQuoteFilters extends QueryFilters /** * 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(); } diff --git a/app/Filters/SubscriptionFilters.php b/app/Filters/SubscriptionFilters.php index 4ae2e1aec..7c3775291 100644 --- a/app/Filters/SubscriptionFilters.php +++ b/app/Filters/SubscriptionFilters.php @@ -11,11 +11,7 @@ namespace App\Filters; -use App\Models\User; -use App\Models\Webhook; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Gate; /** * SubscriptionFilters. @@ -29,7 +25,7 @@ class SubscriptionFilters extends QueryFilters * @return Builder * @deprecated */ - public function filter(string $filter = '') : Builder + public function filter(string $filter = ''): Builder { if (strlen($filter) == 0) { return $this->builder; @@ -46,7 +42,7 @@ class SubscriptionFilters extends QueryFilters * @param string sort formatted as column|asc * @return Builder */ - public function sort(string $sort) : Builder + public function sort(string $sort): Builder { $sort_col = explode('|', $sort); @@ -56,9 +52,9 @@ class SubscriptionFilters extends QueryFilters /** * 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(); } diff --git a/app/Filters/SystemLogFilters.php b/app/Filters/SystemLogFilters.php index 126c81209..a7200d6b0 100644 --- a/app/Filters/SystemLogFilters.php +++ b/app/Filters/SystemLogFilters.php @@ -11,7 +11,6 @@ namespace App\Filters; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; /** @@ -66,9 +65,9 @@ class SystemLogFilters extends QueryFilters /** * 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(); } diff --git a/app/Filters/TaskFilters.php b/app/Filters/TaskFilters.php index f4a0fb519..43e77faff 100644 --- a/app/Filters/TaskFilters.php +++ b/app/Filters/TaskFilters.php @@ -11,7 +11,6 @@ namespace App\Filters; -use App\Models\User; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Builder; @@ -29,7 +28,7 @@ class TaskFilters extends QueryFilters * @return Builder * @deprecated */ - public function filter(string $filter = '') : Builder + public function filter(string $filter = ''): Builder { if (strlen($filter) == 0) { return $this->builder; @@ -55,7 +54,7 @@ class TaskFilters extends QueryFilters * @param string client_status The invoice status as seen by the client * @return Builder */ - public function client_status(string $value = '') :Builder + public function client_status(string $value = ''): Builder { if (strlen($value) == 0) { return $this->builder; @@ -90,7 +89,7 @@ class TaskFilters extends QueryFilters * @param string sort formatted as column|asc * @return Builder */ - public function sort(string $sort) : Builder + public function sort(string $sort): Builder { $sort_col = explode('|', $sort); @@ -100,9 +99,9 @@ class TaskFilters extends QueryFilters /** * 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(); } diff --git a/app/Filters/TaskStatusFilters.php b/app/Filters/TaskStatusFilters.php index d197b7646..61ecf95b7 100644 --- a/app/Filters/TaskStatusFilters.php +++ b/app/Filters/TaskStatusFilters.php @@ -11,7 +11,6 @@ namespace App\Filters; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; /** @@ -26,7 +25,7 @@ class TaskStatusFilters extends QueryFilters * @return Builder * @deprecated */ - public function filter(string $filter = '') : Builder + public function filter(string $filter = ''): Builder { if (strlen($filter) == 0) { return $this->builder; @@ -53,9 +52,9 @@ class TaskStatusFilters extends QueryFilters /** * 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(); } diff --git a/app/Filters/TaxRateFilters.php b/app/Filters/TaxRateFilters.php index a161ccec7..1e838b779 100644 --- a/app/Filters/TaxRateFilters.php +++ b/app/Filters/TaxRateFilters.php @@ -11,7 +11,6 @@ namespace App\Filters; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; /** @@ -53,9 +52,9 @@ class TaxRateFilters extends QueryFilters /** * 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(); } diff --git a/app/Filters/TokenFilters.php b/app/Filters/TokenFilters.php index ac9507fb4..d4cd948bc 100644 --- a/app/Filters/TokenFilters.php +++ b/app/Filters/TokenFilters.php @@ -11,10 +11,7 @@ namespace App\Filters; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Gate; /** * TokenFilters. @@ -55,9 +52,9 @@ class TokenFilters extends QueryFilters /** * 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(); } diff --git a/app/Filters/UserFilters.php b/app/Filters/UserFilters.php index 775103f1a..986748955 100644 --- a/app/Filters/UserFilters.php +++ b/app/Filters/UserFilters.php @@ -11,7 +11,6 @@ namespace App\Filters; -use App\Models\User; use Illuminate\Database\Eloquent\Builder; /** diff --git a/app/Filters/VendorFilters.php b/app/Filters/VendorFilters.php index 914025ac0..f723893ce 100644 --- a/app/Filters/VendorFilters.php +++ b/app/Filters/VendorFilters.php @@ -11,11 +11,7 @@ namespace App\Filters; -use App\Models\User; -use App\Models\Vendor; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Gate; /** * VendorFilters. @@ -29,7 +25,7 @@ class VendorFilters extends QueryFilters * @return Builder * @deprecated */ - public function filter(string $filter = '') : Builder + public function filter(string $filter = ''): Builder { if (strlen($filter) == 0) { return $this->builder; @@ -56,7 +52,7 @@ class VendorFilters extends QueryFilters * @param string sort formatted as column|asc * @return Builder */ - public function sort(string $sort) : Builder + public function sort(string $sort): Builder { $sort_col = explode('|', $sort); @@ -66,12 +62,10 @@ class VendorFilters extends QueryFilters /** * 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(); } } diff --git a/app/Filters/WebhookFilters.php b/app/Filters/WebhookFilters.php index 056b1adf4..0975efbb5 100644 --- a/app/Filters/WebhookFilters.php +++ b/app/Filters/WebhookFilters.php @@ -11,11 +11,7 @@ namespace App\Filters; -use App\Models\User; -use App\Models\Webhook; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Gate; /** * TokenFilters. @@ -29,14 +25,14 @@ class WebhookFilters extends QueryFilters * @return Builder * @deprecated */ - public function filter(string $filter = '') : Builder + public function filter(string $filter = ''): Builder { if (strlen($filter) == 0) { return $this->builder; } 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 * @return Builder */ - public function sort(string $sort) : Builder + public function sort(string $sort): Builder { $sort_col = explode('|', $sort); @@ -56,9 +52,9 @@ class WebhookFilters extends QueryFilters /** * 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(); } diff --git a/tests/Feature/CompanyTokenApiTest.php b/tests/Feature/CompanyTokenApiTest.php index 4e5c67176..bb31a1f9f 100644 --- a/tests/Feature/CompanyTokenApiTest.php +++ b/tests/Feature/CompanyTokenApiTest.php @@ -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() { $this->withoutMiddleware(PasswordProtection::class); diff --git a/tests/Feature/ProjectApiTest.php b/tests/Feature/ProjectApiTest.php index b4d1b237e..f65abaae0 100644 --- a/tests/Feature/ProjectApiTest.php +++ b/tests/Feature/ProjectApiTest.php @@ -42,6 +42,16 @@ class ProjectApiTest extends TestCase 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() { $response = $this->withHeaders([ diff --git a/tests/Feature/QuoteTest.php b/tests/Feature/QuoteTest.php index a6072ade4..0477a4ce0 100644 --- a/tests/Feature/QuoteTest.php +++ b/tests/Feature/QuoteTest.php @@ -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() diff --git a/tests/Feature/RecurringExpenseApiTest.php b/tests/Feature/RecurringExpenseApiTest.php index 77ff2cc38..e0848ba49 100644 --- a/tests/Feature/RecurringExpenseApiTest.php +++ b/tests/Feature/RecurringExpenseApiTest.php @@ -43,6 +43,16 @@ class RecurringExpenseApiTest extends TestCase 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() { $response = $this->withHeaders([ diff --git a/tests/Feature/RecurringInvoiceTest.php b/tests/Feature/RecurringInvoiceTest.php index 61f99b0cd..2bb8cca76 100644 --- a/tests/Feature/RecurringInvoiceTest.php +++ b/tests/Feature/RecurringInvoiceTest.php @@ -52,6 +52,17 @@ class RecurringInvoiceTest extends TestCase $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() { $line_items = []; diff --git a/tests/Feature/RecurringQuoteTest.php b/tests/Feature/RecurringQuoteTest.php index 5c3d98718..3051f0466 100644 --- a/tests/Feature/RecurringQuoteTest.php +++ b/tests/Feature/RecurringQuoteTest.php @@ -47,6 +47,17 @@ class RecurringQuoteTest extends TestCase $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() { RecurringQuote::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); diff --git a/tests/Feature/SubscriptionApiTest.php b/tests/Feature/SubscriptionApiTest.php index 86360680e..46cf797c2 100644 --- a/tests/Feature/SubscriptionApiTest.php +++ b/tests/Feature/SubscriptionApiTest.php @@ -50,6 +50,17 @@ class SubscriptionApiTest extends TestCase 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() { $product = Product::factory()->create([ diff --git a/tests/Feature/SystemLogApiTest.php b/tests/Feature/SystemLogApiTest.php index e91970af0..56985c502 100644 --- a/tests/Feature/SystemLogApiTest.php +++ b/tests/Feature/SystemLogApiTest.php @@ -34,6 +34,18 @@ class SystemLogApiTest extends TestCase $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() { $sl = [ diff --git a/tests/Feature/TaskApiTest.php b/tests/Feature/TaskApiTest.php index 0f4c02523..031966083 100644 --- a/tests/Feature/TaskApiTest.php +++ b/tests/Feature/TaskApiTest.php @@ -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() { $data = [ diff --git a/tests/Feature/TaskStatusApiTest.php b/tests/Feature/TaskStatusApiTest.php index 2d0e4c83c..4ce969746 100644 --- a/tests/Feature/TaskStatusApiTest.php +++ b/tests/Feature/TaskStatusApiTest.php @@ -41,6 +41,16 @@ class TaskStatusApiTest extends TestCase 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() { $data = [ diff --git a/tests/Feature/TaxRateApiTest.php b/tests/Feature/TaxRateApiTest.php index cac0c642b..09b39e4e0 100644 --- a/tests/Feature/TaxRateApiTest.php +++ b/tests/Feature/TaxRateApiTest.php @@ -42,6 +42,16 @@ class TaxRateApiTest extends TestCase 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() { $rate_name = $this->faker->firstName(); diff --git a/tests/Feature/VendorApiTest.php b/tests/Feature/VendorApiTest.php index 38f8b1ccf..79a8800f0 100644 --- a/tests/Feature/VendorApiTest.php +++ b/tests/Feature/VendorApiTest.php @@ -42,6 +42,16 @@ class VendorApiTest extends TestCase 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() { $data = [ diff --git a/tests/Feature/WebhookAPITest.php b/tests/Feature/WebhookAPITest.php index a94e194aa..69c640a6a 100644 --- a/tests/Feature/WebhookAPITest.php +++ b/tests/Feature/WebhookAPITest.php @@ -45,6 +45,16 @@ class WebhookAPITest extends TestCase $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() { $response = $this->withHeaders([