Files
WeKnora/docreader/client/client_test.go
T
wizardchen 4efc987abb fix(ci): make DocReader client tests runnable in PR checks
Start the DocReader gRPC server in the DocReader workflow, skip client
integration tests when the server is unavailable, exclude docreader
packages from the App workflow test scope, and trigger DocReader checks
on go.mod/go.sum changes.
2026-07-30 14:13:15 +08:00

96 lines
2.2 KiB
Go

package client
import (
"context"
"log"
"os"
"testing"
"time"
"github.com/Tencent/WeKnora/docreader/proto"
)
func init() {
log.SetOutput(os.Stdout)
log.SetFlags(log.LstdFlags | log.Lmicroseconds | log.Lshortfile)
log.Println("INFO: Initializing DocReader client tests")
}
func requireLiveDocReaderClient(t *testing.T) *Client {
t.Helper()
client, err := NewClient("localhost:50051")
if err != nil {
t.Fatalf("Failed to create client: %v", err)
}
t.Cleanup(func() { client.Close() })
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
if _, err := client.ListEngines(ctx, &proto.ListEnginesRequest{}); err != nil {
t.Skipf("DocReader gRPC server not available at localhost:50051: %v", err)
}
return client
}
func TestReadURL(t *testing.T) {
client := requireLiveDocReaderClient(t)
client.SetDebug(true)
startTime := time.Now()
resp, err := client.Read(
context.Background(),
&proto.ReadRequest{
Url: "https://example.com",
Title: "test",
},
)
log.Printf("INFO: Read(URL) completed in %v", time.Since(startTime))
if err != nil {
t.Fatalf("Read failed: %v", err)
}
if resp.Error != "" {
t.Fatalf("Read returned error: %s", resp.Error)
}
if resp.MarkdownContent == "" {
t.Error("Expected non-empty markdown content")
}
log.Printf("INFO: content_len=%d, images=%d", len(resp.MarkdownContent), len(resp.ImageRefs))
}
func TestReadFile(t *testing.T) {
client := requireLiveDocReaderClient(t)
client.SetDebug(true)
fileContent, err := os.ReadFile("../testdata/test.md")
if err != nil {
t.Fatalf("Failed to read test file: %v", err)
}
startTime := time.Now()
resp, err := client.Read(
context.Background(),
&proto.ReadRequest{
FileContent: fileContent,
FileName: "test.md",
FileType: "md",
},
)
log.Printf("INFO: Read(file) completed in %v", time.Since(startTime))
if err != nil {
t.Fatalf("Read failed: %v", err)
}
if resp.Error != "" {
t.Fatalf("Read returned error: %s", resp.Error)
}
if resp.MarkdownContent == "" {
t.Error("Expected non-empty markdown content")
}
imageRefs := GetImageRefsFromResponse(resp)
log.Printf("INFO: content_len=%d, images=%d", len(resp.MarkdownContent), len(imageRefs))
}