mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-28 22:01:33 +00:00
133 lines
4.0 KiB
PHP
133 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature;
|
|
|
|
use App\Services\TraktService;
|
|
use Tests\TestCase;
|
|
|
|
/**
|
|
* Tests for Trakt.tv API integration.
|
|
*
|
|
* These tests verify that the Trakt.tv API is properly configured and responding.
|
|
*/
|
|
class TraktApiTest extends TestCase
|
|
{
|
|
private TraktService $traktService;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
$this->traktService = new TraktService;
|
|
}
|
|
|
|
public function test_trakt_service_is_configured(): void
|
|
{
|
|
if (! $this->traktService->isConfigured()) {
|
|
$this->markTestSkipped('Trakt.tv API key is not configured.');
|
|
}
|
|
|
|
$this->assertTrue($this->traktService->isConfigured());
|
|
}
|
|
|
|
public function test_can_search_for_shows(): void
|
|
{
|
|
if (! $this->traktService->isConfigured()) {
|
|
$this->markTestSkipped('Trakt.tv API key is not configured.');
|
|
}
|
|
|
|
$results = $this->traktService->searchShows('Breaking Bad', 'show');
|
|
|
|
$this->assertNotNull($results);
|
|
$this->assertIsArray($results);
|
|
$this->assertNotEmpty($results);
|
|
}
|
|
|
|
public function test_can_get_show_summary(): void
|
|
{
|
|
if (! $this->traktService->isConfigured()) {
|
|
$this->markTestSkipped('Trakt.tv API key is not configured.');
|
|
}
|
|
|
|
// First search for Breaking Bad
|
|
$results = $this->traktService->searchShows('Breaking Bad', 'show');
|
|
|
|
if (empty($results)) {
|
|
$this->markTestSkipped('Could not find Breaking Bad on Trakt.tv.');
|
|
}
|
|
|
|
$traktId = $results[0]['show']['ids']['trakt'];
|
|
$summary = $this->traktService->getShowSummary($traktId, 'full');
|
|
|
|
$this->assertNotNull($summary);
|
|
$this->assertIsArray($summary);
|
|
$this->assertEquals('Breaking Bad', $summary['title']);
|
|
}
|
|
|
|
public function test_can_get_episode_summary(): void
|
|
{
|
|
if (! $this->traktService->isConfigured()) {
|
|
$this->markTestSkipped('Trakt.tv API key is not configured.');
|
|
}
|
|
|
|
// First search for Breaking Bad
|
|
$results = $this->traktService->searchShows('Breaking Bad', 'show');
|
|
|
|
if (empty($results)) {
|
|
$this->markTestSkipped('Could not find Breaking Bad on Trakt.tv.');
|
|
}
|
|
|
|
$traktId = $results[0]['show']['ids']['trakt'];
|
|
|
|
// Get Season 1, Episode 1
|
|
$episode = $this->traktService->getEpisodeSummary($traktId, 1, 1, 'full');
|
|
|
|
$this->assertNotNull($episode);
|
|
$this->assertIsArray($episode);
|
|
$this->assertEquals('Pilot', $episode['title']);
|
|
}
|
|
|
|
public function test_can_get_trending_shows(): void
|
|
{
|
|
if (! $this->traktService->isConfigured()) {
|
|
$this->markTestSkipped('Trakt.tv API key is not configured.');
|
|
}
|
|
|
|
$trending = $this->traktService->getTrendingShows(5);
|
|
|
|
$this->assertNotNull($trending);
|
|
$this->assertIsArray($trending);
|
|
$this->assertCount(5, $trending);
|
|
}
|
|
|
|
public function test_search_result_has_expected_structure(): void
|
|
{
|
|
if (! $this->traktService->isConfigured()) {
|
|
$this->markTestSkipped('Trakt.tv API key is not configured.');
|
|
}
|
|
|
|
$results = $this->traktService->searchShows('Breaking Bad', 'show');
|
|
|
|
if (empty($results)) {
|
|
$this->markTestSkipped('Could not find Breaking Bad on Trakt.tv.');
|
|
}
|
|
|
|
$firstResult = $results[0];
|
|
|
|
$this->assertArrayHasKey('show', $firstResult);
|
|
$this->assertArrayHasKey('title', $firstResult['show']);
|
|
$this->assertArrayHasKey('ids', $firstResult['show']);
|
|
$this->assertArrayHasKey('trakt', $firstResult['show']['ids']);
|
|
}
|
|
|
|
public function test_returns_empty_for_invalid_search(): void
|
|
{
|
|
if (! $this->traktService->isConfigured()) {
|
|
$this->markTestSkipped('Trakt.tv API key is not configured.');
|
|
}
|
|
|
|
$results = $this->traktService->searchShows('xyznonexistentshow99999', 'show');
|
|
|
|
$this->assertTrue(empty($results) || $results === null);
|
|
}
|
|
}
|