Add the tests for the read methods for the photo service

This commit is contained in:
Gustavo Henrique Santos Souza de Miranda 2025-07-21 02:48:04 -03:00
parent 5d0d4fc5ac
commit 32b1c24846
2 changed files with 76 additions and 0 deletions

View File

@ -2,6 +2,7 @@ import pytest
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from pilgrim import Photo
from pilgrim.database import Base
from pilgrim.models.travel_diary import TravelDiary
@ -34,3 +35,26 @@ def session_with_one_diary(db_session):
db_session.commit()
db_session.refresh(diary)
return db_session, diary
@pytest.fixture
def session_with_photos(session_with_one_diary):
"""
Fixture que usa a session_with_one_diary e adiciona duas fotos a ela.
"""
session, diary = session_with_one_diary
photo1 = Photo(
filepath=f"/fake/{diary.directory_name}/p1.jpg", name="Foto 1",
photo_hash="hash1", fk_travel_diary_id=diary.id
)
photo2 = Photo(
filepath=f"/fake/{diary.directory_name}/p2.jpg", name="Foto 2",
photo_hash="hash2", fk_travel_diary_id=diary.id
)
session.add_all([photo1, photo2])
session.commit()
# Retornamos a sessão e os objetos criados para que os testes possam usá-los
return session, [photo1, photo2]

View File

@ -54,3 +54,55 @@ def test_create_photo_returns_none_if_hash_exists(mock_hash, mock_copy, session_
)
assert new_photo is None
mock_copy.assert_not_called()
def test_read_by_id_successfully(session_with_photos):
session, photos = session_with_photos
service = PhotoService(session)
photo_to_find_id = photos[0].id
found_photo = service.read_by_id(photo_to_find_id)
assert found_photo is not None
assert found_photo.id == photo_to_find_id
assert found_photo.name == "Foto 1"
def test_read_by_id_returns_none_for_invalid_id(db_session):
service = PhotoService(db_session)
result = service.read_by_id(999)
assert result is None
def test_read_all_returns_all_photos(session_with_photos):
session, _ = session_with_photos
service = PhotoService(session)
all_photos = service.read_all()
assert isinstance(all_photos, list)
assert len(all_photos) == 2
assert all_photos[0].name == "Foto 1"
assert all_photos[1].name == "Foto 2"
def test_read_all_returns_empty_list_for_empty_db(db_session):
service = PhotoService(db_session)
all_photos = service.read_all()
assert isinstance(all_photos, list)
assert len(all_photos) == 0
def test_check_photo_by_hash_finds_existing_photo(session_with_photos):
session, photos = session_with_photos
service = PhotoService(session)
existing_photo = photos[0]
hash_to_find = existing_photo.photo_hash # "hash1"
diary_id = existing_photo.fk_travel_diary_id # 1
found_photo = service.check_photo_by_hash(hash_to_find, diary_id)
assert found_photo is not None
assert found_photo.id == existing_photo.id
assert found_photo.photo_hash == hash_to_find
def test_check_photo_by_hash_returns_none_when_not_found(session_with_photos):
session, photos = session_with_photos
service = PhotoService(session)
existing_hash = photos[0].photo_hash # "hash1"
existing_diary_id = photos[0].fk_travel_diary_id # 1
result1 = service.check_photo_by_hash("hash_inexistente", existing_diary_id)
assert result1 is None
invalid_diary_id = 999
result2 = service.check_photo_by_hash(existing_hash, invalid_diary_id)
assert result2 is None