import json import pytest from py.recipes.parsers.recipe_format import RecipeFormatParser @pytest.mark.asyncio async def test_recipe_format_parser_populates_checkpoint(monkeypatch): checkpoint_info = { "id": 777111, "modelId": 333222, "model": {"name": "Z Image", "type": "checkpoint"}, "name": "Turbo", "images": [{"url": "https://image.civitai.com/checkpoints/original=true"}], "baseModel": "sdxl", "downloadUrl": "https://civitai.com/api/download/checkpoint", "files": [ { "type": "Model", "primary": True, "sizeKB": 2048, "name": "Z_Image_Turbo.safetensors", "hashes": {"SHA256": "ABC123FF"}, } ], } async def fake_metadata_provider(): class Provider: async def get_model_version_info(self, version_id): assert version_id == "777111" return checkpoint_info, None return Provider() monkeypatch.setattr( "py.recipes.parsers.recipe_format.get_default_metadata_provider", fake_metadata_provider, ) parser = RecipeFormatParser() recipe_metadata = { "title": "Z Recipe", "base_model": "", "loras": [], "gen_params": {"steps": 20}, "tags": ["test"], "checkpoint": { "modelVersionId": 777111, "modelId": 333222, "name": "Z Image", "version": "Turbo", }, } metadata_text = f"Recipe metadata: {json.dumps(recipe_metadata)}" result = await parser.parse_metadata(metadata_text) checkpoint = result.get("checkpoint") assert checkpoint is not None assert checkpoint["name"] == "Z Image" assert checkpoint["version"] == "Turbo" assert checkpoint["hash"] == "abc123ff" assert checkpoint["file_name"] == "Z_Image_Turbo" assert result["base_model"] == "sdxl" assert result["model"] == checkpoint