Skip to content

Commit c8f4073

Browse files
committed
update tests
1 parent 3f3035c commit c8f4073

File tree

6 files changed

+96
-56
lines changed

6 files changed

+96
-56
lines changed

tests/FileStorageTest.php

Lines changed: 13 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -3,62 +3,26 @@
33

44
namespace Imahmood\FileStorage\Tests;
55

6-
use Illuminate\Http\Testing\File;
7-
use Illuminate\Http\UploadedFile;
8-
use Illuminate\Support\Facades\Auth;
9-
use Illuminate\Support\Facades\Queue;
10-
use Illuminate\Support\Facades\Storage;
11-
use Imahmood\FileStorage\Config\ConfigurationFactory;
126
use Imahmood\FileStorage\FileStorage;
13-
use Imahmood\FileStorage\Jobs\GeneratePreview;
14-
use Imahmood\FileStorage\Jobs\OptimizeImage;
157
use Imahmood\FileStorage\Models\Media;
168
use Imahmood\FileStorage\Tests\TestSupport\Enums\TestDocumentType;
179
use Imahmood\FileStorage\Tests\TestSupport\Models\TestUserModel;
10+
use Imahmood\FileStorage\Tests\TestSupport\UploadedFile;
1811

1912
class FileStorageTest extends TestCase
2013
{
21-
private FileStorage $fileStorage;
22-
23-
private File $testFile;
24-
25-
protected function setUp(): void
26-
{
27-
parent::setUp();
28-
29-
$config = ConfigurationFactory::create([
30-
'disk' => 'media',
31-
'queue' => 'media',
32-
'max_dimension' => 2000,
33-
'preview_dimension' => 300,
34-
'generate_preview' => true,
35-
]);
36-
37-
$this->fileStorage = new FileStorage($config);
38-
39-
$path = __DIR__.'/TestSupport/assets/avatar.JPG';
40-
$this->testFile = UploadedFile::fake()->create($path, file_get_contents($path));
41-
42-
Queue::fake();
43-
Storage::fake('media');
44-
Auth::partialMock()->shouldReceive('id')->zeroOrMoreTimes()->andReturn(1);
45-
}
46-
4714
public function testCreateMedia(): void
4815
{
49-
$media = $this->fileStorage->create(
16+
$fileStorage = app(FileStorage::class);
17+
$media = $fileStorage->create(
5018
type: TestDocumentType::AVATAR,
5119
relatedTo: new TestUserModel(),
52-
uploadedFile: $this->testFile,
20+
uploadedFile: UploadedFile::fake('jpg'),
5321
);
5422

5523
$this->assertNull($media->preview);
5624
$this->assertSame($media->type, TestDocumentType::AVATAR->value);
57-
$this->assertSame('jpg', pathinfo($media->file_name, PATHINFO_EXTENSION));
58-
59-
Queue::assertPushedWithChain(OptimizeImage::class, [
60-
GeneratePreview::class,
61-
]);
25+
$this->assertStringEndsWith('.jpg', $media->file_name);
6226
}
6327

6428
public function testUpdateMedia(): void
@@ -71,30 +35,28 @@ public function testUpdateMedia(): void
7135
'type' => TestDocumentType::AVATAR,
7236
]);
7337

74-
$relatedModel = new TestUserModel();
75-
76-
$updatedMedia = $this->fileStorage->update(
38+
$fileStorage = app(FileStorage::class);
39+
$updatedMedia = $fileStorage->update(
7740
type: TestDocumentType::OTHER,
78-
relatedTo: $relatedModel,
41+
relatedTo: new TestUserModel(),
7942
media: clone $originalMedia,
80-
uploadedFile: $this->testFile,
43+
uploadedFile: UploadedFile::fake('jpg'),
8144
);
8245

8346
$this->assertNotSame($updatedMedia->file_name, $originalMedia->file_name);
8447
$this->assertNull($updatedMedia->preview);
8548
$this->assertSame($updatedMedia->type, TestDocumentType::OTHER->value);
86-
87-
Queue::assertPushedWithChain(OptimizeImage::class, [
88-
GeneratePreview::class,
89-
]);
49+
$this->assertStringEndsWith('.jpg', $updatedMedia->file_name);
9050
}
9151

9252
public function testDeleteMedia(): void
9353
{
9454
/** @var \Imahmood\FileStorage\Models\Media $media */
9555
$media = Media::factory()->create();
9656

97-
$result = $this->fileStorage->delete($media);
57+
$fileStorage = app(FileStorage::class);
58+
$result = $fileStorage->delete($media);
59+
9860
$this->assertTrue($result);
9961
}
10062
}

tests/ManipulatorTest.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Imahmood\FileStorage\Tests;
5+
6+
use Illuminate\Support\Facades\Queue;
7+
use Imahmood\FileStorage\FileStorage;
8+
use Imahmood\FileStorage\Jobs\RunModifiersJob;
9+
use Imahmood\FileStorage\Tests\TestSupport\Enums\TestDocumentType;
10+
use Imahmood\FileStorage\Tests\TestSupport\Models\TestUserModel;
11+
use Imahmood\FileStorage\Tests\TestSupport\UploadedFile;
12+
13+
class ManipulatorTest extends TestCase
14+
{
15+
public function testModifiersJobPushedAfterMediaCreated(): void
16+
{
17+
Queue::fake();
18+
config()->set('file-storage.queue_modifiers', true);
19+
20+
$fileStorage = app(FileStorage::class);
21+
$fileStorage->create(
22+
type: TestDocumentType::AVATAR,
23+
relatedTo: new TestUserModel(),
24+
uploadedFile: UploadedFile::fake('jpg'),
25+
);
26+
27+
Queue::assertPushed(RunModifiersJob::class);
28+
}
29+
30+
public function testModifiersJobNotPushedAfterMediaCreated(): void
31+
{
32+
Queue::fake();
33+
config()->set('file-storage.queue_modifiers', false);
34+
35+
$fileStorage = app(FileStorage::class);
36+
$fileStorage->create(
37+
type: TestDocumentType::AVATAR,
38+
relatedTo: new TestUserModel(),
39+
uploadedFile: UploadedFile::fake('jpg'),
40+
);
41+
42+
Queue::assertNotPushed(RunModifiersJob::class);
43+
}
44+
45+
public function testModifiersRunAfterMediaCreated(): void
46+
{
47+
config()->set('file-storage.queue_modifiers', false);
48+
49+
$fileStorage = app(FileStorage::class);
50+
$media = $fileStorage->create(
51+
type: TestDocumentType::AVATAR,
52+
relatedTo: new TestUserModel(),
53+
uploadedFile: UploadedFile::fake('heic'),
54+
);
55+
56+
$this->assertSame($media->type, TestDocumentType::AVATAR->value);
57+
$this->assertNotNull($media->preview);
58+
$this->assertStringEndsWith('.jpg', $media->file_name);
59+
}
60+
}

tests/TestCase.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace Imahmood\FileStorage\Tests;
55

6+
use Illuminate\Support\Facades\Storage;
67
use Imahmood\FileStorage\FileStorageServiceProvider;
78
use Orchestra\Testbench\TestCase as Orchestra;
89

@@ -12,6 +13,8 @@ protected function setUp(): void
1213
{
1314
parent::setUp();
1415

16+
Storage::fake('local');
17+
1518
$this->loadMigrationsFrom(__DIR__.'/database/migrations');
1619
$this->artisan('migrate', ['--database' => 'testbench'])->run();
1720
}

tests/TestSupport/Enums/TestDocumentType.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,4 @@ public function identifier(): int
1414
{
1515
return $this->value;
1616
}
17-
18-
public function isPublic(): bool
19-
{
20-
return true;
21-
}
2217
}

tests/TestSupport/UploadedFile.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Imahmood\FileStorage\Tests\TestSupport;
5+
6+
use Illuminate\Http\Testing\File;
7+
use Illuminate\Http\UploadedFile as HttpUploadedFile;
8+
9+
class UploadedFile
10+
{
11+
public static function fake(string $ext): File
12+
{
13+
$paths = [
14+
'jpg' => __DIR__.'/assets/avatar.JPG',
15+
'heic' => __DIR__.'/assets/sample-heic-image.heic',
16+
];
17+
18+
return HttpUploadedFile::fake()->create($paths[$ext], file_get_contents($paths[$ext]));
19+
}
20+
}
28.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)