the browser-facing portion of osu!
at master 70 lines 2.1 kB view raw
1<?php 2 3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0. 4// See the LICENCE file in the repository root for full licence text. 5 6declare(strict_types=1); 7 8namespace Tests\Jobs; 9 10use App\Jobs\BeatmapsetDelete; 11use App\Models\Beatmapset; 12use App\Models\Event; 13use App\Models\Forum\Topic; 14use App\Models\Log; 15use App\Models\User; 16use Tests\TestCase; 17 18class BeatmapsetDeleteTest extends TestCase 19{ 20 public function testBeatmapsetDeletedByOwner(): void 21 { 22 $owner = User::factory()->create(); 23 $topic = Topic::factory()->create(); 24 $beatmapset = Beatmapset::factory()->create([ 25 'thread_id' => $topic, 26 'user_id' => $owner, 27 'approved' => Beatmapset::STATES['pending'], 28 ]); 29 30 $this->expectCountChange(fn () => Event::count(), 1); 31 $this->expectCountChange( 32 fn () => Log::where('log_operation', 'LOG_BEATMAPSET_DELETE')->count(), 33 0, 34 ); 35 36 (new BeatmapsetDelete($beatmapset, $owner))->handle(); 37 38 $beatmapset->refresh(); 39 $topic->refresh(); 40 41 $this->assertTrue($beatmapset->trashed()); 42 $this->assertTrue($topic->trashed()); 43 } 44 45 public function testBeatmapsetDeletedByAnotherUser(): void 46 { 47 $moderator = User::factory()->create(); 48 $owner = User::factory()->create(); 49 $topic = Topic::factory()->create(); 50 $beatmapset = Beatmapset::factory()->create([ 51 'thread_id' => $topic, 52 'user_id' => $owner, 53 'approved' => Beatmapset::STATES['pending'], 54 ]); 55 56 $this->expectCountChange(fn () => Event::count(), 0); 57 $this->expectCountChange( 58 fn () => Log::where('log_operation', 'LOG_BEATMAPSET_DELETE')->count(), 59 1, 60 ); 61 62 (new BeatmapsetDelete($beatmapset, $moderator))->handle(); 63 64 $beatmapset->refresh(); 65 $topic->refresh(); 66 67 $this->assertTrue($beatmapset->trashed()); 68 $this->assertTrue($topic->trashed()); 69 } 70}