mirror of https://github.com/gmbrax/Pilgrim.git
				
				
				
			Added Mocks to help aid the process of creation of the textual TUI
This commit is contained in:
		
							parent
							
								
									103b9a9da1
								
							
						
					
					
						commit
						03fb3b23c2
					
				|  | @ -1,13 +1,17 @@ | |||
| from pilgrim.database import Database | ||||
| from pilgrim.service.mocks.service_manager_mock import ServiceManagerMock | ||||
| from pilgrim.service.servicemanager import ServiceManager | ||||
| from pilgrim.ui.ui import UIApp | ||||
| 
 | ||||
| 
 | ||||
| class Application: | ||||
|     def __init__(self): | ||||
|         self.database = Database() | ||||
|         self.ui = UIApp(ServiceManagerMock()) | ||||
| 
 | ||||
|     def run(self): | ||||
|         self.database.create() | ||||
|         self.ui.run() | ||||
| 
 | ||||
|     def get_service_manager(self): | ||||
|         session = self.database.session() | ||||
|  |  | |||
|  | @ -0,0 +1,47 @@ | |||
| from typing import List | ||||
| from pilgrim.service.entry_service import EntryService | ||||
| from pilgrim.models.entry import Entry | ||||
| 
 | ||||
| 
 | ||||
| class EntryServiceMock(EntryService): | ||||
|     def __init__(self): | ||||
|         super().__init__(None) | ||||
| 
 | ||||
|         self.mock_data = { | ||||
|             1: Entry(title="The Adventure Begins", text="I'm hopping in the Plane to finally visit canadian lands", | ||||
|                      date="26/07/2025", travel_diary_id=1, id=1, | ||||
|                      photos=[]), | ||||
|             2: Entry(title="The Landing", text="Finally on Canadian Soil", date="27/07/2025", | ||||
|                      travel_diary_id=1, id=2,photos=[]), | ||||
|             3: Entry(title="The Mount Royal", text="The Mount Royal is fucking awesome", date="28/07/2025", | ||||
|                      travel_diary_id=1, id=3, photos=[]), | ||||
|         } | ||||
|         self._next_id = 4 | ||||
| 
 | ||||
|     def create(self, travel_diary_id: int, title: str, text: str, date: str) -> Entry: | ||||
|         new_entry = Entry(title, text, date, travel_diary_id, id=self._next_id) | ||||
|         self.mock_data[self._next_id] = new_entry | ||||
|         self._next_id += 1 | ||||
|         return new_entry | ||||
| 
 | ||||
|     def read_by_id(self, entry_id: int) -> Entry | None: | ||||
|         return self.mock_data.get(entry_id) | ||||
| 
 | ||||
|     def read_all(self) -> List[Entry]: | ||||
|         return list(self.mock_data.values()) | ||||
| 
 | ||||
|     def update(self, entry_id: int, entry_dst: Entry) -> Entry | None: | ||||
|         item_to_update = self.mock_data.get(entry_id) | ||||
|         if item_to_update: | ||||
|             item_to_update.title = entry_dst.title if entry_dst.title is not None else item_to_update.title | ||||
|             item_to_update.text = entry_dst.text if entry_dst.text is not None else item_to_update.text | ||||
|             item_to_update.date = entry_dst.date if entry_dst.date is not None else item_to_update.date | ||||
|             item_to_update.fk_travel_diary_id = entry_dst.fk_travel_diary_id if (entry_dst.fk_travel_diary_id | ||||
|                                                                                  is not None) else entry_dst.id | ||||
|             item_to_update.photos.extend(entry_dst.photos) | ||||
| 
 | ||||
|             return item_to_update | ||||
|         return None | ||||
| 
 | ||||
|     def delete(self, entry_id: int) -> Entry | None: | ||||
|         return self.mock_data.pop(entry_id, None) | ||||
|  | @ -0,0 +1,42 @@ | |||
| from pathlib import Path | ||||
| from typing import List | ||||
| 
 | ||||
| from pilgrim.models.photo import Photo | ||||
| from pilgrim.service.photo_service import PhotoService | ||||
| 
 | ||||
| 
 | ||||
| class PhotoServiceMock(PhotoService): | ||||
|     def __init__(self): | ||||
|         super().__init__(None) | ||||
|         self.mock_data = {} | ||||
|         self._next_id = 1 | ||||
| 
 | ||||
|     def create(self, filepath: Path, name: str, travel_diary_id, addition_date=None, caption=None) -> Photo | None: | ||||
|         new_photo = Photo(filepath, name, addition_date=addition_date, caption=caption) | ||||
|         self.mock_data[self._next_id] = new_photo | ||||
|         self._next_id += 1 | ||||
|         return new_photo | ||||
| 
 | ||||
| 
 | ||||
|     def read_by_id(self, photo_id: int) -> Photo: | ||||
|         return self.mock_data.get(photo_id) | ||||
| 
 | ||||
|     def read_all(self) -> List[Photo]: | ||||
|         return list(self.mock_data.values()) | ||||
| 
 | ||||
|     def update(self, photo_id: Photo, photo_dst: Photo) -> Photo | None: | ||||
|         item_to_update:Photo = self.mock_data.get(photo_id) | ||||
|         if item_to_update: | ||||
|             item_to_update.filepath = photo_dst.filepath if photo_dst.filepath else item_to_update.filepath | ||||
|             item_to_update.name = photo_dst.name if photo_dst.name else item_to_update.name | ||||
|             item_to_update.caption = photo_dst.caption if photo_dst.caption else item_to_update.caption | ||||
|             item_to_update.addition_date = photo_dst.addition_date if photo_dst.addition_date\ | ||||
|                 else item_to_update.addition_date | ||||
|             item_to_update.fk_travel_diary_id = photo_dst.fk_travel_diary_id if photo_dst.fk_travel_diary_id \ | ||||
|                 else item_to_update.fk_travel_diary_id | ||||
|             item_to_update.entries.extend(photo_dst.entries) | ||||
|             return item_to_update | ||||
|         return None | ||||
| 
 | ||||
|     def delete(self, photo_id: int) -> Photo | None: | ||||
|         return self.mock_data.pop(photo_id, None) | ||||
|  | @ -0,0 +1,19 @@ | |||
| from pilgrim.service.mocks.entry_service_mock import EntryServiceMock | ||||
| from pilgrim.service.mocks.photo_service_mock import PhotoServiceMock | ||||
| from pilgrim.service.mocks.travel_diary_service_mock import TravelDiaryServiceMock | ||||
| from pilgrim.service.photo_service import PhotoService | ||||
| from pilgrim.service.servicemanager import ServiceManager | ||||
| 
 | ||||
| 
 | ||||
| class ServiceManagerMock(ServiceManager): | ||||
|     def __init__(self): | ||||
|         super().__init__() | ||||
| 
 | ||||
|     def get_entry_service(self): | ||||
|         return EntryServiceMock() | ||||
| 
 | ||||
|     def get_travel_diary_service(self): | ||||
|         return TravelDiaryServiceMock() | ||||
| 
 | ||||
|     def get_photo_service(self): | ||||
|         return PhotoServiceMock() | ||||
|  | @ -0,0 +1,33 @@ | |||
| from pilgrim.service.travel_diary_service import TravelDiaryService | ||||
| from pilgrim.models.travel_diary import TravelDiary | ||||
| 
 | ||||
| 
 | ||||
| class TravelDiaryServiceMock(TravelDiaryService): | ||||
|     def __init__(self): | ||||
|         super().__init__(None) | ||||
|         self.mock_data = { | ||||
|             1:TravelDiary(id=1,name="Montreal") | ||||
|         } | ||||
|         self._next_id = 2 | ||||
| 
 | ||||
|     def create(self, name: str): | ||||
|         new_travel_diary = TravelDiary(id=self._next_id,name=name) | ||||
|         self.mock_data[self._next_id] = new_travel_diary | ||||
|         self._next_id += 1 | ||||
|         return new_travel_diary | ||||
| 
 | ||||
|     def read_by_id(self, travel_id: int): | ||||
|         return self.mock_data[travel_id] | ||||
| 
 | ||||
|     def read_all(self): | ||||
|         return list(self.mock_data.values()) | ||||
| 
 | ||||
|     def update(self, travel_diary_id: int, travel_diary_dst: TravelDiary): | ||||
|         item_to_update = self.mock_data.get(travel_diary_id) | ||||
|         if item_to_update: | ||||
|             item_to_update.name = travel_diary_dst.name if travel_diary_dst.name is not None else item_to_update.name | ||||
|             return item_to_update | ||||
|         return None | ||||
| 
 | ||||
|     def delete(self, travel_diary_id: int): | ||||
|         return self.mock_data.pop(travel_diary_id, None) | ||||
|  | @ -0,0 +1,9 @@ | |||
| from textual.app import App | ||||
| 
 | ||||
| from pilgrim.service.servicemanager import ServiceManager | ||||
| 
 | ||||
| 
 | ||||
| class UIApp(App): | ||||
|     def __init__(self,service_manager: ServiceManager): | ||||
|         super().__init__() | ||||
|         self.service_manager = service_manager | ||||
		Loading…
	
		Reference in New Issue