| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- from sqlalchemy.orm import Session
- from app import crud, schemas
- def test_crud_user(db: Session):
- user_in = schemas.UserCreate(username="cruduser", password="password", role="user")
- user = crud.create_user(db, user_in)
- assert user.username == "cruduser"
- assert hasattr(user, "id")
-
- fetched = crud.get_user_by_username(db, "cruduser")
- assert fetched.id == user.id
- def test_crud_persona_lifecycle(db: Session):
- # Setup user
- u = crud.create_user(db, schemas.UserCreate(username="p_owner", password="pw", role="user"))
-
- # Create
- p_in = schemas.PersonaCreate(
- name="P1", bio="Bio", theories=["T1"], stance="S1", system_prompt="SP", is_public=True
- )
- persona = crud.create_persona(db, p_in, owner_id=u.id)
- assert persona.name == "P1"
- assert persona.theories == ["T1"]
-
- # Read
- fetched = crud.get_persona(db, persona.id)
- assert fetched.name == "P1"
- assert fetched.theories == ["T1"]
-
- # Update
- update_in = schemas.PersonaUpdate(name="P1_Updated", theories=["T2"])
- updated = crud.update_persona(db, persona.id, update_in)
- assert updated.name == "P1_Updated"
- assert updated.theories == ["T2"]
-
- # Update non-existent
- assert crud.update_persona(db, 999, update_in) is None
-
- # Delete
- assert crud.delete_persona(db, persona.id) is True
- assert crud.get_persona(db, persona.id) is None
-
- # Delete non-existent
- assert crud.delete_persona(db, 999) is True
- def test_crud_forum_lifecycle(db: Session):
- u = crud.create_user(db, schemas.UserCreate(username="f_creator", password="pw", role="user"))
- p = crud.create_persona(db, schemas.PersonaCreate(name="P", bio="B", theories=[], is_public=True), owner_id=u.id)
-
- # Create
- f_in = schemas.ForumCreate(topic="Topic", participant_ids=[p.id])
- forum = crud.create_forum(db, f_in, creator_id=u.id)
- assert forum.topic == "Topic"
-
- # Read
- fetched = crud.get_forum(db, forum.id)
- assert fetched.id == forum.id
-
- # Message
- m_in = schemas.MessageCreate(
- forum_id=forum.id, persona_id=p.id, speaker_name="P", content="Hello", turn_count=1
- )
- msg = crud.create_message(db, m_in)
- assert msg.content == "Hello"
-
- # Get Messages
- msgs = crud.get_forum_messages(db, forum.id)
- assert len(msgs) == 1
- assert msgs[0].content == "Hello"
- def test_persona_json_parsing_edge_cases(db: Session):
- # Test internal JSON handling if manually manipulated (less critical for pure CRUD but good for coverage)
- # The CRUD function handles string -> list conversion.
- # We can simulate a DB state where theories is a string.
- u = crud.create_user(db, schemas.UserCreate(username="json_user", password="pw", role="user"))
- p_in = schemas.PersonaCreate(name="BadJSON", bio="B", theories=[], is_public=True)
- p = crud.create_persona(db, p_in, owner_id=u.id)
-
- # Manually corrupt theories to invalid JSON string
- db.execute("UPDATE personas SET theories = ? WHERE id = ?", ["invalid json", p.id])
-
- from app.crud import get_persona
- db_p = get_persona(db, p.id)
- assert db_p.theories == "invalid json"
|