import json import os import pytest from dotenv import load_dotenv from swarm_models import OpenAIChat from swarms.structs import BaseWorkflow load_dotenv() api_key = os.environ.get("OPENAI_API_KEY") def setup_workflow(): llm = OpenAIChat(openai_api_key=api_key) workflow = BaseWorkflow(max_loops=1) workflow.add("What's the weather in miami", llm) workflow.add("Create a report on these metrics", llm) workflow.save_workflow_state("workflow_state.json") return workflow def teardown_workflow(): os.remove("workflow_state.json") def test_load_workflow_state(): workflow = setup_workflow() workflow.load_workflow_state("workflow_state.json") assert workflow.max_loops == 1 assert len(workflow.tasks) == 2 assert ( workflow.tasks[0].description == "What's the weather in miami" ) assert ( workflow.tasks[1].description == "Create a report on these metrics" ) teardown_workflow() def test_load_workflow_state_with_missing_file(): workflow = setup_workflow() with pytest.raises(FileNotFoundError): workflow.load_workflow_state("non_existent_file.json") teardown_workflow() def test_load_workflow_state_with_invalid_file(): workflow = setup_workflow() with open("invalid_file.json", "w") as f: f.write("This is not valid JSON") with pytest.raises(json.JSONDecodeError): workflow.load_workflow_state("invalid_file.json") os.remove("invalid_file.json") teardown_workflow() def test_load_workflow_state_with_missing_keys(): workflow = setup_workflow() with open("missing_keys.json", "w") as f: json.dump({"max_loops": 1}, f) with pytest.raises(KeyError): workflow.load_workflow_state("missing_keys.json") os.remove("missing_keys.json") teardown_workflow()