Skip to content

Commit 5fb7563

Browse files
authored
Merge pull request #25 from juzaweb/add-media-controller-tests-16635649390099108382
Add tests for MediaController routes
2 parents 0518ab4 + 610ec90 commit 5fb7563

1 file changed

Lines changed: 98 additions & 0 deletions

File tree

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
3+
namespace Juzaweb\Modules\Core\Tests\Feature;
4+
5+
use Illuminate\Foundation\Testing\DatabaseTransactions;
6+
use Illuminate\Http\UploadedFile;
7+
use Illuminate\Support\Facades\Storage;
8+
use Juzaweb\Modules\Core\FileManager\Enums\MediaType;
9+
use Juzaweb\Modules\Core\Models\Media;
10+
use Juzaweb\Modules\Core\Models\User;
11+
use Juzaweb\Modules\Core\Tests\TestCase;
12+
13+
class MediaControllerTest extends TestCase
14+
{
15+
use DatabaseTransactions;
16+
17+
protected $user;
18+
19+
protected function setUp(): void
20+
{
21+
parent::setUp();
22+
23+
$this->defineDatabaseMigrations();
24+
25+
$this->user = User::factory()->create([
26+
'is_super_admin' => 1,
27+
]);
28+
29+
$this->actingAs($this->user);
30+
}
31+
32+
public function testIndex()
33+
{
34+
$response = $this->get(route('admin.media.index'));
35+
36+
$response->assertStatus(200);
37+
$response->assertViewIs('core::admin.media.index');
38+
}
39+
40+
public function testAddFolder()
41+
{
42+
$response = $this->post(route('admin.media.folders.store'), [
43+
'name' => 'Test Folder',
44+
'folder_id' => null,
45+
]);
46+
47+
$response->assertStatus(200);
48+
49+
$this->assertDatabaseHas('media', [
50+
'name' => 'Test Folder',
51+
'type' => MediaType::DIRECTORY,
52+
]);
53+
}
54+
55+
public function testUpload()
56+
{
57+
Storage::fake('public');
58+
59+
$file = UploadedFile::fake()->image('test_image.jpg');
60+
61+
$response = $this->post(route('media.upload', ['disk' => 'public']), [
62+
'upload' => $file,
63+
'working_dir' => null,
64+
]);
65+
66+
$response->assertStatus(200);
67+
$response->assertJson(['status' => true]);
68+
69+
// Check if file is stored
70+
// The path in storage is generated, so exact path checking might be tricky without knowing logic.
71+
// But we can check database.
72+
73+
$this->assertDatabaseHas('media', [
74+
'name' => 'test_image',
75+
'mime_type' => 'image/jpeg',
76+
'type' => MediaType::FILE,
77+
]);
78+
}
79+
80+
public function testDelete()
81+
{
82+
$media = Media::create([
83+
'name' => 'File to delete',
84+
'type' => MediaType::FILE,
85+
'mime_type' => 'text/plain',
86+
'path' => 'path/to/file.txt',
87+
'extension' => 'txt',
88+
]);
89+
90+
$response = $this->delete(route('admin.media.delete', [$media->id]));
91+
92+
$response->assertStatus(200);
93+
94+
$this->assertDatabaseMissing('media', [
95+
'id' => $media->id,
96+
]);
97+
}
98+
}

0 commit comments

Comments
 (0)