5 lines
2.4 KiB
PHP
5 lines
2.4 KiB
PHP
<?php
|
|
require __DIR__.'/sgf-hr-personnel-proof-bootstrap.php';$n=$host->table('hp_versions')->count();$host->beginTransaction();try{$contract=$host->table('hp_versions')->where(['kind'=>'contract','state'=>'approved'])->first();$real=$host->table('hp_versions')->where(['kind'=>'entitlement','state'=>'approved'])->first();$source=json_decode($real->data,true);$unknownKey=null;for($i=0;$i<26;$i++){$key=$uuid();if($i===0)$unknownKey=$key;$data=$source;$data['input']['minutes']=$i===0?null:60;$data['result']=['available_minutes'=>$i===0?null:60];$host->table('hp_versions')->insert(['tenant_id'=>1,'company_id'=>2,'unit_id'=>2,'kind'=>'entitlement','record_key'=>$key,'version'=>1,'action'=>'review','state'=>'approved','prepared_by'=>$hrActor(13),'actor_id'=>$hrActor(14),'preparer_identity'=>str_repeat('0',64),'data'=>json_encode($data),'source_basis'=>str_repeat('0',64),'impact'=>'{}','reason'=>'Fixture SQL de consulta conjunta de saldos, sem condição laboral real.','created_at'=>now()]);}
|
|
$counts=[];foreach([25,100]as$size){$host->enableQueryLog();$host->flushQueryLog();$page=$hpList('entitlement',['worker_key'=>$workerKey,'per_page'=>$size,'page'=>1]);$queries=$host->getQueryLog();$host->disableQueryLog();$counts[$size]=count(array_filter($queries,fn($r)=>str_contains($r['query'],'"hp_versions"')));$ok($counts[$size]===4,'four personnel SQL projections independent of page'.$size);$ok(count($page['records']['data'])===min($size,27),'correct current balance page'.$size);if($size===100){$rows=collect($page['records']['data'])->keyBy('record_key');$ok($rows[$real->record_key]['current_balance']['available_minutes']===0&&$rows[$real->record_key]['current_balance']['reserved_minutes']===480,'actual reviewed reservation projected into current balance');$ok($rows[$real->record_key]['data']['result']['available_minutes']===480,'conserved original condition result unchanged');$ok($rows[$unknownKey]['current_balance']['available_minutes']===null,'unknown initial balance not zero in projection');}}
|
|
}finally{$host->rollBack();}$ok($host->table('hp_versions')->count()===$n,'all26 read-only volume fixtures rolled back');file_put_contents($work.'/hp-current-balances.json',json_encode(['passed'=>true,'checks'=>$checks,'sql_counts'=>$counts,'all_fixtures_rolled_back'=>true,'not_load_benchmark'=>true],JSON_PRETTY_PRINT));echo json_encode(['passed'=>true,'checks'=>count($checks),'proof'=>$work.'/hp-current-balances.json']).PHP_EOL;
|