test_simple_chat.py
1 import pytest 2 from chainlit.input_widget import Select 3 from chat_workflow.workflows.simple_chat import SimpleChatWorkflow, GraphState 4 5 6 @pytest.fixture 7 def simple_chat_workflow(): 8 return SimpleChatWorkflow() 9 10 11 def test_workflow_initialization(simple_chat_workflow): 12 assert isinstance(simple_chat_workflow, SimpleChatWorkflow) 13 assert len(simple_chat_workflow.tools) > 0 14 15 16 def test_create_default_state(simple_chat_workflow): 17 state = simple_chat_workflow.create_default_state() 18 assert isinstance(state, dict) 19 assert state["name"] == "Simple Chat" 20 assert state["messages"] == [] 21 assert state["chat_model"] == "" 22 23 24 def test_workflow_name(): 25 assert SimpleChatWorkflow.name() == "Simple Chat" 26 27 28 def test_chat_profile(): 29 profile = SimpleChatWorkflow.chat_profile() 30 assert profile.name == "Simple Chat" 31 assert profile.markdown_description == "A ChatGPT-like chatbot." 32 assert profile.default is True 33 assert len(profile.starters) == 3 34 35 36 def test_chat_settings(simple_chat_workflow): 37 settings = simple_chat_workflow.chat_settings 38 assert len(settings.inputs) == 1 39 assert isinstance(settings.inputs[0], Select) 40 assert settings.inputs[0].id == "chat_model" 41 42 43 def test_create_graph(simple_chat_workflow): 44 graph = simple_chat_workflow.create_graph() 45 assert graph is not None 46 assert "chat" in graph.nodes 47 assert "tools" in graph.nodes 48 49 50 @pytest.mark.asyncio 51 async def test_chat_node(): 52 workflow = SimpleChatWorkflow() 53 state = GraphState( 54 name="Simple Chat", 55 messages=[], 56 chat_model="(openai)gpt-4o-mini" # Use an appropriate test model 57 ) 58 config = {"configurable": {"session_id": "test_session"}} 59 60 result = await workflow.chat_node(state, config) 61 assert isinstance(result, dict) 62 assert "messages" in result 63 64 65 def test_graph_state(): 66 state = GraphState( 67 name="Simple Chat", 68 messages=[], 69 chat_model="(openai)gpt-4o-mini" 70 ) 71 assert state["name"] == "Simple Chat" 72 assert len(state["messages"]) == 0 73 assert state["chat_model"] == "(openai)gpt-4o-mini"