id)); $this->assertEquals($helper->getAttachmentLocation($attachment), $path); } /** * Test invalid mime thing * * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::__construct * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::saveAttachmentsForModel * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::processFile * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::validateUpload * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::validMime * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::hasFile * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::getMessages * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::getErrors * */ public function testInvalidMime() { $journal = TransactionJournal::first(); $helper = new AttachmentHelper; $path = resource_path('stubs/csv.csv'); $file = new UploadedFile($path, 'csv.csv', 'text/plain', filesize($path), null, true); $helper->saveAttachmentsForModel($journal, [$file]); $errors = $helper->getErrors(); $messages = $helper->getMessages(); $this->assertCount(1, $errors); $this->assertCount(0, $messages); $this->assertEquals('File "csv.csv" is of type "text/plain" which is not accepted as a new upload.', $errors->first()); } /** * Test valid file upload. * * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::__construct * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::saveAttachmentsForModel * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::processFile * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::validateUpload * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::validMime * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::hasFile * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::getMessages * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::getErrors * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::getAttachments * */ public function testSave() { Storage::fake('upload'); $journal = TransactionJournal::first(); $helper = new AttachmentHelper; $path = public_path('apple-touch-icon.png'); $file = new UploadedFile($path, 'apple-touch-icon.png', 'image/png', filesize($path), null, true); $helper->saveAttachmentsForModel($journal, [$file]); $errors = $helper->getErrors(); $messages = $helper->getMessages(); $attachments = $helper->getAttachments(); $this->assertCount(0, $errors); $this->assertCount(1, $messages); $this->assertEquals('Succesfully uploaded file "apple-touch-icon.png".', $messages->first()); // Assert the file was stored... Storage::disk('upload')->assertExists(sprintf('at-%d.data', $attachments->first()->id)); } /** * Test double file upload. Needs to be after testSave. * * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::__construct * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::saveAttachmentsForModel * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::processFile * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::validateUpload * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::validMime * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::hasFile * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::getMessages * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::getErrors * @covers \FireflyIII\Helpers\Attachments\AttachmentHelper::getAttachments * */ public function testSaveSecond() { $journal = TransactionJournal::first(); $helper = new AttachmentHelper; $path = public_path('apple-touch-icon.png'); $file = new UploadedFile($path, 'apple-touch-icon.png', 'image/png', filesize($path), null, true); $helper->saveAttachmentsForModel($journal, [$file]); $errors = $helper->getErrors(); $messages = $helper->getMessages(); $this->assertCount(1, $errors); $this->assertCount(0, $messages); $this->assertEquals('Uploaded file "apple-touch-icon.png" is already attached to this object.', $errors->first()); } }