
    i	                        d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
mZ ddlZddlmZmZ ddlmZ  G d d          Z G d	 d
          ZdS )zTests for agent_builder CLI.    )annotationsN)Path)build_agent_configAGENT_BUILDER_SYSTEM_PROMPT)AgentConfigc                  "    e Zd ZdZddZdd
ZdS )MockLLMClientz"Mock LLM client for agent builder.responsestrreturnNonec                    || _         d S Nr
   )selfr
   s     ?/root/projects/multi-agents-meeting/tests/test_agent_builder.py__init__zMockLLMClient.__init__   s         systemmessageslist[dict[str, str]]c                    | j         S r   r   )r   r   r   s      r   chatzMockLLMClient.chat   s
    }r   N)r
   r   r   r   )r   r   r   r   r   r   )__name__
__module____qualname____doc__r   r    r   r   r	   r	      sB        ,,! ! ! !     r   r	   c                  *    e Zd ZdZd
dZddZddZd	S )TestBuildAgentConfigz&Tests for build_agent_config function.r   r   c                >   t          j        ddd          }t          |          }t          dd|          }t	          |t
                    }|sdd	t          j                    v st          j	        t                    rt          j
        t                    nd	d
t          j                    v st          j	        |          rt          j
        |          nd
dt          j                    v st          j	        t
                    rt          j
        t
                    ndt          j
        |          dz  }t          t          j        |                    d }|j        }d}||k    }|st          j        d|fd||f          d
t          j                    v st          j	        |          rt          j
        |          nd
t          j
        |          t          j
        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}|j        }d}||k    }|st          j        d|fd||f          d
t          j                    v st          j	        |          rt          j
        |          nd
t          j
        |          t          j
        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}d}
|j        }|
|v }|st          j        d|fd|
|f          t          j
        |
          d
t          j                    v st          j	        |          rt          j
        |          nd
t          j
        |          dz  }dd|iz  }	t          t          j        |	                    d x}
x}}d S )NzChief Product Officerz:You are a demanding product manager focused on simplicity.rolesystem_promptr   
steve_jobsz0Mimics Steve Jobs' demanding product perspective)namedescriptionclientz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstanceconfigr   )py0py1py2py4==)z,%(py2)s
{%(py2)s = %(py0)s.name
} == %(py5)s)r+   r-   py5zassert %(py7)spy7)z,%(py2)s
{%(py2)s = %(py0)s.role
} == %(py5)s
simplicity)in)z5%(py1)s in %(py5)s
{%(py5)s = %(py3)s.system_prompt
})r,   py3r1   )jsondumpsr	   r   r)   r   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprAssertionError_format_explanationr&   _call_reprcomparer#   r$   )r   llm_responsemock_clientr*   @py_assert3@py_format5@py_assert1@py_assert4@py_format6@py_format8@py_assert0@py_assert2s               r   ,test_build_agent_config_returns_agent_configzATestBuildAgentConfig.test_build_agent_config_returns_agent_config   s    z+Y#
 #
   $\:::#Cu  J  K  K  K&+...............z.....z.............&.....&.............+.....+........................{*l*{l**********{l************v*****v******{****l***************************{555{55555555555{5555555555555v55555v555555{555555555555555555555555555555553v33|33333333333|333333|33333333333v33333v333333333333333333333333333333333333r   tmp_pathr   c                "   t          j        ddd          }t          |          }t          dd||d          }|d	z  }|j        } |            }|sd
dt          j                    v st          j        |          rt          j	        |          ndt          j	        |          t          j	        |          dz  }t          t          j        |                    d x}}t          j        |                    d                    }	|	d         }
d}|
|k    }|slt          j        d|fd|
|f          t          j	        |
          t          j	        |          dz  }dd|iz  }t          t          j        |                    d x}
x}}d S )N	ArchitectzYou are an architect.r"   r   archzSoftware architectr6   r&   r'   r(   
output_dirfmtz	arch.jsonAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}output_pathr+   r-   r.   utf-8encodingr&   r/   z%(py1)s == %(py4)sr,   r.   assert %(py6)spy6)r6   r7   r	   r   existsr8   r9   r:   r;   r<   r=   r>   loads	read_textr?   r   rK   r@   rA   r*   rS   rD   rB   rC   loadedrH   rI   @py_format7s                r   "test_build_agent_config_saves_jsonz7TestBuildAgentConfig.test_build_agent_config_saves_json'   s   z;I`"a"abb#\:::#=QZerz  AG  H  H  H,!#!!###############{#####{######!########################K1171CCDDf~''~''''''''''~'''''~'''''''''''''''''''''''''''''''''r   c                "   t          j        ddd          }t          |          }t          dd||d          }|d	z  }|j        } |            }|sd
dt          j                    v st          j        |          rt          j	        |          ndt          j	        |          t          j	        |          dz  }t          t          j        |                    d x}}t          j        |                    d                    }	|	d         }
d}|
|k    }|slt          j        d|fd|
|f          t          j	        |
          t          j	        |          dz  }dd|iz  }t          t          j        |                    d x}
x}}d S )NDevOpszYou are DevOps.r"   r   devopszDevOps engineeryamlrO   zdevops.yamlrR   rS   rT   rU   rV   r&   r/   rX   rY   rZ   r[   )r6   r7   r	   r   r\   r8   r9   r:   r;   r<   r=   r>   rf   	safe_loadr^   r?   r_   s                r   "test_build_agent_config_saves_yamlz7TestBuildAgentConfig.test_build_agent_config_saves_yaml0   s   z8FW"X"XYY#\:::#?PYdqy  @F  G  G  G.!#!!###############{#####{######!######################## 5 5w 5 G GHHf~))~))))))))))~)))))~)))))))))))))))))))))))))))))))))r   N)r   r   )rK   r   r   r   )r   r   r   r   rJ   rb   rh   r   r   r   r    r       sV        00
4 
4 
4 
4( ( ( (* * * * * *r   r    )r   
__future__r   builtinsr8   _pytest.assertion.rewrite	assertionrewriter:   r6   pathlibr   rf   agent_builderr   r   
src.modelsr   r	   r    r   r   r   <module>rq      s    " " " " " " " "                      I I I I I I I I " " " " " "       * * * * * * * * * *r   