File manager - Edit - /var/www/html/homologBancodetalentos/tests/Feature/TalentBank/JobApplicantsCsvExportTest.php
Back
<?php namespace Tests\Feature\TalentBank; use App\Models\TalentBank\BusinessLine; use App\Models\TalentBank\Candidate; use App\Models\TalentBank\Candidate\Experience; use App\Models\TalentBank\Candidate\Skill; use App\Models\TalentBank\Company; use App\Models\TalentBank\ContractType; use App\Models\TalentBank\ExpertiseLevel; use App\Models\TalentBank\JobListing; use App\Models\TalentBank\Modality; use App\Models\TalentBank\Neighbourhood; use App\Models\TalentBank\Occupation; use App\Models\TalentBank\SalaryRange; use App\Models\TalentBank\Workload; use App\Support\TalentBank\JobApplicationStatus; use Illuminate\Foundation\Testing\DatabaseTransactions; use Tests\TestCase; class JobApplicantsCsvExportTest extends TestCase { use DatabaseTransactions; protected function setUp(): void { parent::setUp(); config(['talent_bank.bypass_auth' => true]); } public function test_company_can_export_applicants_csv_with_full_candidate_data(): void { $company = $this->createCompany(); $job = $this->createJobForCompany($company); $cpf = $this->generateValidCpf(); $candidate = $this->createCandidateWithProfile($cpf); $job->candidates()->attach($candidate->id, [ 'status' => JobApplicationStatus::VIEWED, ]); config(['talent_bank.bypass_document' => $company->cnpj]); $response = $this->get(route('talent-bank.company.jobs.applicants', [ 'job' => $job->id, 'export' => 'csv', ])); $response->assertOk(); $response->assertHeader('content-type', 'text/csv; charset=UTF-8'); $content = $response->streamedContent(); $this->assertStringContainsString('Nome;CPF;E-mail', $content); $this->assertStringContainsString('Maria CSV Completa', $content); $cpfFormatted = substr($cpf, 0, 3).'.'.substr($cpf, 3, 3).'.'.substr($cpf, 6, 3).'-'.substr($cpf, 9, 2); $this->assertStringContainsString($cpfFormatted, $content); $this->assertStringContainsString('Desenvolvedora @ Empresa Export (Tecnologia)', $content); $this->assertStringContainsString('Detalhe da experiencia', $content); $this->assertStringContainsString('PHP, Excel', $content); $this->assertStringContainsString('Visualizado', $content); } private function createCompany(): Company { return Company::query()->create([ 'cnpj' => $this->generateValidCnpj(), 'corporate_name' => 'Empresa Export CSV LTDA', 'trading_name' => 'Empresa Export CSV', 'email' => 'export.csv+'.uniqid().'@example.com', 'neighbourhood_id' => Neighbourhood::query()->create(['name' => 'Bairro Export '.uniqid()])->id, 'active' => true, ]); } private function createJobForCompany(Company $company): JobListing { return JobListing::query()->create([ 'company_id' => $company->id, 'occupation_id' => Occupation::query()->create(['name' => 'Analista Export '.uniqid()])->id, 'salary_range_id' => SalaryRange::query()->create(['name' => 'Faixa Export '.uniqid()])->id, 'contract_type_id' => ContractType::query()->create(['name' => 'CLT Export '.uniqid()])->id, 'neighbourhood_id' => Neighbourhood::query()->create(['name' => 'Centro Export '.uniqid()])->id, 'expertise_level_id' => ExpertiseLevel::query()->create(['name' => 'Pleno Export '.uniqid()])->id, 'modality_id' => Modality::query()->create(['name' => 'Hibrido Export '.uniqid()])->id, 'workload_id' => Workload::query()->create(['name' => '40h Export '.uniqid()])->id, 'spots_total' => 2, 'description' => 'Vaga para teste de exportacao', 'is_hiring' => true, ]); } private function createCandidateWithProfile(string $cpf): Candidate { $occupation = Occupation::query()->create(['name' => 'Desenvolvedora']); $businessLine = BusinessLine::query()->create(['name' => 'Tecnologia']); $candidate = Candidate::query()->create([ 'cpf' => $cpf, 'name' => 'Maria CSV Completa', 'email' => 'maria.csv+'.uniqid().'@example.com', 'cellphone' => '21988887777', 'cv_summary' => 'Profissional com experiencia em sistemas.', 'occupation_id' => $occupation->id, 'has_experience' => true, 'active' => true, ]); Experience::query()->create([ 'candidate_id' => $candidate->id, 'occupation_id' => $occupation->id, 'business_line_id' => $businessLine->id, 'company' => 'Empresa Export', 'description' => 'Detalhe da experiencia', 'is_current' => true, 'date_start' => '2023-06-01', ]); Skill::query()->create(['candidate_id' => $candidate->id, 'name' => 'PHP']); Skill::query()->create(['candidate_id' => $candidate->id, 'name' => 'Excel']); return $candidate->fresh([ 'occupation', 'experiences.occupation', 'experiences.businessLine', 'skills', ]); } private function generateValidCpf(): string { $digits = []; for ($i = 0; $i < 9; $i++) { $digits[$i] = random_int(0, 9); } for ($t = 9; $t < 11; $t++) { $sum = 0; for ($c = 0; $c < $t; $c++) { $sum += $digits[$c] * (($t + 1) - $c); } $digits[$t] = ((10 * $sum) % 11) % 10; } return implode('', $digits); } private function generateValidCnpj(): string { $base = []; for ($i = 0; $i < 12; $i++) { $base[$i] = random_int(0, 9); } $weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; $sum1 = 0; for ($i = 0; $i < 12; $i++) { $sum1 += $base[$i] * $weights1[$i]; } $digit1 = ($sum1 % 11) < 2 ? 0 : 11 - ($sum1 % 11); $base[] = $digit1; $weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; $sum2 = 0; for ($i = 0; $i < 13; $i++) { $sum2 += $base[$i] * $weights2[$i]; } $digit2 = ($sum2 % 11) < 2 ? 0 : 11 - ($sum2 % 11); $base[] = $digit2; return implode('', $base); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings