import 'package:flutter_test/flutter_test.dart'; import 'package:fikoyt_studyo/comfy/workflow/resim_workflow.dart'; void main() { test('temel Flux T2I grafiği doğru', () { final w = resimWorkflowOlustur(ResimParametreleri( prompt: 'a cat', seed: 7, genislik: 768, yukseklik: 1024, guidance: 3.5, )); expect(w['1']['inputs']['ckpt_name'], 'flux1-dev-fp8-all-in-one.safetensors'); expect(w['2']['inputs']['text'], 'a cat'); expect(w['3']['inputs']['guidance'], 3.5); expect(w['4']['inputs']['width'], 768); expect(w['4']['inputs']['height'], 1024); expect(w['6']['inputs']['seed'], 7); expect(w['8']['class_type'], 'SaveImage'); // LoRA yoksa LoraLoader düğümü olmamalı expect(w.containsKey('20'), isFalse); }); test('LoRA stack model+clip zincirine eklenir, trigger prompta girer', () { final w = resimWorkflowOlustur(ResimParametreleri( prompt: 'a woman', loralar: const [ LoraSecimi('Zekiye_FikoYT.safetensors', guc: 0.8, trigger: 'zekiye'), LoraSecimi('NSFW_master_Flux.safetensors', guc: 0.5), ], )); // İlk LoRA checkpoint'ten beslenir expect(w['20']['class_type'], 'LoraLoader'); expect(w['20']['inputs']['lora_name'], 'Zekiye_FikoYT.safetensors'); expect(w['20']['inputs']['strength_model'], 0.8); expect(w['20']['inputs']['model'], ['1', 0]); // İkinci LoRA ilk LoRA'dan beslenir (zincir) expect(w['21']['inputs']['model'], ['20', 0]); expect(w['21']['inputs']['clip'], ['20', 1]); // CLIPTextEncode son LoRA clip'inden beslenir expect(w['2']['inputs']['clip'], ['21', 1]); // KSampler son LoRA model'inden expect(w['6']['inputs']['model'], ['21', 0]); // Trigger word prompta eklenir expect(w['2']['inputs']['text'], contains('zekiye')); }); test('json round-trip (lora dahil)', () { final p = ResimParametreleri( prompt: 'test', seed: 5, loralar: const [LoraSecimi('a.safetensors', guc: 0.7, trigger: 't')], ); final geri = ResimParametreleri.fromJson(p.toJson()); expect(geri.prompt, 'test'); expect(geri.seed, 5); expect(geri.loralar.length, 1); expect(geri.loralar.first.dosya, 'a.safetensors'); expect(geri.loralar.first.guc, 0.7); expect(geri.loralar.first.trigger, 't'); }); }