mirror of
https://github.com/koel/koel
synced 2024-12-29 22:13:06 +00:00
76 lines
2.1 KiB
PHP
76 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Services;
|
|
|
|
use App\Models\Playlist;
|
|
use App\Models\PlaylistFolder;
|
|
use App\Services\PlaylistFolderService;
|
|
use Illuminate\Support\Collection;
|
|
use Tests\TestCase;
|
|
|
|
use function Tests\create_user;
|
|
|
|
class PlaylistFolderServiceTest extends TestCase
|
|
{
|
|
private PlaylistFolderService $service;
|
|
|
|
public function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->service = new PlaylistFolderService();
|
|
}
|
|
|
|
public function testCreate(): void
|
|
{
|
|
$user = create_user();
|
|
|
|
self::assertCount(0, $user->playlist_folders);
|
|
|
|
$this->service->createFolder($user, 'Classical');
|
|
|
|
self::assertCount(1, $user->refresh()->playlist_folders);
|
|
self::assertSame('Classical', $user->playlist_folders[0]->name);
|
|
}
|
|
|
|
public function testUpdate(): void
|
|
{
|
|
/** @var PlaylistFolder $folder */
|
|
$folder = PlaylistFolder::factory()->create(['name' => 'Metal']);
|
|
|
|
$this->service->renameFolder($folder, 'Classical');
|
|
|
|
self::assertSame('Classical', $folder->fresh()->name);
|
|
}
|
|
|
|
public function testAddPlaylistsToFolder(): void
|
|
{
|
|
$user = create_user();
|
|
|
|
/** @var Collection<array-key, Playlist> $playlists */
|
|
$playlists = Playlist::factory()->for($user)->count(3)->create();
|
|
|
|
/** @var PlaylistFolder $folder */
|
|
$folder = PlaylistFolder::factory()->for($user)->create();
|
|
|
|
$this->service->addPlaylistsToFolder($folder, $playlists->pluck('id')->all());
|
|
|
|
self::assertCount(3, $folder->playlists);
|
|
}
|
|
|
|
public function testMovePlaylistsToRootLevel(): void
|
|
{
|
|
/** @var PlaylistFolder $folder */
|
|
$folder = PlaylistFolder::factory()->create();
|
|
|
|
/** @var Collection<array-key, Playlist> $playlists */
|
|
$playlists = Playlist::factory()->count(3)->create();
|
|
$folder->playlists()->attach($playlists->pluck('id')->all());
|
|
|
|
$this->service->movePlaylistsToRootLevel($folder, $playlists->pluck('id')->all());
|
|
|
|
self::assertCount(0, $folder->playlists);
|
|
|
|
$playlists->each(static fn (Playlist $playlist) => self::assertNull($playlist->refresh()->getFolder()));
|
|
}
|
|
}
|