From 35495a649583d8b6df4f35b82fa0986c3cc53c3e Mon Sep 17 00:00:00 2001 From: Pavel Mironchik Date: Fri, 29 Oct 2021 20:52:39 +0600 Subject: [PATCH 1/2] Fix a duplication of the extension when uploading files. --- app/Traits/Uploads.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Traits/Uploads.php b/app/Traits/Uploads.php index 06d2c7107..5a261aef0 100644 --- a/app/Traits/Uploads.php +++ b/app/Traits/Uploads.php @@ -142,7 +142,7 @@ trait Uploads $file_name = Str::limit($file_name, 110); } - return $file_name . '.' . $this->extension($file); + return $file_name; } /** From f4203c05eded9404124698e0a4cfc62136aaef9f Mon Sep 17 00:00:00 2001 From: Pavel Mironchik Date: Fri, 29 Oct 2021 21:13:20 +0600 Subject: [PATCH 2/2] Add tests. --- tests/Feature/Purchases/BillsTest.php | 43 +++++++++++++++++++++++++++ tests/Feature/Sales/InvoicesTest.php | 43 +++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) diff --git a/tests/Feature/Purchases/BillsTest.php b/tests/Feature/Purchases/BillsTest.php index 2eabf3044..279c58320 100644 --- a/tests/Feature/Purchases/BillsTest.php +++ b/tests/Feature/Purchases/BillsTest.php @@ -6,7 +6,9 @@ use App\Exports\Purchases\Bills as Export; use App\Jobs\Document\CreateDocument; use App\Models\Document\Document; use Illuminate\Http\UploadedFile; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\File; +use Illuminate\Support\Facades\Storage; use Tests\Feature\FeatureTestCase; class BillsTest extends FeatureTestCase @@ -54,6 +56,47 @@ class BillsTest extends FeatureTestCase ]); } + public function testItShouldCreateBillWithAttachment() + { + Storage::fake('uploads'); + Carbon::setTestNow(Carbon::create(2021, 05, 15)); + + $file = new UploadedFile( + base_path('public/img/empty_pages/bills.png'), + 'bills.png', + 'image/png', + null, + true + ); + + $request = $this->getRequest(); + $request['attachment'] = [$file]; + + $this->loginAs() + ->post(route('bills.store'), $request) + ->assertStatus(200); + + $this->assertFlashLevel('success'); + + Storage::disk('uploads')->assertExists('2021/05/15/1/bills/bills.png'); + + $this->assertDatabaseHas('documents', [ + 'document_number' => $request['document_number'] + ]); + $this->assertDatabaseHas('mediables', [ + 'mediable_type' => Document::class, + 'tag' => 'attachment', + ]); + $this->assertDatabaseHas('media', [ + 'disk' => 'uploads', + 'directory' => '2021/05/15/1/bills', + 'filename' => 'bills', + 'extension' => 'png', + 'mime_type' => 'image/png', + 'aggregate_type' => 'image', + ]); + } + public function testItShouldCreateBillWithRecurring() { $request = $this->getRequest(true); diff --git a/tests/Feature/Sales/InvoicesTest.php b/tests/Feature/Sales/InvoicesTest.php index 7a4e64731..c5a1a439d 100644 --- a/tests/Feature/Sales/InvoicesTest.php +++ b/tests/Feature/Sales/InvoicesTest.php @@ -6,7 +6,9 @@ use App\Exports\Sales\Invoices as Export; use App\Jobs\Document\CreateDocument; use App\Models\Document\Document; use Illuminate\Http\UploadedFile; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\File; +use Illuminate\Support\Facades\Storage; use Tests\Feature\FeatureTestCase; class InvoicesTest extends FeatureTestCase @@ -54,6 +56,47 @@ class InvoicesTest extends FeatureTestCase ]); } + public function testItShouldCreateInvoiceWithAttachment() + { + Storage::fake('uploads'); + Carbon::setTestNow(Carbon::create(2021, 05, 15)); + + $file = new UploadedFile( + base_path('public/img/empty_pages/invoices.png'), + 'invoices.png', + 'image/png', + null, + true + ); + + $request = $this->getRequest(); + $request['attachment'] = [$file]; + + $this->loginAs() + ->post(route('invoices.store'), $request) + ->assertStatus(200); + + $this->assertFlashLevel('success'); + + Storage::disk('uploads')->assertExists('2021/05/15/1/invoices/invoices.png'); + + $this->assertDatabaseHas('documents', [ + 'document_number' => $request['document_number'] + ]); + $this->assertDatabaseHas('mediables', [ + 'mediable_type' => Document::class, + 'tag' => 'attachment', + ]); + $this->assertDatabaseHas('media', [ + 'disk' => 'uploads', + 'directory' => '2021/05/15/1/invoices', + 'filename' => 'invoices', + 'extension' => 'png', + 'mime_type' => 'image/png', + 'aggregate_type' => 'image', + ]); + } + public function testItShouldDuplicateInvoice() { $invoice = $this->dispatch(new CreateDocument($this->getRequest()));