diff --git a/app/Concerns/Filament/HasActivityLogs.php b/app/Concerns/Filament/HasActivityLogs.php index d563c3104..a754d2d6a 100644 --- a/app/Concerns/Filament/HasActivityLogs.php +++ b/app/Concerns/Filament/HasActivityLogs.php @@ -9,7 +9,6 @@ use App\Models\Admin\Activity; use Filament\Actions\Action; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; -use Spatie\Activitylog\Contracts\Activity as ContractsActivity; use Throwable; trait HasActivityLogs diff --git a/app/Http/Api/Field/List/Playlist/Track/TrackPositionField.php b/app/Http/Api/Field/List/Playlist/Track/TrackPositionField.php deleted file mode 100644 index 8fffea938..000000000 --- a/app/Http/Api/Field/List/Playlist/Track/TrackPositionField.php +++ /dev/null @@ -1,17 +0,0 @@ -afterCreating(function (PlaylistTrack $track): void { - if ($track->playlist_id === null) { - return; - } - - $position = PlaylistTrack::query() - ->whereBelongsTo($track->playlist) - ->max(PlaylistTrack::ATTRIBUTE_POSITION) ?? 0; - - $track->update([PlaylistTrack::ATTRIBUTE_POSITION => $position + 1]); - }); - - return $this; - } } diff --git a/database/factories/List/PlaylistFactory.php b/database/factories/List/PlaylistFactory.php index a041b93e0..a292c7ca8 100644 --- a/database/factories/List/PlaylistFactory.php +++ b/database/factories/List/PlaylistFactory.php @@ -64,7 +64,7 @@ class PlaylistFactory extends Factory ->createOne(); if ($index === 1) { - $track->moveToStart(); + $track->position = 1; $playlist->first()->associate($track)->save(); } @@ -78,7 +78,7 @@ class PlaylistFactory extends Factory } if ($index === $count) { - $track->moveToEnd(); + $track->position = $index; $playlist->last()->associate($track); $playlist->save(); } @@ -114,6 +114,7 @@ class PlaylistFactory extends Factory ->createOne(); if ($index === 1) { + $track->position = 1; $playlist->first()->associate($track)->save(); } @@ -126,6 +127,7 @@ class PlaylistFactory extends Factory } if ($index === count($videoIds)) { + $track->position = $index; $playlist->last()->associate($track); $playlist->save(); } diff --git a/tests/Feature/Http/Api/List/Playlist/PlaylistStoreTest.php b/tests/Feature/Http/Api/List/Playlist/PlaylistStoreTest.php index 78b00f4f6..88d33aab9 100644 --- a/tests/Feature/Http/Api/List/Playlist/PlaylistStoreTest.php +++ b/tests/Feature/Http/Api/List/Playlist/PlaylistStoreTest.php @@ -3,18 +3,15 @@ declare(strict_types=1); use App\Constants\Config\PlaylistConstants; -use App\Constants\Config\ValidationConstants; use App\Enums\Auth\CrudPermission; use App\Enums\Auth\SpecialPermission; use App\Enums\Models\List\PlaylistVisibility; -use App\Enums\Rules\ModerationService; use App\Features\AllowPlaylistManagement; use App\Models\Auth\User; use App\Models\List\Playlist; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Config; -use Illuminate\Support\Facades\Http; use Laravel\Pennant\Feature; use Laravel\Sanctum\Sanctum; @@ -177,89 +174,3 @@ test('max track limit permitted for bypass', function (): void { $response->assertCreated(); }); - -test('created if not flagged by open ai', function (): void { - Feature::activate(AllowPlaylistManagement::class); - Config::set(ValidationConstants::MODERATION_SERVICE_QUALIFIED, ModerationService::OPENAI->value); - - Http::fake([ - 'https://api.openai.com/v1/moderations' => Http::response([ - 'results' => [ - 0 => [ - 'flagged' => false, - ], - ], - ]), - ]); - - $visibility = Arr::random(PlaylistVisibility::cases()); - - $parameters = array_merge( - Playlist::factory()->raw(), - [Playlist::ATTRIBUTE_VISIBILITY => $visibility->localize()], - ); - - $user = User::factory()->withPermissions(CrudPermission::CREATE->format(Playlist::class))->createOne(); - - Sanctum::actingAs($user); - - $response = post(route('api.playlist.store', $parameters)); - - $response->assertCreated(); -}); - -test('created if open ai fails', function (): void { - Feature::activate(AllowPlaylistManagement::class); - Config::set(ValidationConstants::MODERATION_SERVICE_QUALIFIED, ModerationService::OPENAI->value); - - Http::fake([ - 'https://api.openai.com/v1/moderations' => Http::response(status: 404), - ]); - - $visibility = Arr::random(PlaylistVisibility::cases()); - - $parameters = array_merge( - Playlist::factory()->raw(), - [Playlist::ATTRIBUTE_VISIBILITY => $visibility->localize()], - ); - - $user = User::factory()->withPermissions(CrudPermission::CREATE->format(Playlist::class))->createOne(); - - Sanctum::actingAs($user); - - $response = post(route('api.playlist.store', $parameters)); - - $response->assertCreated(); -}); - -test('validation error when flagged by open ai', function (): void { - Feature::activate(AllowPlaylistManagement::class); - Config::set(ValidationConstants::MODERATION_SERVICE_QUALIFIED, ModerationService::OPENAI->value); - - Http::fake([ - 'https://api.openai.com/v1/moderations' => Http::response([ - 'results' => [ - 0 => [ - 'flagged' => true, - ], - ], - ]), - ]); - - $visibility = Arr::random(PlaylistVisibility::cases()); - - $parameters = array_merge( - Playlist::factory()->raw(), - [Playlist::ATTRIBUTE_VISIBILITY => $visibility->localize()], - ); - - $user = User::factory()->withPermissions(CrudPermission::CREATE->format(Playlist::class))->createOne(); - - Sanctum::actingAs($user); - - $response = post(route('api.playlist.store', $parameters)); - - $response->assertJsonValidationErrors([ - Playlist::ATTRIBUTE_NAME, - ]); -}); diff --git a/tests/Feature/Http/Api/List/Playlist/PlaylistUpdateTest.php b/tests/Feature/Http/Api/List/Playlist/PlaylistUpdateTest.php index c308cc889..98438d799 100644 --- a/tests/Feature/Http/Api/List/Playlist/PlaylistUpdateTest.php +++ b/tests/Feature/Http/Api/List/Playlist/PlaylistUpdateTest.php @@ -2,20 +2,16 @@ declare(strict_types=1); -use App\Constants\Config\ValidationConstants; use App\Enums\Auth\CrudPermission; use App\Enums\Auth\SpecialPermission; use App\Enums\Models\List\PlaylistVisibility; -use App\Enums\Rules\ModerationService; use App\Events\List\Playlist\PlaylistCreated; use App\Features\AllowPlaylistManagement; use App\Models\Auth\User; use App\Models\List\Playlist; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Support\Arr; -use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Event; -use Illuminate\Support\Facades\Http; use Laravel\Pennant\Feature; use Laravel\Sanctum\Sanctum; @@ -175,113 +171,3 @@ test('update permitted for bypass', function (): void { $response->assertOk(); }); - -test('updated if not flagged by open ai', function (): void { - Event::fakeExcept(PlaylistCreated::class); - - Feature::activate(AllowPlaylistManagement::class); - Config::set(ValidationConstants::MODERATION_SERVICE_QUALIFIED, ModerationService::OPENAI->value); - - Http::fake([ - 'https://api.openai.com/v1/moderations' => Http::response([ - 'results' => [ - 0 => [ - 'flagged' => false, - ], - ], - ]), - ]); - - $user = User::factory()->withPermissions(CrudPermission::UPDATE->format(Playlist::class))->createOne(); - - $playlist = Playlist::factory() - ->for($user) - ->createOne(); - - $visibility = Arr::random(PlaylistVisibility::cases()); - - $parameters = array_merge( - Playlist::factory()->raw(), - [ - Playlist::ATTRIBUTE_VISIBILITY => $visibility->localize(), - ], - ); - - Sanctum::actingAs($user); - - $response = put(route('api.playlist.update', ['playlist' => $playlist] + $parameters)); - - $response->assertOk(); -}); - -test('updated if open ai fails', function (): void { - Event::fakeExcept(PlaylistCreated::class); - - Feature::activate(AllowPlaylistManagement::class); - Config::set(ValidationConstants::MODERATION_SERVICE_QUALIFIED, ModerationService::OPENAI->value); - - Http::fake([ - 'https://api.openai.com/v1/moderations' => Http::response(status: 404), - ]); - - $user = User::factory()->withPermissions(CrudPermission::UPDATE->format(Playlist::class))->createOne(); - - $playlist = Playlist::factory() - ->for($user) - ->createOne(); - - $visibility = Arr::random(PlaylistVisibility::cases()); - - $parameters = array_merge( - Playlist::factory()->raw(), - [ - Playlist::ATTRIBUTE_VISIBILITY => $visibility->localize(), - ], - ); - - Sanctum::actingAs($user); - - $response = put(route('api.playlist.update', ['playlist' => $playlist] + $parameters)); - - $response->assertOk(); -}); - -test('validation error when flagged by open ai', function (): void { - Event::fakeExcept(PlaylistCreated::class); - - Feature::activate(AllowPlaylistManagement::class); - Config::set(ValidationConstants::MODERATION_SERVICE_QUALIFIED, ModerationService::OPENAI->value); - - Http::fake([ - 'https://api.openai.com/v1/moderations' => Http::response([ - 'results' => [ - 0 => [ - 'flagged' => true, - ], - ], - ]), - ]); - - $user = User::factory()->withPermissions(CrudPermission::UPDATE->format(Playlist::class))->createOne(); - - $playlist = Playlist::factory() - ->for($user) - ->createOne(); - - $visibility = Arr::random(PlaylistVisibility::cases()); - - $parameters = array_merge( - Playlist::factory()->raw(), - [ - Playlist::ATTRIBUTE_VISIBILITY => $visibility->localize(), - ], - ); - - Sanctum::actingAs($user); - - $response = put(route('api.playlist.update', ['playlist' => $playlist] + $parameters)); - - $response->assertJsonValidationErrors([ - Playlist::ATTRIBUTE_NAME, - ]); -}); diff --git a/tests/Unit/Http/Api/Parser/SortParserTest.php b/tests/Unit/Http/Api/Parser/SortParserTest.php index b5e5026f6..884fa3bde 100644 --- a/tests/Unit/Http/Api/Parser/SortParserTest.php +++ b/tests/Unit/Http/Api/Parser/SortParserTest.php @@ -101,7 +101,7 @@ test('parse global scope', function (): void { }); test('parse type scope', function (): void { - $type = Str::singular(fake()->word()); + $type = Str::singular('posts'); $parameters = [ SortParser::param() => [