godspeed app sync
This commit is contained in:
95
test_cancelled_tasks.py
Normal file
95
test_cancelled_tasks.py
Normal file
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script for Godspeed cancelled task functionality.
|
||||
"""
|
||||
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def test_cancelled_task_parsing():
|
||||
print("=== Testing Cancelled Task Support ===\n")
|
||||
|
||||
from src.services.godspeed.sync import GodspeedSync
|
||||
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
sync_dir = Path(temp_dir)
|
||||
sync_engine = GodspeedSync(None, sync_dir)
|
||||
|
||||
print("1. Testing task status parsing:")
|
||||
print("-" * 40)
|
||||
|
||||
test_lines = [
|
||||
"- [ ] Incomplete task <!-- id:abc123 -->",
|
||||
"- [x] Completed task <!-- id:def456 -->",
|
||||
"- [X] Also completed <!-- id:ghi789 -->",
|
||||
"- [-] Cancelled task <!-- id:jkl012 -->",
|
||||
]
|
||||
|
||||
for line in test_lines:
|
||||
parsed = sync_engine._parse_task_line(line)
|
||||
if parsed:
|
||||
local_id, status, title, notes = parsed
|
||||
icon = {"incomplete": "⏳", "complete": "✅", "cleared": "❌"}[status]
|
||||
print(f" {icon} {status.upper()}: {title} (ID: {local_id})")
|
||||
else:
|
||||
print(f" ❌ Failed to parse: {line}")
|
||||
|
||||
print("\n2. Testing task formatting:")
|
||||
print("-" * 30)
|
||||
|
||||
tasks = [
|
||||
("task1", "incomplete", "Buy groceries", ""),
|
||||
("task2", "complete", "Call dentist", ""),
|
||||
("task3", "cleared", "Old project", "No longer needed"),
|
||||
]
|
||||
|
||||
for local_id, status, title, notes in tasks:
|
||||
formatted = sync_engine._format_task_line(local_id, status, title, notes)
|
||||
print(f" {formatted}")
|
||||
|
||||
print("\n3. Testing roundtrip with all statuses:")
|
||||
print("-" * 42)
|
||||
|
||||
# Write to file
|
||||
test_file = sync_dir / "test_statuses.md"
|
||||
sync_engine._write_list_file(test_file, tasks)
|
||||
|
||||
# Read back
|
||||
read_tasks = sync_engine._read_list_file(test_file)
|
||||
|
||||
print(f" Original: {len(tasks)} tasks")
|
||||
print(f" Read back: {len(read_tasks)} tasks")
|
||||
|
||||
for original, read_back in zip(tasks, read_tasks):
|
||||
orig_id, orig_status, orig_title, orig_notes = original
|
||||
read_id, read_status, read_title, read_notes = read_back
|
||||
|
||||
if orig_status == read_status and orig_title == read_title:
|
||||
icon = {"incomplete": "⏳", "complete": "✅", "cleared": "❌"}[
|
||||
orig_status
|
||||
]
|
||||
print(f" {icon} {orig_status.upper()}: {orig_title} - ✓ Match")
|
||||
else:
|
||||
print(f" ❌ Mismatch:")
|
||||
print(f" Original: {orig_status}, '{orig_title}'")
|
||||
print(f" Read: {read_status}, '{read_title}'")
|
||||
|
||||
print("\n4. File content generated:")
|
||||
print("-" * 25)
|
||||
with open(test_file, "r") as f:
|
||||
content = f.read()
|
||||
print(content)
|
||||
|
||||
print("5. API update simulation:")
|
||||
print("-" * 27)
|
||||
print("For cancelled task ([-]), would send:")
|
||||
print(" PATCH /tasks/xyz {'is_complete': True, 'is_cleared': True}")
|
||||
print("\nFor completed task ([x]), would send:")
|
||||
print(" PATCH /tasks/abc {'is_complete': True, 'is_cleared': False}")
|
||||
print("\nFor incomplete task ([ ]), would send:")
|
||||
print(" PATCH /tasks/def {'is_complete': False, 'is_cleared': False}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_cancelled_task_parsing()
|
||||
Reference in New Issue
Block a user