From 4df646f93bee3f2be45c059c46cfbf0b9cea4928 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 20 Dec 2020 12:21:40 +1100 Subject: [PATCH] Fixes for tests --- .../Requests/Invoice/StoreInvoiceRequest.php | 1 + app/Jobs/Import/CSVImport.php | 8 +++ tests/Feature/Import/ImportCsvTest.php | 51 +++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php index b7e77346151c..7f66c174aab7 100644 --- a/app/Http/Requests/Invoice/StoreInvoiceRequest.php +++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php @@ -17,6 +17,7 @@ use App\Http\ValidationRules\Project\ValidProjectForClient; use App\Models\Invoice; use App\Utils\Traits\CleanLineItems; use App\Utils\Traits\MakesHash; +use Illuminate\Validation\Rule; class StoreInvoiceRequest extends Request { diff --git a/app/Jobs/Import/CSVImport.php b/app/Jobs/Import/CSVImport.php index a98d2bc1ef9b..96d5d53c58ad 100644 --- a/app/Jobs/Import/CSVImport.php +++ b/app/Jobs/Import/CSVImport.php @@ -171,8 +171,14 @@ class CSVImport implements ShouldQueue } $unique_array_filter = array_unique($records[$invoice_number_key]); + + info(print_r($unique_array_filter,1)); + $unique_invoices = array_intersect_key( $records, $unique_array_filter ); + info(print_r($unique_invoices,1)); + + foreach($unique_invoices as $unique) { @@ -190,6 +196,8 @@ class CSVImport implements ShouldQueue } + info(print_r($invoices,1)); + $this->processInvoice($invoices, $invoice); } diff --git a/tests/Feature/Import/ImportCsvTest.php b/tests/Feature/Import/ImportCsvTest.php index 1ab264fbfc84..4fe825886f0c 100644 --- a/tests/Feature/Import/ImportCsvTest.php +++ b/tests/Feature/Import/ImportCsvTest.php @@ -12,6 +12,7 @@ namespace Tests\Feature\Import; use App\Jobs\Import\CSVImport; use App\Models\Client; +use App\Models\Invoice; use App\Models\Product; use App\Utils\Traits\MakesHash; use Illuminate\Routing\Middleware\ThrottleRequests; @@ -53,6 +54,56 @@ class ImportCsvTest extends TestCase $this->assertTrue(is_array($this->getCsvData($csv))); } + public function testInvoiceCsvImport() + { + $csv = file_get_contents(base_path().'/tests/Feature/Import/invoice.csv'); + $hash = Str::random(32); + $column_map = [ + 0 => 'invoice.number', + 4 => 'invoice.client_id', + 7 => 'invoice.date', + 8 => 'invoice.due_date', + 9 => 'invoice.terms', + 10 => 'invoice.public_notes', + 11 => 'invoice.is_sent', + 12 => 'invoice.private_notes', + 13 => 'invoice.uses_inclusive_taxes', + 14 => 'invoice.tax_name1', + 15 => 'invoice.tax_rate1', + 16 => 'invoice.tax_name2', + 17 => 'invoice.tax_rate2', + 18 => 'invoice.tax_name3', + 19 => 'invoice.tax_rate3', + 21 => 'invoice.footer', + 22 => 'invoice.partial', + 23 => 'invoice.partial_due_date', + 33 => 'payment.date', + 34 => 'payment.amount', + 35 => 'payment.transaction_reference', + 36 => 'item.quantity', + 37 => 'item.cost', + 38 => 'item.product_key', + 39 => 'item.notes', + 40 => 'item.discount', + 41 => 'item.is_amount_discount', + ]; + + $data = [ + 'hash' => $hash, + 'column_map' => $column_map, + 'skip_header' => true, + 'entity_type'=> 'invoice', + ]; + + $pre_import = Invoice::count(); + + Cache::put($hash, base64_encode($csv), 360); + + CSVImport::dispatchNow($data, $this->company); + + $this->assertGreaterThan($pre_import, Client::count()); + } + public function testClientCsvImport() {