<?php
require __DIR__.'/gate.php';require __DIR__.'/dispatch-gate.php';$uuid='AAAA1111-BBBB-2222-CCCC-123456789ABC';$name='CDXNW11D6A2-time-extra-evidence';$params=['name'=>$name,'order_no'=>'620003','function'=>'CDXNW11D6A2-extra-evidence'];$ctx=['case'=>1,'label'=>'E1','lane'=>'B','table'=>'nutrition_time','op'=>'INSERT','fields'=>$params,'creator_sha'=>hash('sha256','actor'),'nonce'=>'known','expected_nonce'=>'known'];$insert='INSERT INTO `ydy_nutrition_time` (`name`,`order_no`,`function`,`create_by`,`uuid`,`create_time`) VALUES (:n,:o,:f,:c,:u,:t)';$bind=[];foreach(['n'=>$name,'o'=>'620003','f'=>$params['function'],'c'=>'actor','u'=>$uuid,'t'=>date('Y-m-d H:i:s')] as $key=>$value)$bind[':'.$key]=['value'=>$value,'type'=>2];$checks=0;$assert=function($ok,$name)use(&$checks){++$checks;if(!$ok)throw new RuntimeException($name);};$owned=function($table,$id,$insert){return $insert?0:1;};$assert(cdxWriteGate($insert,$bind,null,$ctx,$owned)==='INSERT','Exact extra INSERT');$ctx=['case'=>11,'label'=>'E2','lane'=>'B','table'=>'nutrition_time','op'=>'UPDATE','fields'=>['del_flag'=>'1'],'uuid'=>$uuid,'nonce'=>'known','expected_nonce'=>'known'];$sql='UPDATE `ydy_nutrition_time` SET `del_flag`=:d WHERE `uuid` IN (:u)';$bind=[':d'=>['value'=>'1','type'=>1],':u'=>['value'=>$uuid,'type'=>2]];$assert(cdxWriteGate($sql,$bind,null,$ctx,$owned)==='UPDATE','Extra sole UUID softdelete IN');foreach(['main UUID'=>[':u'=>['value'=>'ORIGINAL-MAIN-UUID','type'=>2]],'wrong softdelete'=>[':d'=>['value'=>'0','type'=>1]]] as $name=>$change){$rejected=false;try{cdxWriteGate($sql,array_replace($bind,$change),null,$ctx,$owned);}catch(Throwable $e){$rejected=true;}$assert($rejected,'Reject '.$name);}$case=['step'=>1,'label'=>'E1','table'=>'nutrition_time','action'=>'add','path'=>'/p/nutrition_time/add','params'=>$params];$request=['case'=>$case,'nonce'=>'known','token'=>'dummy'];$assert(cdxDispatchGate($request,'POST',$case['path'],$params,'known','dummy'),'Exact extra form');$assert(!cdxDispatchGate($request,'POST',$case['path'],array_replace($params,['name'=>'CDXNW11D6A2-time-A']),'known','dummy'),'Reject original main replay as extra');echo json_encode(['passed'=>true,'assertions'=>$checks,'HTTP'=>0,'DML'=>0,'DDL'=>0]),"\n";
