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 import create_engine | ||||||
| from sqlalchemy.orm import sessionmaker | from sqlalchemy.orm import sessionmaker | ||||||
| 
 | 
 | ||||||
|  | from pilgrim import Photo | ||||||
| from pilgrim.database import Base | from pilgrim.database import Base | ||||||
| from pilgrim.models.travel_diary import TravelDiary | from pilgrim.models.travel_diary import TravelDiary | ||||||
| 
 | 
 | ||||||
|  | @ -34,3 +35,26 @@ def session_with_one_diary(db_session): | ||||||
|     db_session.commit() |     db_session.commit() | ||||||
|     db_session.refresh(diary) |     db_session.refresh(diary) | ||||||
|     return db_session, 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 |     assert new_photo is None | ||||||
|     mock_copy.assert_not_called() |     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