<?php
use PHPUnit\Framework\TestCase;
use app\p\service\MenuNutritionRecommendations;
class RecommendationOptimalityTest extends TestCase {
 public function testUnusedBetterCandidateCanReplaceWorseTagCandidateAfterStructuralQuotaIsFull(){
  $pool=[];$ingredients=[];
  for($i=1;$i<=7;$i++){
   $pool[]=['id'=>$i,'uuid'=>'d'.$i,'name'=>'菜'.$i,'category_one'=>6,'weight'=>100,'fat'=>2,'protein'=>10,'dietary_fiber'=>13-$i,'purine'=>20,'gl'=>0,'cook_method'=>1,'tags'=>['dietary_fiber:1']];
   $ingredients[]=['dishes_uuid'=>'d'.$i,'composition_name'=>$i<=4?'菠菜':'白菜','composition_ratio'=>100,'category'=>6,'minute_sort'=>$i<=4?38:39];
  }
  $plan=(new MenuNutritionRecommendations)->build($pool,$ingredients,[],'2026-10-12','2026-10-12',['vegetable'=>['reasonable'=>false]]);
  $this->assertSame(['d1','d2','d3'],array_column($plan[0]['groups']['vegetable']['list'],'dish_id'));
  $this->assertSame(['d4','d5','d6'],array_column($plan[0]['groups']['tag_vegetable']['list'],'dish_id'));
 }
}
