mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Tests for filtering invoice item reports
This commit is contained in:
parent
795485a3c3
commit
551e4cad27
@ -72,10 +72,27 @@ class InvoiceItemExport extends BaseExport
|
|||||||
|
|
||||||
$query = $this->addDateRange($query);
|
$query = $this->addDateRange($query);
|
||||||
|
|
||||||
|
$query = $this->applyFilters($query);
|
||||||
|
|
||||||
return $query;
|
return $query;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function applyFilters(Builder $query): Builder
|
||||||
|
{
|
||||||
|
|
||||||
|
if(isset($this->input['product_key'])) {
|
||||||
|
|
||||||
|
$products = explode(",", $this->input['product_key']);
|
||||||
|
|
||||||
|
foreach($products as $product)
|
||||||
|
$query->orWhereJsonContains('line_items', ['product_key' => $product]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
public function returnJson()
|
public function returnJson()
|
||||||
{
|
{
|
||||||
$query = $this->init();
|
$query = $this->init();
|
||||||
|
@ -11,26 +11,27 @@
|
|||||||
|
|
||||||
namespace Tests\Feature\Export;
|
namespace Tests\Feature\Export;
|
||||||
|
|
||||||
use App\DataMapper\CompanySettings;
|
use Tests\TestCase;
|
||||||
use App\Export\CSV\PaymentExport;
|
use App\Models\User;
|
||||||
use App\Export\CSV\ProductExport;
|
|
||||||
use App\Export\CSV\TaskExport;
|
|
||||||
use App\Export\CSV\VendorExport;
|
|
||||||
use App\Factory\CompanyUserFactory;
|
|
||||||
use App\Models\Account;
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use App\Models\ClientContact;
|
|
||||||
use App\Models\Company;
|
|
||||||
use App\Models\CompanyToken;
|
|
||||||
use App\Models\Credit;
|
use App\Models\Credit;
|
||||||
|
use League\Csv\Reader;
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Models\Company;
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use App\Models\User;
|
use App\Models\CompanyToken;
|
||||||
|
use App\Models\ClientContact;
|
||||||
|
use App\Export\CSV\TaskExport;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
use Illuminate\Routing\Middleware\ThrottleRequests;
|
use App\Export\CSV\VendorExport;
|
||||||
|
use App\Export\CSV\PaymentExport;
|
||||||
|
use App\Export\CSV\ProductExport;
|
||||||
|
use App\DataMapper\CompanySettings;
|
||||||
|
use App\Factory\CompanyUserFactory;
|
||||||
|
use App\Factory\InvoiceItemFactory;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use League\Csv\Reader;
|
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||||
use Tests\TestCase;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
@ -290,6 +291,91 @@ class ReportCsvGenerationTest extends TestCase
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testProductJsonFiltering()
|
||||||
|
{
|
||||||
|
|
||||||
|
$query = Invoice::query();
|
||||||
|
|
||||||
|
$products = explode(",", "clown,joker,batman");
|
||||||
|
|
||||||
|
foreach($products as $product) {
|
||||||
|
$query->orWhereJsonContains('line_items', ['product_key' => $product]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->assertEquals(0, $query->count());
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testProductKeyFilterQueries()
|
||||||
|
{
|
||||||
|
|
||||||
|
$item = InvoiceItemFactory::create();
|
||||||
|
$item->product_key = 'haloumi';
|
||||||
|
|
||||||
|
$line_items = [];
|
||||||
|
|
||||||
|
$line_items[] = $item;
|
||||||
|
$q = Invoice::whereJsonContains('line_items', ['product_key' => 'haloumi']);
|
||||||
|
|
||||||
|
$this->assertEquals(0, $q->count());
|
||||||
|
|
||||||
|
Invoice::factory()->create(
|
||||||
|
[
|
||||||
|
'company_id' => $this->company->id,
|
||||||
|
'user_id' => $this->user->id,
|
||||||
|
'client_id' => $this->client->id,
|
||||||
|
'line_items' => $line_items
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals(1, $q->count());
|
||||||
|
|
||||||
|
$q->forceDelete();
|
||||||
|
|
||||||
|
Invoice::factory()->create(
|
||||||
|
[
|
||||||
|
'company_id' => $this->company->id,
|
||||||
|
'user_id' => $this->user->id,
|
||||||
|
'client_id' => $this->client->id,
|
||||||
|
'line_items' => $line_items
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$item = InvoiceItemFactory::create();
|
||||||
|
$item->product_key = 'bob the builder';
|
||||||
|
|
||||||
|
$line_items = [];
|
||||||
|
|
||||||
|
$line_items[] = $item;
|
||||||
|
|
||||||
|
$q = Invoice::whereJsonContains('line_items', ['product_key' => 'bob the builder']);
|
||||||
|
|
||||||
|
$this->assertEquals(0, $q->count());
|
||||||
|
|
||||||
|
Invoice::factory()->create(
|
||||||
|
[
|
||||||
|
'company_id' => $this->company->id,
|
||||||
|
'user_id' => $this->user->id,
|
||||||
|
'client_id' => $this->client->id,
|
||||||
|
'line_items' => $line_items
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals(1, $q->count());
|
||||||
|
|
||||||
|
$q = Invoice::whereJsonContains('line_items', ['product_key' => 'Bob the builder']);
|
||||||
|
$this->assertEquals(0, $q->count());
|
||||||
|
|
||||||
|
$q = Invoice::whereJsonContains('line_items', ['product_key' => 'bob']);
|
||||||
|
$this->assertEquals(0, $q->count());
|
||||||
|
|
||||||
|
$q->forceDelete();
|
||||||
|
|
||||||
|
Invoice::withTrashed()->cursor()->each(function ($i){ $i->forceDelete();});
|
||||||
|
}
|
||||||
|
|
||||||
public function testVendorCsvGeneration()
|
public function testVendorCsvGeneration()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user