diff --git a/tests/Feature/Users/Ui/MergeUserTest.php b/tests/Feature/Users/Ui/MergeUserTest.php index 0ce4b715f3..d714f5967b 100644 --- a/tests/Feature/Users/Ui/MergeUserTest.php +++ b/tests/Feature/Users/Ui/MergeUserTest.php @@ -4,7 +4,7 @@ namespace Tests\Feature\Users\Ui; use App\Models\Accessory; use App\Models\Asset; -use App\Models\License; +use App\Models\Consumable; use App\Models\LicenseSeat; use App\Models\User; use App\Models\Actionlog; @@ -35,6 +35,8 @@ class MergeUserTest extends TestCase $this->followRedirects($response)->assertSee('Success'); $this->assertNotEquals(3, $user_to_merge_into->refresh()->assets->count()); $this->assertEquals(9, $user_to_merge_into->refresh()->assets->count()); + $this->assertEquals(0, $user1->refresh()->assets->count()); + $this->assertEquals(0, $user2->refresh()->assets->count()); } @@ -62,6 +64,8 @@ class MergeUserTest extends TestCase $this->followRedirects($response)->assertSee('Success'); $this->assertNotEquals(3, $user_to_merge_into->refresh()->licenses->count()); $this->assertEquals(9, $user_to_merge_into->refresh()->licenses->count()); + $this->assertEquals(0, $user1->refresh()->licenses->count()); + $this->assertEquals(0, $user2->refresh()->licenses->count()); } @@ -89,6 +93,37 @@ class MergeUserTest extends TestCase $this->followRedirects($response)->assertSee('Success'); $this->assertNotEquals(3, $user_to_merge_into->refresh()->accessories->count()); $this->assertEquals(9, $user_to_merge_into->refresh()->accessories->count()); + $this->assertEquals(0, $user1->refresh()->accessories->count()); + $this->assertEquals(0, $user2->refresh()->accessories->count()); + + } + + public function testConsumablesTransferredOnUserMerge() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + Consumable::factory()->count(3)->checkedOutToUser($user1)->create(); + Consumable::factory()->count(3)->checkedOutToUser($user2)->create(); + Consumable::factory()->count(3)->checkedOutToUser($user_to_merge_into)->create(); + + $this->assertEquals(3, $user_to_merge_into->refresh()->consumables->count()); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertNotEquals(3, $user_to_merge_into->refresh()->consumables->count()); + $this->assertEquals(9, $user_to_merge_into->refresh()->consumables->count()); + $this->assertEquals(0, $user1->refresh()->consumables->count()); + $this->assertEquals(0, $user2->refresh()->consumables->count()); } @@ -116,6 +151,8 @@ class MergeUserTest extends TestCase $this->followRedirects($response)->assertSee('Success'); $this->assertNotEquals(3, $user_to_merge_into->refresh()->uploads->count()); $this->assertEquals(9, $user_to_merge_into->refresh()->uploads->count()); + $this->assertEquals(0, $user1->refresh()->uploads->count()); + $this->assertEquals(0, $user2->refresh()->uploads->count()); } @@ -143,7 +180,41 @@ class MergeUserTest extends TestCase $this->followRedirects($response)->assertSee('Success'); $this->assertNotEquals(3, $user_to_merge_into->refresh()->acceptances->count()); $this->assertEquals(9, $user_to_merge_into->refresh()->acceptances->count()); + $this->assertEquals(0, $user1->refresh()->acceptances->count()); + $this->assertEquals(0, $user2->refresh()->acceptances->count()); } + public function testUserUpdateHistoryIsTransferredOnUserMerge() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + Actionlog::factory()->count(3)->logUserUpdate()->create(['target_id' => $user1->id, 'item_id' => $user1->id]); + Actionlog::factory()->count(3)->logUserUpdate()->create(['target_id' => $user2->id, 'item_id' => $user2->id]); + Actionlog::factory()->count(3)->logUserUpdate()->create(['target_id' => $user_to_merge_into->id, 'item_id' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->userlog->count()); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertNotEquals(3, $user_to_merge_into->refresh()->userlog->count()); + + // This needs to be 2 more than the otherwise expected because the merge action itself is logged for the two merging users + $this->assertEquals(11, $user_to_merge_into->refresh()->userlog->count()); + $this->assertEquals(2, $user1->refresh()->userlog->count()); + $this->assertEquals(2, $user2->refresh()->userlog->count()); + + } + + }