public()->create(); $private = Medium::factory()->private()->create(); $this->assertTrue($public->isPublic()); $this->assertFalse($public->isPrivate()); $this->assertTrue($private->isPrivate()); $this->assertFalse($private->isPublic()); } public function test_get_storage_disk_matches_medium_disk(): void { $private = Medium::factory()->private()->create(['path' => 'a.txt']); Storage::disk('private')->put('a.txt', 'x'); $this->assertTrue($private->getStorageDisk()->exists('a.txt')); $this->assertFalse(Storage::disk('public')->exists('a.txt')); } public function test_full_url_returns_absolute_path_on_matching_disk(): void { $public = Medium::factory()->public()->create(['path' => 'files/a.png']); $private = Medium::factory()->private()->create(['path' => 'files/b.png']); $this->assertSame(Storage::disk('public')->path('files/a.png'), $public->full_url); $this->assertSame(Storage::disk('private')->path('files/b.png'), $private->full_url); } public function test_exists_get_contents_and_delete_file(): void { $medium = Medium::factory()->private()->create(['path' => 'files/c.txt']); Storage::disk('private')->put('files/c.txt', 'hello'); $this->assertTrue($medium->exists()); $this->assertSame('hello', $medium->getContents()); $this->assertTrue($medium->deleteFile()); $this->assertFalse($medium->exists()); $this->assertFalse($medium->deleteFile()); } public function test_human_size_formats_bytes_into_units(): void { $this->assertSame('512 B', Medium::factory()->make(['size' => 512])->human_size); $this->assertSame('1 KB', Medium::factory()->make(['size' => 1025])->human_size); $this->assertSame('1.5 MB', Medium::factory()->make(['size' => 1572864])->human_size); $this->assertSame('2 GB', Medium::factory()->make(['size' => 2147483648])->human_size); } public function test_disk_is_cast_to_enum(): void { $this->assertSame(MediaDiskEnum::Private, Medium::factory()->private()->create()->fresh()->disk); } }