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