33from typing import List
44
55import pytest
6- from pydantic import BaseModel
6+ from pydantic import BaseModel , ValidationError
77
88from codegate .db import connection
99from codegate .muxing .persona import (
@@ -54,7 +54,7 @@ async def test_add_persona(semantic_router_mocked_db: PersonaManager):
5454 persona_name = "test_persona"
5555 persona_desc = "test_persona_desc"
5656 await semantic_router_mocked_db .add_persona (persona_name , persona_desc )
57- retrieved_persona = await semantic_router_mocked_db ._db_reader . get_persona_by_name (persona_name )
57+ retrieved_persona = await semantic_router_mocked_db .get_persona (persona_name )
5858 assert retrieved_persona .name == persona_name
5959 assert retrieved_persona .description == persona_desc
6060
@@ -72,6 +72,18 @@ async def test_add_duplicate_persona(semantic_router_mocked_db: PersonaManager):
7272 await semantic_router_mocked_db .add_persona (persona_name , updated_description )
7373
7474
75+ @pytest .mark .asyncio
76+ async def test_add_persona_invalid_name (semantic_router_mocked_db : PersonaManager ):
77+ """Test adding a persona to the database."""
78+ persona_name = "test_persona&"
79+ persona_desc = "test_persona_desc"
80+ with pytest .raises (ValidationError ):
81+ await semantic_router_mocked_db .add_persona (persona_name , persona_desc )
82+
83+ with pytest .raises (PersonaDoesNotExistError ):
84+ await semantic_router_mocked_db .delete_persona (persona_name )
85+
86+
7587@pytest .mark .asyncio
7688async def test_persona_not_exist_match (semantic_router_mocked_db : PersonaManager ):
7789 """Test checking persona match when persona does not exist"""
@@ -235,7 +247,7 @@ class PersonaMatchTest(BaseModel):
235247
236248# DevOps/SRE Engineer Persona
237249devops_sre = PersonaMatchTest (
238- persona_name = "devops/ sre engineer" ,
250+ persona_name = "devops sre engineer" ,
239251 persona_desc = """
240252 Expert in infrastructure automation, deployment pipelines, and operational reliability.
241253 Specializes in building and maintaining scalable, resilient, and secure infrastructure.
@@ -441,8 +453,8 @@ async def test_delete_persona(semantic_router_mocked_db: PersonaManager):
441453
442454 await semantic_router_mocked_db .delete_persona (persona_name )
443455
444- persona_found = await semantic_router_mocked_db . _db_reader . get_persona_by_name ( persona_name )
445- assert persona_found is None
456+ with pytest . raises ( PersonaDoesNotExistError ):
457+ await semantic_router_mocked_db . get_persona ( persona_name )
446458
447459
448460@pytest .mark .asyncio
@@ -451,3 +463,28 @@ async def test_delete_persona_not_exists(semantic_router_mocked_db: PersonaManag
451463
452464 with pytest .raises (PersonaDoesNotExistError ):
453465 await semantic_router_mocked_db .delete_persona (persona_name )
466+
467+
468+ @pytest .mark .asyncio
469+ async def test_get_personas (semantic_router_mocked_db : PersonaManager ):
470+ """Test getting personas from the database."""
471+ persona_name = "test_persona"
472+ persona_desc = "test_persona_desc"
473+ await semantic_router_mocked_db .add_persona (persona_name , persona_desc )
474+
475+ persona_name_2 = "test_persona_2"
476+ persona_desc_2 = "foo and bar"
477+ await semantic_router_mocked_db .add_persona (persona_name_2 , persona_desc_2 )
478+
479+ all_personas = await semantic_router_mocked_db .get_all_personas ()
480+ assert len (all_personas ) == 2
481+ assert all_personas [0 ].name == persona_name
482+ assert all_personas [1 ].name == persona_name_2
483+
484+
485+ @pytest .mark .asyncio
486+ async def test_get_personas_empty (semantic_router_mocked_db : PersonaManager ):
487+ """Test adding a persona to the database."""
488+
489+ all_personas = await semantic_router_mocked_db .get_all_personas ()
490+ assert len (all_personas ) == 0
0 commit comments