mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-10 00:09:04 +00:00
Add vault sync trigger to GUI
This commit is contained in:
75
src/tests/test_gui_sync.py
Normal file
75
src/tests/test_gui_sync.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import os
|
||||
import types
|
||||
import asyncio
|
||||
import toga
|
||||
import pytest
|
||||
|
||||
from seedpass.core.pubsub import bus
|
||||
from seedpass_gui.app import MainWindow
|
||||
|
||||
|
||||
class DummyEntries:
|
||||
def list_entries(self, sort_by="index", filter_kind=None, include_archived=False):
|
||||
return []
|
||||
|
||||
def search_entries(self, q):
|
||||
return []
|
||||
|
||||
|
||||
class DummyNostr:
|
||||
def __init__(self):
|
||||
self.called = False
|
||||
|
||||
def start_background_vault_sync(self):
|
||||
self.called = True
|
||||
|
||||
def list_relays(self):
|
||||
return []
|
||||
|
||||
|
||||
class DummyController:
|
||||
def __init__(self, loop):
|
||||
self.loop = loop
|
||||
self.lock_window = types.SimpleNamespace(show=lambda: None)
|
||||
self.main_window = None
|
||||
self.vault_service = None
|
||||
self.entry_service = None
|
||||
self.nostr_service = None
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def set_backend():
|
||||
os.environ["TOGA_BACKEND"] = "toga_dummy"
|
||||
asyncio.set_event_loop(asyncio.new_event_loop())
|
||||
|
||||
|
||||
def test_start_vault_sync_schedules_task():
|
||||
toga.App("T", "o")
|
||||
|
||||
tasks = []
|
||||
|
||||
def create_task(coro):
|
||||
tasks.append(coro)
|
||||
|
||||
loop = types.SimpleNamespace(create_task=create_task)
|
||||
ctrl = DummyController(loop)
|
||||
nostr = DummyNostr()
|
||||
win = MainWindow(ctrl, None, DummyEntries(), nostr)
|
||||
|
||||
win.start_vault_sync()
|
||||
assert tasks
|
||||
asyncio.get_event_loop().run_until_complete(tasks[0])
|
||||
assert nostr.called
|
||||
|
||||
|
||||
def test_status_updates_on_bus_events():
|
||||
toga.App("T2", "o2")
|
||||
loop = types.SimpleNamespace(create_task=lambda c: None)
|
||||
ctrl = DummyController(loop)
|
||||
nostr = DummyNostr()
|
||||
win = MainWindow(ctrl, None, DummyEntries(), nostr)
|
||||
|
||||
bus.publish("sync_started")
|
||||
assert win.status.text == "Syncing..."
|
||||
bus.publish("sync_finished")
|
||||
assert "Last sync:" in win.status.text
|
Reference in New Issue
Block a user