create(['company_id' => $company->id, 'name' => 'Asset-'.$company->id]); $acceptance = CheckoutAcceptance::factory()->pending()->for($asset, 'checkoutable')->create(); return [$asset, $acceptance]; } public function test_page_render_hides_other_company_pending_acceptances_under_fmcs() { $this->settings->enableMultipleFullCompanySupport(); [$companyA, $companyB] = Company::factory()->count(2)->create(); [$assetA] = $this->seedPendingAcceptanceOwnedBy($companyA); [$assetB] = $this->seedPendingAcceptanceOwnedBy($companyB); $reporterA = User::factory()->canViewReports()->forCompany($companyA)->create(); $response = $this->actingAs($reporterA) ->get(route('reports/unaccepted_assets')) ->assertOk(); $this->assertStringContainsString($assetA->name, $response->getContent()); $this->assertStringNotContainsString($assetB->name, $response->getContent()); } public function test_csv_export_hides_other_company_pending_acceptances_under_fmcs() { $this->settings->enableMultipleFullCompanySupport(); [$companyA, $companyB] = Company::factory()->count(2)->create(); [$assetA] = $this->seedPendingAcceptanceOwnedBy($companyA); [$assetB] = $this->seedPendingAcceptanceOwnedBy($companyB); $reporterA = User::factory()->canViewReports()->forCompany($companyA)->create(); $response = $this->actingAs($reporterA) ->post(route('reports/export/unaccepted_assets')) ->assertOk(); $body = $response->getContent(); $this->assertStringContainsString($assetA->name, $body); $this->assertStringNotContainsString($assetB->name, $body); } public function test_superuser_sees_all_company_pending_acceptances_in_page() { $this->settings->enableMultipleFullCompanySupport(); [$companyA, $companyB] = Company::factory()->count(2)->create(); [$assetA] = $this->seedPendingAcceptanceOwnedBy($companyA); [$assetB] = $this->seedPendingAcceptanceOwnedBy($companyB); $superuser = User::factory()->superuser()->forCompany($companyA)->create(); $response = $this->actingAs($superuser) ->get(route('reports/unaccepted_assets')) ->assertOk(); $this->assertStringContainsString($assetA->name, $response->getContent()); $this->assertStringContainsString($assetB->name, $response->getContent()); } public function test_superuser_sees_all_company_pending_acceptances_in_csv() { $this->settings->enableMultipleFullCompanySupport(); [$companyA, $companyB] = Company::factory()->count(2)->create(); [$assetA] = $this->seedPendingAcceptanceOwnedBy($companyA); [$assetB] = $this->seedPendingAcceptanceOwnedBy($companyB); $superuser = User::factory()->superuser()->forCompany($companyA)->create(); $response = $this->actingAs($superuser) ->post(route('reports/export/unaccepted_assets')) ->assertOk(); $body = $response->getContent(); $this->assertStringContainsString($assetA->name, $body); $this->assertStringContainsString($assetB->name, $body); } public function test_fmcs_disabled_leaves_report_unscoped() { // With FMCS off the helper short-circuits and every row passes. // Guard against future refactors that accidentally add scoping on // installs that do not have FMCS enabled. [$companyA, $companyB] = Company::factory()->count(2)->create(); [$assetA] = $this->seedPendingAcceptanceOwnedBy($companyA); [$assetB] = $this->seedPendingAcceptanceOwnedBy($companyB); $reporterA = User::factory()->canViewReports()->forCompany($companyA)->create(); $response = $this->actingAs($reporterA) ->get(route('reports/unaccepted_assets')) ->assertOk(); $this->assertStringContainsString($assetA->name, $response->getContent()); $this->assertStringContainsString($assetB->name, $response->getContent()); } }