Files
compras/tests/Support/ProposalOpeningFixture.php
T

29 lines
1.9 KiB
PHP

<?php
use App\Models\PurchaseAward;
use App\Models\Quotation;
use App\Services\ProposalOpeningWorkflow;
use Carbon\CarbonImmutable;
use Illuminate\Support\Facades\DB;
require_once __DIR__.'/ReceiptFixture.php';
/** receiptFixture refuses execution outside the isolated test database. */
function proposalOpeningFixture(): array
{
$f = receiptFixture();
auth()->guard()->setUser($f['issuer']);
$award = PurchaseAward::query()->findOrFail($f['order']->purchase_award_id);
$awardAttributes = $award->getAttributes();
unset($awardAttributes['id']);
DB::table('purchase_order_items')->where('purchase_order_id', $f['order']->id)->delete();
DB::table('purchase_orders')->where('id', $f['order']->id)->delete();
DB::table('purchase_awards')->where('id', $award->id)->delete();
$quote = Quotation::query()->where('requisition_id', $f['r']->id)->firstOrFail();
$workflow = app(ProposalOpeningWorkflow::class);
$data = ['previous_id' => 0, 'basis_hash' => $workflow->basis($workflow->proposals($f['r'])), 'opened_at' => now()->subMinute()->timezone('Africa/Johannesburg')->format('Y-m-d\TH:i'), 'timezone' => 'Africa/Johannesburg', 'submission_deadline' => null, 'reference' => 'ABERTURA-FICTICIA', 'location' => 'Sala exclusivamente fictícia', 'reason' => 'Registo exclusivamente fictício de teste', 'notes' => 'Observações fictícias', 'quotation_ids' => [$quote->id], 'participants' => [['name' => 'Participante fictício', 'capacity' => 'Secretariado de teste', 'group' => 'participant']], 'annexes' => ['Lista fictícia de presenças'], 'confirmed' => true];
$serviceData = [...$data, 'opened_at' => CarbonImmutable::createFromFormat('!Y-m-d\TH:i', $data['opened_at'], $data['timezone'])->utc()->format('Y-m-d H:i:s')];
return [...$f, 'quote' => $quote, 'data' => $data, 'service_data' => $serviceData, 'award_attributes' => $awardAttributes];
}