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.database import Database | ||||||
|  | from pilgrim.service.mocks.service_manager_mock import ServiceManagerMock | ||||||
| from pilgrim.service.servicemanager import ServiceManager | from pilgrim.service.servicemanager import ServiceManager | ||||||
|  | from pilgrim.ui.ui import UIApp | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Application: | class Application: | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|         self.database = Database() |         self.database = Database() | ||||||
|  |         self.ui = UIApp(ServiceManagerMock()) | ||||||
| 
 | 
 | ||||||
|     def run(self): |     def run(self): | ||||||
|         self.database.create() |         self.database.create() | ||||||
|  |         self.ui.run() | ||||||
| 
 | 
 | ||||||
|     def get_service_manager(self): |     def get_service_manager(self): | ||||||
|         session = self.database.session() |         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