|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Tests\Adapter;
|
|
|
|
|
|
|
|
use App\Adapter\ScannedSong;
|
|
|
|
use App\Adapter\SongScanner;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
use function Lambdish\Phunctional\map;
|
|
|
|
|
|
|
|
class SongScannerTest extends TestCase
|
|
|
|
{
|
|
|
|
|
|
|
|
function testDefaultBehaviourFunctional() {
|
|
|
|
$scanner = new SongScanner(__DIR__);
|
|
|
|
$songs = $scanner->scan();
|
|
|
|
|
|
|
|
$this->assertCount(5, $songs);
|
|
|
|
|
|
|
|
$combinations = map(fn(ScannedSong $song) => [$song->artist, $song->album, $song->title], $songs);
|
|
|
|
$this->assertContains(['Band A', 'Album A', 'Song 1'], $combinations);
|
|
|
|
$this->assertContains(['Band A', 'Album A', 'Song 2'], $combinations);
|
|
|
|
$this->assertContains(['Band A', 'Album B', 'Song 1'], $combinations);
|
|
|
|
$this->assertContains(['Band B', 'Album A', 'Song 1'], $combinations);
|
|
|
|
}
|
|
|
|
}
|