Module path now matches the GitHub mirror location. All internal imports updated across 35+ files.
66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
package engines
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/metamorphosis-dev/kafka/internal/contracts"
|
|
)
|
|
|
|
func TestArxivEngine_Search(t *testing.T) {
|
|
transport := roundTripperFunc(func(r *http.Request) (*http.Response, error) {
|
|
if r.Method != http.MethodGet {
|
|
return httpResponse(http.StatusMethodNotAllowed, "", ""), nil
|
|
}
|
|
if r.URL.Host != "export.arxiv.org" || r.URL.Path != "/api/query" {
|
|
return httpResponse(http.StatusNotFound, "", ""), nil
|
|
}
|
|
|
|
q := r.URL.Query().Get("search_query")
|
|
if q != "all:quantum" {
|
|
return httpResponse(http.StatusBadRequest, "", ""), nil
|
|
}
|
|
|
|
atom := `<?xml version="1.0" encoding="UTF-8"?>
|
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
|
<entry>
|
|
<title>Quantum Test</title>
|
|
<id>http://arxiv.org/abs/1234.5678</id>
|
|
<summary>Abstract here</summary>
|
|
<published>2024-06-03T00:00:00Z</published>
|
|
</entry>
|
|
</feed>`
|
|
return httpResponse(http.StatusOK, atom, "application/atom+xml"), nil
|
|
})
|
|
|
|
client := &http.Client{Transport: transport}
|
|
engine := &ArxivEngine{client: client}
|
|
|
|
resp, err := engine.Search(context.Background(), contracts.SearchRequest{
|
|
Query: "quantum",
|
|
Pageno: 1,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if len(resp.Results) != 1 {
|
|
t.Fatalf("expected 1 result, got %d", len(resp.Results))
|
|
}
|
|
|
|
r := resp.Results[0]
|
|
if r.Title != "Quantum Test" {
|
|
t.Fatalf("unexpected title: %q", r.Title)
|
|
}
|
|
if r.Content != "Abstract here" {
|
|
t.Fatalf("unexpected content: %q", r.Content)
|
|
}
|
|
if r.URL == nil || !strings.Contains(*r.URL, "1234.5678") {
|
|
t.Fatalf("unexpected url: %v", r.URL)
|
|
}
|
|
if r.Pubdate == nil || !strings.Contains(*r.Pubdate, "2024-06-03") {
|
|
t.Fatalf("expected pubdate around 2024-06-03, got %v", r.Pubdate)
|
|
}
|
|
}
|
|
|