$externalSongs */ $externalSongs = Song::factory(3)->for($anotherUser, 'owner')->private()->create(); // We can't make public songs that are not ours. $this->putAs('api/songs/publicize', ['songs' => $externalSongs->pluck('id')->toArray()], $currentUser) ->assertForbidden(); // But we can our own songs. $ownSongs = Song::factory(3)->for($currentUser, 'owner')->create(); $this->putAs('api/songs/publicize', ['songs' => $ownSongs->pluck('id')->toArray()], $currentUser) ->assertSuccessful(); $ownSongs->each(static fn (Song $song) => self::assertTrue($song->refresh()->is_public)); } public function testMakingSongPrivate(): void { $currentUser = create_user(); $anotherUser = create_user(); /** @var Collection $externalSongs */ $externalSongs = Song::factory(3)->for($anotherUser, 'owner')->public()->create(); // We can't make private songs that are not ours. $this->putAs('api/songs/privatize', ['songs' => $externalSongs->pluck('id')->toArray()], $currentUser) ->assertForbidden(); // But we can our own songs. $ownSongs = Song::factory(3)->for($currentUser, 'owner')->create(); $this->putAs('api/songs/privatize', ['songs' => $ownSongs->pluck('id')->toArray()], $currentUser) ->assertSuccessful(); $ownSongs->each(static fn (Song $song) => self::assertFalse($song->refresh()->is_public)); } }