streamedContent())->getRecords()) ->pluck(0) ->contains($needle) ); return $this; } ); TestResponse::macro( 'assertDontSeeTextInStreamedResponse', function (string $needle) { Assert::assertFalse( collect(Reader::createFromString($this->streamedContent())->getRecords()) ->pluck(0) ->contains($needle) ); return $this; } ); } public function testCustomAssetReport() { Asset::factory()->create(['name' => 'Asset A']); Asset::factory()->create(['name' => 'Asset B']); $this->actingAs(User::factory()->canViewReports()->create()) ->post('reports/custom', [ 'asset_name' => '1', 'asset_tag' => '1', 'serial' => '1', ])->assertOk() ->assertHeader('content-type', 'text/csv; charset=UTF-8') ->assertSeeTextInStreamedResponse('Asset A') ->assertSeeTextInStreamedResponse('Asset B'); } public function testCustomAssetReportAdheresToCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); Asset::factory()->for($companyA)->create(['name' => 'Asset A']); Asset::factory()->for($companyB)->create(['name' => 'Asset B']); $superUser = $companyA->users()->save(User::factory()->superuser()->make()); $userInCompanyA = $companyA->users()->save(User::factory()->canViewReports()->make()); $userInCompanyB = $companyB->users()->save(User::factory()->canViewReports()->make()); $this->settings->disableMultipleFullCompanySupport(); $this->actingAs($superUser) ->post('reports/custom', ['asset_name' => '1', 'asset_tag' => '1', 'serial' => '1']) ->assertSeeTextInStreamedResponse('Asset A') ->assertSeeTextInStreamedResponse('Asset B'); $this->actingAs($userInCompanyA) ->post('reports/custom', ['asset_name' => '1', 'asset_tag' => '1', 'serial' => '1']) ->assertSeeTextInStreamedResponse('Asset A') ->assertSeeTextInStreamedResponse('Asset B'); $this->actingAs($userInCompanyB) ->post('reports/custom', ['asset_name' => '1', 'asset_tag' => '1', 'serial' => '1']) ->assertSeeTextInStreamedResponse('Asset A') ->assertSeeTextInStreamedResponse('Asset B'); $this->settings->enableMultipleFullCompanySupport(); $this->actingAs($superUser) ->post('reports/custom', ['asset_name' => '1', 'asset_tag' => '1', 'serial' => '1']) ->assertSeeTextInStreamedResponse('Asset A') ->assertSeeTextInStreamedResponse('Asset B'); $this->actingAs($userInCompanyA) ->post('reports/custom', ['asset_name' => '1', 'asset_tag' => '1', 'serial' => '1']) ->assertSeeTextInStreamedResponse('Asset A') ->assertDontSeeTextInStreamedResponse('Asset B'); $this->actingAs($userInCompanyB) ->post('reports/custom', ['asset_name' => '1', 'asset_tag' => '1', 'serial' => '1']) ->assertDontSeeTextInStreamedResponse('Asset A') ->assertSeeTextInStreamedResponse('Asset B'); } }