updates
This commit is contained in:
12 files changed
+3232
-767
No files matched your search
@@ -0,0 +1,116 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script for the complete notification caching flow.
|
||||
This script tests:
|
||||
1. Creating a notification popup with history
|
||||
2. Simulating notifications being received and cached
|
||||
3. Showing the cached notifications in dock history
|
||||
"""
|
||||
|
||||
import sys
|
||||
import json
|
||||
import os
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import GLib, Gtk
|
||||
|
||||
# Add the project path
|
||||
sys.path.append('.')
|
||||
import config.data as data
|
||||
from modules.notification_popup import NotificationHistory, NotificationBox
|
||||
from modules.dock.components.notifications import NotificationHistory as DockNotificationHistory
|
||||
|
||||
def create_test_notification():
|
||||
"""Create a test notification object."""
|
||||
class TestNotification:
|
||||
def __init__(self, summary, body, app_name, app_icon="dialog-information"):
|
||||
self.id = str(uuid.uuid4())
|
||||
self.summary = summary
|
||||
self.body = body
|
||||
self.app_name = app_name
|
||||
self.app_icon = app_icon
|
||||
self.image_pixbuf = None
|
||||
self.actions = []
|
||||
|
||||
def close(self, reason):
|
||||
print(f"Notification {self.id} closed with reason: {reason}")
|
||||
|
||||
return TestNotification(
|
||||
summary="Test Notification",
|
||||
body="This is a test notification to verify caching",
|
||||
app_name="Test App",
|
||||
app_icon="dialog-information"
|
||||
)
|
||||
|
||||
def test_notification_caching_flow():
|
||||
"""Test the complete notification caching flow."""
|
||||
print("Testing complete notification caching flow...")
|
||||
|
||||
# Step 1: Create notification popup history
|
||||
print("\n1. Creating notification popup history...")
|
||||
popup_history = NotificationHistory()
|
||||
print(f" ✅ Popup history created with {len(popup_history.persistent_notifications)} existing notifications")
|
||||
|
||||
# Step 2: Create a test notification and add it to history
|
||||
print("\n2. Creating and caching a test notification...")
|
||||
test_notification = create_test_notification()
|
||||
test_box = NotificationBox(test_notification, timeout_ms=0) # No timeout for testing
|
||||
test_box.set_is_history(True)
|
||||
|
||||
# Add to history (this should cache it to persistent file)
|
||||
popup_history.add_notification(test_box)
|
||||
print(f" ✅ Added notification to popup history")
|
||||
print(f" ✅ Popup history now has {len(popup_history.persistent_notifications)} notifications")
|
||||
|
||||
# Step 3: Create dock notification history and verify it loads the cached notification
|
||||
print("\n3. Creating dock notification history...")
|
||||
dock_history = DockNotificationHistory()
|
||||
print(f" ✅ Dock history created")
|
||||
print(f" ✅ Dock history loaded {len(dock_history.persistent_notifications)} notifications")
|
||||
print(f" ✅ Dock history has {len(dock_history.containers)} display containers")
|
||||
|
||||
# Step 4: Verify the notification data matches
|
||||
if len(dock_history.persistent_notifications) > 0:
|
||||
cached_notif = dock_history.persistent_notifications[-1] # Get the latest
|
||||
print(f"\n4. Verifying cached notification data...")
|
||||
print(f" ✅ Summary: {cached_notif.get('summary')}")
|
||||
print(f" ✅ Body: {cached_notif.get('body')}")
|
||||
print(f" ✅ App: {cached_notif.get('app_name')}")
|
||||
print(f" ✅ Timestamp: {cached_notif.get('timestamp')}")
|
||||
print(f" ✅ Notification successfully cached and loaded!")
|
||||
else:
|
||||
print(f"\n4. ❌ No notifications found in dock history")
|
||||
return False
|
||||
|
||||
# Step 5: Test creating another notification
|
||||
print(f"\n5. Testing multiple notifications...")
|
||||
test_notification2 = create_test_notification()
|
||||
test_notification2.summary = "Second Test Notification"
|
||||
test_notification2.app_name = "Another App"
|
||||
|
||||
test_box2 = NotificationBox(test_notification2, timeout_ms=0)
|
||||
test_box2.set_is_history(True)
|
||||
popup_history.add_notification(test_box2)
|
||||
|
||||
print(f" ✅ Added second notification")
|
||||
print(f" ✅ Popup history now has {len(popup_history.persistent_notifications)} notifications")
|
||||
|
||||
# Reload dock history to see new notification
|
||||
dock_history2 = DockNotificationHistory()
|
||||
print(f" ✅ New dock history loaded {len(dock_history2.persistent_notifications)} notifications")
|
||||
|
||||
print(f"\n🎉 SUCCESS! Notification caching flow is working!")
|
||||
print(f" - Notifications are cached to persistent file")
|
||||
print(f" - Dock history loads cached notifications")
|
||||
print(f" - Multiple notifications are handled correctly")
|
||||
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = test_notification_caching_flow()
|
||||
if success:
|
||||
print(f"\n✅ All tests passed! Notification caching is working correctly.")
|
||||
else:
|
||||
print(f"\n❌ Tests failed! Check the implementation.")
|
||||
Reference in new issue
Block a user