koel/tests/Feature/PlaylistCoverTest.php
2024-07-06 17:44:46 +02:00

57 lines
1.5 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\Playlist;
use App\Services\MediaMetadataService;
use Mockery;
use Mockery\MockInterface;
use Tests\TestCase;
use function Tests\create_user;
class PlaylistCoverTest extends TestCase
{
private MockInterface|MediaMetadataService $mediaMetadataService;
public function setUp(): void
{
parent::setUp();
$this->mediaMetadataService = self::mock(MediaMetadataService::class);
}
public function testUploadCover(): void
{
/** @var Playlist $playlist */
$playlist = Playlist::factory()->create();
self::assertNull($playlist->cover);
$this->mediaMetadataService
->shouldReceive('writePlaylistCover')
->once()
->with(Mockery::on(static fn (Playlist $target) => $target->is($playlist)), 'Foo', 'jpeg');
$this->putAs(
"api/playlists/$playlist->id/cover",
['cover' => 'data:image/jpeg;base64,Rm9v'],
$playlist->user
)
->assertOk();
}
public function testUploadCoverNotAllowedForNonOwner(): void
{
/** @var Playlist $playlist */
$playlist = Playlist::factory()->create();
$this->mediaMetadataService->shouldNotReceive('writePlaylistCover');
$this->putAs(
"api/playlists/$playlist->id/cover",
['cover' => 'data:image/jpeg;base64,Rm9v'],
create_user()
)
->assertForbidden();
}
}