32 lines
1.9 KiB
PHP
32 lines
1.9 KiB
PHP
<?php
|
|
|
|
use App\Enums\PurchasingRole;
|
|
use App\Models\User;
|
|
use App\Services\DocumentaryQualificationWorkflow;
|
|
use App\Services\FormalAdmission;
|
|
|
|
require_once __DIR__.'/QualificationFixture.php';
|
|
|
|
/** Synthetic data only; the underlying fixture enforces an isolated database. */
|
|
function admissionFixture(int $quorum = 2): array
|
|
{
|
|
$f = qualificationFixture();
|
|
$admin = User::factory()->create(['tenant_id' => $f['tenant']->id, 'purchasing_role' => PurchasingRole::Admin]);
|
|
$buyer = User::factory()->create(['tenant_id' => $f['tenant']->id, 'purchasing_role' => PurchasingRole::Procurement]);
|
|
auth()->guard()->setUser($f['issuer']);
|
|
$set = app(DocumentaryQualificationWorkflow::class)->define($f['issuer'], $f['r'], $f['definition']);
|
|
$assessment = $f['assessment'];
|
|
$assessment['answers'][1] = ['criterion_id' => 2, 'result' => 'met', 'evidence' => 'Referência fictícia 2', 'reason' => 'Conformidade conferida em teste isolado'];
|
|
auth()->guard()->setUser($f['analyst']);
|
|
$record = app(DocumentaryQualificationWorkflow::class)->assess($f['analyst'], $set, $assessment);
|
|
$workflow = app(FormalAdmission::class);
|
|
$policyData = ['previous_id' => 0, 'enabled' => true, 'roles' => ['finance'], 'required_count' => $quorum, 'reason' => 'Configuração exclusivamente fictícia'];
|
|
auth()->guard()->setUser($admin);
|
|
$policy = $workflow->policy($admin, $policyData);
|
|
auth()->guard()->setUser($buyer);
|
|
$adoption = $workflow->adopt($buyer, $f['r'], $policy->id, 0, 'Adopção exclusivamente fictícia');
|
|
$proposal = ['quotation_id' => $f['quote']->id, 'previous_id' => 0, 'basis_hash' => $workflow->basis($f['r'], $f['quote']->id)['hash'], 'outcome' => 'admit', 'reason' => 'Proposta exclusivamente fictícia'];
|
|
|
|
return [...$f, 'admin' => $admin, 'buyer' => $buyer, 'set' => $set, 'record' => $record, 'assessment' => $assessment, 'policy' => $policy, 'policy_data' => $policyData, 'adoption' => $adoption, 'proposal' => $proposal];
|
|
}
|