From f665c7fe31882f7b7c867e01fd805b80a4092b96 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Mon, 24 Aug 2020 09:50:58 +0800 Subject: [PATCH] fix texture is missing from uploader's closet when set to private --- app/Listeners/CleanUpCloset.php | 5 ++++- tests/ListenersTest/CleanUpClosetTest.php | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/Listeners/CleanUpCloset.php b/app/Listeners/CleanUpCloset.php index 6dd70fa9..8edb9c4d 100644 --- a/app/Listeners/CleanUpCloset.php +++ b/app/Listeners/CleanUpCloset.php @@ -15,7 +15,10 @@ class CleanUpCloset return; } - $likers = $texture->likers()->get(); + $likers = $texture + ->likers() + ->where('user_uid', '!=', $texture->uploader) + ->get(); $likers->each(function (User $user) use ($texture) { $user->closet()->detach($texture->tid); if (option('return_score')) { diff --git a/tests/ListenersTest/CleanUpClosetTest.php b/tests/ListenersTest/CleanUpClosetTest.php index 0669e0f1..97a9eca4 100644 --- a/tests/ListenersTest/CleanUpClosetTest.php +++ b/tests/ListenersTest/CleanUpClosetTest.php @@ -26,16 +26,23 @@ class CleanUpClosetTest extends TestCase public function testPrivateTexture() { option(['return_score' => true]); - $texture = factory(Texture::class)->create(['public' => false]); + $uploader = factory(User::class)->create(); + $texture = factory(Texture::class)->create([ + 'uploader' => $uploader->uid, + 'public' => false, + ]); + $uploader->closet()->attach($texture->tid, ['item_name' => '']); $user = factory(User::class)->create(['score' => 0]); $user->closet()->attach($texture->tid, ['item_name' => '']); $replicated = $texture->replicate(); event('texture.privacy.updated', [$texture]); + $uploader->refresh(); $user->refresh(); $this->assertEquals($replicated->likes - 1, $texture->fresh()->likes); $this->assertEquals((int) option('score_per_closet_item'), $user->score); $this->assertNull($user->closet()->find($texture->tid)); + $this->assertEquals(1, $uploader->closet()->count()); } public function testDeletedTexture()