/ chat_workflow / tests / test_simple_chat.py
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"