From 76cc5995d9a311b706b6d2ed3f54fbadf1a7eb1b Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Feb 2024 12:38:33 -0800 Subject: [PATCH 1/3] Write tests around getIdForCurrentUser method [sc-24748] --- .../Unit/{ => Models/Company}/CompanyTest.php | 2 +- .../Company/GetIdForCurrentUserTest.php | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) rename tests/Unit/{ => Models/Company}/CompanyTest.php (92%) create mode 100644 tests/Unit/Models/Company/GetIdForCurrentUserTest.php diff --git a/tests/Unit/CompanyTest.php b/tests/Unit/Models/Company/CompanyTest.php similarity index 92% rename from tests/Unit/CompanyTest.php rename to tests/Unit/Models/Company/CompanyTest.php index 6e04504843..6fd17e554b 100644 --- a/tests/Unit/CompanyTest.php +++ b/tests/Unit/Models/Company/CompanyTest.php @@ -1,5 +1,5 @@ settings->disableMultipleFullCompanySupport(); + + $this->actingAs(User::factory()->create()); + $this->assertEquals(1000, Company::getIdForCurrentUser(1000)); + } + + public function testReturnsProvidedValueForSuperUsersWhenFullCompanySupportEnabled() + { + $this->settings->enableMultipleFullCompanySupport(); + + $this->actingAs(User::factory()->superuser()->create()); + $this->assertEquals(2000, Company::getIdForCurrentUser(2000)); + } + + public function testReturnsNonSuperUsersCompanyIdWhenFullCompanySupportEnabled() + { + $this->settings->enableMultipleFullCompanySupport(); + + $this->actingAs(User::factory()->forCompany(['id' => 2000])->create()); + $this->assertEquals(2000, Company::getIdForCurrentUser(1000)); + } + + public function testReturnsProvidedValueForNonSuperUserWithoutCompanyIdWhenFullCompanySupportEnabled() + { + $this->settings->enableMultipleFullCompanySupport(); + + $this->actingAs(User::factory()->create(['company_id' => null])); + $this->assertEquals(1000, Company::getIdForCurrentUser(1000)); + } +} From 9e6e2de71eaed34dcfb5be0deb974412706aba48 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Feb 2024 12:49:29 -0800 Subject: [PATCH 2/3] Add docblock --- app/Models/Company.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/Models/Company.php b/app/Models/Company.php index c3a2fdae7f..60a8022ed7 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -113,6 +113,14 @@ final class Company extends SnipeModel } } + /** + * Get the company id for the current user taking into + * account the full multiple company support setting + * and if the current user is a super user. + * + * @param $unescaped_input + * @return int|mixed|string|null + */ public static function getIdForCurrentUser($unescaped_input) { if (! static::isFullMultipleCompanySupportEnabled()) { From a43183ff964d2c826fda77a173046916137fe6be Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 6 Feb 2024 09:09:27 +0000 Subject: [PATCH 3/3] Increased chunk Signed-off-by: snipe --- app/Http/Controllers/SettingsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 7c9924f7c6..3ba114b43d 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -640,7 +640,7 @@ class SettingsController extends Controller $audit_diff_months = ((int)$request->input('audit_interval') - (int)($setting->audit_interval)); // Grab all assets that have an existing next_audit_date, chunking to handle very large datasets - Asset::whereNotNull('next_audit_date')->chunk(20, function ($assets) use ($audit_diff_months) { + Asset::whereNotNull('next_audit_date')->chunk(200, function ($assets) use ($audit_diff_months) { // Update assets' next_audit_date values foreach ($assets as $asset) {