]> git.localhorst.tv Git - alttp.git/commitdiff
add episode api test
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 12 Dec 2025 13:30:53 +0000 (14:30 +0100)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 12 Dec 2025 13:30:53 +0000 (14:30 +0100)
app/Models/Channel.php
app/Models/Event.php
tests/Feature/EpisodesTest.php [new file with mode: 0644]
tests/Feature/ExampleTest.php [deleted file]

index b4f0c118ba6c02bf19bca75c056239717d327962..85b9097f6f72da9f91e7cd14583b781f2596d96e 100644 (file)
@@ -295,6 +295,14 @@ class Channel extends Model {
                'twitch_live' => 'boolean',
        ];
 
+       protected $fillable = [
+               'access_key',
+               'ext_id',
+               'short_name',
+               'stream_link',
+               'title',
+       ];
+
        protected $hidden = [
                'access_key',
                'chat_commands',
index 8a0d198f26562469fffa91810081265016b34afa..f4136d3b24037b8b2fe0e45357a60a34b5ec88ed 100644 (file)
@@ -47,6 +47,12 @@ class Event extends Model
                'visible' => 'boolean',
        ];
 
+       protected $fillable = [
+               'name',
+               'title',
+               'visible',
+       ];
+
        protected $hidden = [
                'created_at',
                'fix_timezone',
diff --git a/tests/Feature/EpisodesTest.php b/tests/Feature/EpisodesTest.php
new file mode 100644 (file)
index 0000000..0199cfe
--- /dev/null
@@ -0,0 +1,115 @@
+<?php
+
+namespace Tests\Feature;
+
+use App\Models\Channel;
+use App\Models\Episode;
+use App\Models\Event;
+use Tests\TestCase;
+
+class EpisodesTest extends TestCase {
+
+       protected function setUp(): void {
+               parent::setUp();
+               $event = Event::firstOrCreate([
+                       'name' => 'super-event',
+               ], [
+                       'title' => 'Ein ganz tolles event',
+                       'visible' => true,
+               ]);
+               $channel = Channel::firstOrCreate([
+                       'short_name' => 'ZSG',
+               ], [
+                       'stream_link' => 'twitch.tv/youtube',
+                       'title' => 'ZeldaSpeedGames',
+               ]);
+               $episode = new Episode();
+               $episode->comment = 'Das ist die richtige, die andere bitte löschen';
+               $episode->confirmed = true;
+               $episode->estimate = 2 * 60 * 60;
+               $episode->event()->associate($event);
+               $episode->start = now()->addDay();
+               $episode->title = 'Player 1 vs Player 2';
+               $episode->save();
+               $episode->channels()->attach($channel);
+               $episode->players()->createMany([
+                       ['name_override' => 'Player 1'],
+                       ['name_override' => 'Player 2'],
+               ]);
+               $episode->crew()->createMany([
+                       ['channel_id' => $channel->id, 'name_override' => 'Comm 1', 'role' => 'commentary'],
+                       ['channel_id' => $channel->id, 'name_override' => 'Comm 2', 'role' => 'commentary'],
+                       ['channel_id' => null, 'name_override' => 'Tracker', 'role' => 'tracking'],
+                       ['channel_id' => null, 'name_override' => 'Setter Upper', 'role' => 'setup'],
+               ]);
+       }
+
+       public function testList() {
+               $response = $this->getJson('/api/episodes');
+               $response->assertStatus(200);
+               $response->assertJsonStructure([
+                       '*' => [
+                               'channels' => [
+                                       '*' => [
+                                               'id',
+                                               'languages',
+                                               'pivot' => [
+                                                       'accept_comms',
+                                                       'accept_tracker',
+                                               ],
+                                               'short_name',
+                                               'stream_link',
+                                               'title',
+                                       ],
+                               ],
+                               'comment',
+                               'confirmed',
+                               'create_raceroom',
+                               'crew' => [
+                                       '*' => [
+                                               'channel_id',
+                                               'confirmed',
+                                               'id',
+                                               'name_override',
+                                               'role',
+                                               'stream_override',
+                                               'user',
+                                               'user_id',
+                                       ],
+                               ],
+                               'estimate',
+                               'event' => [
+                                       'banner',
+                                       'corner',
+                                       'create_raceroom',
+                                       'end',
+                                       'external_schedule',
+                                       'game',
+                                       'id',
+                                       'name',
+                                       'raceroom_lead_time',
+                                       'racetime_category',
+                                       'short',
+                                       'start',
+                                       'title',
+                               ],
+                               'ext_id',
+                               'game',
+                               'id',
+                               'players' => [
+                                       '*' => [
+                                               'name_override',
+                                               'stream_override',
+                                               'user',
+                                               'user_id',
+                                       ],
+                               ],
+                               'raceroom',
+                               'raceroom_lead_time',
+                               'start',
+                               'title',
+                       ],
+               ]);
+       }
+
+}
diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php
deleted file mode 100644 (file)
index 78ccc21..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Tests\Feature;
-
-use Illuminate\Foundation\Testing\RefreshDatabase;
-use Tests\TestCase;
-
-class ExampleTest extends TestCase
-{
-    /**
-     * A basic test example.
-     *
-     * @return void
-     */
-    public function test_the_application_returns_a_successful_response()
-    {
-        $response = $this->get('/');
-
-        $response->assertStatus(200);
-    }
-}