mirror of https://github.com/gmbrax/Pilgrim.git
Add the tests for the read methods for the photo service
This commit is contained in:
parent
5d0d4fc5ac
commit
32b1c24846
|
|
@ -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]
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue