MCPcopy Create free account
hub / github.com/MiniCodeMonkey/chief / TestWatcherDetectsFileChange

Function TestWatcherDetectsFileChange

internal/prd/watcher_test.go:74–111  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

72}
73
74func TestWatcherDetectsFileChange(t *testing.T) {
75 tmpDir := t.TempDir()
76 prdPath := createTestPRDMd(t, tmpDir, []UserStory{
77 {ID: "US-001", Title: "Test Story", Passes: false},
78 })
79
80 watcher, err := NewWatcher(prdPath)
81 if err != nil {
82 t.Fatalf("Failed to create watcher: %v", err)
83 }
84 defer watcher.Stop()
85
86 if err := watcher.Start(); err != nil {
87 t.Fatalf("Failed to start watcher: %v", err)
88 }
89
90 time.Sleep(100 * time.Millisecond)
91
92 // Modify the file - change passes status
93 if err := SetStoryStatus(prdPath, "US-001", "done"); err != nil {
94 t.Fatalf("Failed to update test PRD: %v", err)
95 }
96
97 select {
98 case event := <-watcher.Events():
99 if event.Error != nil {
100 t.Fatalf("Unexpected error: %v", event.Error)
101 }
102 if event.PRD == nil {
103 t.Fatal("Expected PRD in event")
104 }
105 if !event.PRD.UserStories[0].Passes {
106 t.Error("Expected story to have passes: true")
107 }
108 case <-time.After(2 * time.Second):
109 t.Fatal("Timeout waiting for file change event")
110 }
111}
112
113func TestWatcherDetectsInProgressChange(t *testing.T) {
114 tmpDir := t.TempDir()

Callers

nothing calls this directly

Calls 6

StopMethod · 0.95
StartMethod · 0.95
EventsMethod · 0.95
createTestPRDMdFunction · 0.85
NewWatcherFunction · 0.85
SetStoryStatusFunction · 0.85

Tested by

no test coverage detected