mirror of
https://github.com/koel/koel
synced 2024-12-27 13:03:06 +00:00
64 lines
1.9 KiB
PHP
64 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit;
|
|
|
|
use App\Models\Song;
|
|
use App\Models\SongZipArchive;
|
|
use Tests\TestCase;
|
|
|
|
class SongZipArchiveTest extends TestCase
|
|
{
|
|
/** @test */
|
|
public function it_can_be_instantiated()
|
|
{
|
|
$songZipArchive = new SongZipArchive();
|
|
$this->assertInstanceOf(SongZipArchive::class, $songZipArchive);
|
|
$this->assertInstanceOf(\ZipArchive::class, $songZipArchive->getArchive());
|
|
}
|
|
|
|
/** @test */
|
|
public function a_song_can_be_added_into_an_archive()
|
|
{
|
|
// Given a song
|
|
$song = factory(Song::class)->create([
|
|
'path' => realpath(__DIR__.'/../songs/full.mp3'),
|
|
]);
|
|
|
|
// When I add the song into the archive
|
|
$songArchive = new SongZipArchive();
|
|
$songArchive->addSong($song);
|
|
|
|
// Then I see the archive contains one file
|
|
$archive = $songArchive->getArchive();
|
|
$this->assertEquals(1, $archive->numFiles);
|
|
|
|
// and the file is our song
|
|
$this->assertEquals('full.mp3', $archive->getNameIndex(0));
|
|
}
|
|
|
|
/** @test */
|
|
public function multiple_songs_can_be_added_into_an_archive()
|
|
{
|
|
// Given some songs
|
|
$songs = collect([
|
|
factory(Song::class)->create([
|
|
'path' => realpath(__DIR__.'/../songs/full.mp3'),
|
|
]),
|
|
factory(Song::class)->create([
|
|
'path' => realpath(__DIR__.'/../songs/lorem.mp3'),
|
|
]),
|
|
]);
|
|
|
|
// When I add the songs into the archive
|
|
$songArchive = new SongZipArchive();
|
|
$songArchive->addSongs($songs);
|
|
|
|
// Then I see the archive contains two files
|
|
$archive = $songArchive->getArchive();
|
|
$this->assertEquals(2, $archive->numFiles);
|
|
|
|
// and the files are our songs
|
|
$this->assertEquals('full.mp3', $archive->getNameIndex(0));
|
|
$this->assertEquals('lorem.mp3', $archive->getNameIndex(1));
|
|
}
|
|
}
|