AzuraCast/tests/Unit/DuplicatePreventionTest.php

70 lines
2.1 KiB
PHP

<?php
namespace Unit;
use App\Entity\Api\StationPlaylistQueue;
use App\Radio\AutoDJ\DuplicatePrevention;
use App\Tests\Module;
use Codeception\Test\Unit;
class DuplicatePreventionTest extends Unit
{
protected \UnitTester $tester;
protected DuplicatePrevention $duplicatePrevention;
protected function _inject(Module $tests_module): void
{
$di = $tests_module->container;
$this->duplicatePrevention = $di->get(DuplicatePrevention::class);
}
public function testDistinctTracks(): void
{
$eligibleTrack = new StationPlaylistQueue();
$eligibleTrack->artist = 'Foo Fighters feat. AzuraCast Testers';
$eligibleTrack->title = 'Best of You';
$eligibleTracks = [$eligibleTrack];
$fullDuplicateTest = [
[
'title' => 'Best of You',
'artist' => 'Foo Fighters',
],
];
$fullDuplicateResult = $this->duplicatePrevention->getDistinctTrack($eligibleTracks, $fullDuplicateTest);
$this->assertNull($fullDuplicateResult);
$artistDuplicateTest = [
[
'title' => 'Everlong',
'artist' => 'Foo Fighters',
],
];
$artistDuplicateResult = $this->duplicatePrevention->getDistinctTrack($eligibleTracks, $artistDuplicateTest);
$this->assertNull($artistDuplicateResult);
$partialDuplicateTest = [
[
'title' => 'Testing Song',
'artist' => 'Foo Fighters feat. Fall Out Boy',
],
];
$partialDuplicateResult = $this->duplicatePrevention->getDistinctTrack($eligibleTracks, $partialDuplicateTest);
$this->assertNull($partialDuplicateResult);
$noDuplicatesTest = [
[
'title' => 'Testing Song 1',
'artist' => 'Panic! at the Disco',
],
[
'title' => 'Lost Memory',
'artist' => '削除',
],
];
$noDuplicatesResult = $this->duplicatePrevention->getDistinctTrack($eligibleTracks, $noDuplicatesTest);
$this->assertNotNull($noDuplicatesResult);
}
}