See Test
See Test
import (
"encoding/json"
"fmt"
"net/http"
"net/http/httptest"
"strings"
"sync"
"testing"
"time"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
// Test Register
registry.Register(client)
// For debugging
unregisterKey := fmt.Sprintf("%s:%s", client.ChatID, client.URL) // Same as
key
t.Logf("Key used for unregister: %s", unregisterKey)
if event["id"] != "" {
parsedEvent["id"] = event["id"]
}
if event["event"] != "" {
parsedEvent["event_type"] = event["event"]
}
mockID := uuid.New()
mockDB.On("CreateSSEMessageLog", mock.MatchedBy(func(e
map[string]interface{}) bool {
// Simple matching for test purposes
return true
}), "chat-123", "https://example.com/events",
"https://webhook.com").Return(mockID, nil)
}
// Verify expectations
mockDB.AssertExpectations(t)
})
}
}
w.Header().Set("Content-Type", "text/event-stream")
w.WriteHeader(http.StatusOK)
// Force disconnect
hj, ok := w.(http.Hijacker)
if !ok {
t.Fatal("webserver doesn't support hijacking")
}
conn, _, err := hj.Hijack()
if err != nil {
t.Fatal(err)
}
conn.Close()
}))
defer server.Close()
// Start client
client.Start()
// Stop client
client.Stop()
// Verify expectations
mockDB.AssertExpectations(t)
}
// Start client
client.Start()
mockDB := new(MockDatabase)
client1.Start()
client2.Start()
client3.Start()
// Call storeEvent
err := client.storeEvent(tt.eventData)
// Check result
if tt.dbError == nil {
assert.NoError(t, err)
} else {
assert.Error(t, err)
assert.Contains(t, err.Error(), tt.dbError.Error())
}
// Verify expectations
mockDB.AssertExpectations(t)
})
}
}